Python數(shù)據(jù)可視化之聚類圖實現(xiàn)代碼
clustermap
sns.clustermap是Seaborn庫中用于創(chuàng)建聚類熱圖的函數(shù),該函數(shù)能夠?qū)?shù)據(jù)集中的樣本按照相似性進(jìn)行聚類,并將聚類結(jié)果以矩陣的形式展示出來。
sns.clustermap主要用于繪制聚類熱圖,該熱圖通過顏色深淺來表示數(shù)據(jù)值的大小或類別,從而直觀地展示數(shù)據(jù)間的相似性和差異性。在聚類熱圖中,每個樣本被表示為一個方塊,方塊的顏色表示樣本的特征值,方塊的位置表示樣本的聚類結(jié)果。
使用sns.clustermap需要注意數(shù)據(jù)集的大小和復(fù)雜性,因為聚類分析可能需要較長的計算時間??梢愿鶕?jù)需要對聚類熱圖進(jìn)行進(jìn)一步的自定義,如設(shè)置顏色映射、調(diào)整標(biāo)簽等。sns.clustermap函數(shù)返回的是一個ClusterGrid對象,該對象包含了熱圖和聚類樹等組件,可以通過該對象進(jìn)行進(jìn)一步的自定義和修改。
主要參數(shù)
- data:輸入的數(shù)據(jù)集,可以是Pandas DataFrame或NumPy數(shù)組。
- row_cluster:布爾值,控制是否對行進(jìn)行聚類。默認(rèn)為True。
- col_cluster:布爾值,控制是否對列進(jìn)行聚類。默認(rèn)為True。
- metric:字符串或可調(diào)用對象,指定聚類時使用的距離度量方法。默認(rèn)為'euclidean'。
- method:字符串,指定聚類時使用的算法。默認(rèn)為'average'。
- standard_scale:布爾值或整數(shù),控制是否對數(shù)據(jù)進(jìn)行標(biāo)準(zhǔn)化處理。如果為True,則按行進(jìn)行標(biāo)準(zhǔn)化;如果為整數(shù)n,則按前n個主成分進(jìn)行標(biāo)準(zhǔn)化。默認(rèn)為None,不進(jìn)行標(biāo)準(zhǔn)化處理。
- z_score:整數(shù)或布爾值,控制是否按行列計算z分?jǐn)?shù)進(jìn)行標(biāo)準(zhǔn)化。如果為整數(shù)n,則按前n個主成分進(jìn)行z分?jǐn)?shù)標(biāo)準(zhǔn)化;如果為True,則對整個數(shù)據(jù)集進(jìn)行z分?jǐn)?shù)標(biāo)準(zhǔn)化。默認(rèn)為None,不進(jìn)行z分?jǐn)?shù)標(biāo)準(zhǔn)化處理。
- cmap:字符串或Colormap對象,指定熱圖使用的顏色映射方案。默認(rèn)為Seaborn的默認(rèn)顏色映射方案。
參考實現(xiàn)
使用行和列聚類
# 加載iris數(shù)據(jù)集
iris = sns.load_dataset("iris")
# 將species列從iris數(shù)據(jù)集中彈出,并賦值給species變量
species = iris.pop("species")
# 使用seaborn庫中的clustermap函數(shù),對iris數(shù)據(jù)集進(jìn)行聚類分析
sns.clustermap(iris)
更改圖片的大小和布局:
sns.clustermap(
iris,
figsize=(7, 5),
row_cluster=False,
dendrogram_ratio=(.1, .2),
cbar_pos=(0, .2, .03, .4)
)
為數(shù)據(jù)添加彩色標(biāo)簽
# 創(chuàng)建一個字典,將species中的唯一值映射到"rbg"中的顏色 lut = dict(zip(species.unique(), "rbg")) # 將species中的值映射到lut中的顏色 row_colors = species.map(lut) # 使用seaborn的clustermap函數(shù)繪制聚類圖,并將species的顏色映射到行顏色 sns.clustermap(iris, row_colors=row_colors)

使用不同的顏色映射
# 使用seaborn庫中的clustermap函數(shù)繪制聚類熱圖 # iris為數(shù)據(jù)集,cmap為顏色映射,vmin和vmax為顏色映射的最小值和最大值 sns.clustermap(iris, cmap="mako", vmin=0, vmax=10)
使用不同的聚類參數(shù)
# 使用seaborn庫中的clustermap函數(shù),對iris數(shù)據(jù)集進(jìn)行聚類分析 # metric參數(shù)指定聚類時使用的距離度量方式,這里使用相關(guān)系數(shù) # method參數(shù)指定聚類時使用的聚類方法,這里使用單鏈接法 sns.clustermap(iris, metric="correlation", method="single")

按照標(biāo)準(zhǔn)化的數(shù)據(jù)繪圖
# 使用seaborn庫中的clustermap函數(shù)對iris數(shù)據(jù)集進(jìn)行聚類分析,并將標(biāo)準(zhǔn)化后的數(shù)據(jù)繪制成熱圖 sns.clustermap(iris, standard_scale=1)

以0為均值進(jìn)行規(guī)范化
# 使用seaborn庫中的clustermap函數(shù)繪制聚類熱圖 # iris為數(shù)據(jù)集,z_score為0表示不進(jìn)行標(biāo)準(zhǔn)化,cmap為"vlag"表示使用vlag顏色映射,center為0表示將數(shù)據(jù)集中的數(shù)值中心化 sns.clustermap(iris, z_score=0, cmap="vlag", center=0)

總結(jié)
到此這篇關(guān)于Python數(shù)據(jù)可視化之聚類圖實現(xiàn)的文章就介紹到這了,更多相關(guān)Python數(shù)據(jù)可視化聚類圖內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
使用python連接Linux服務(wù)器發(fā)送指定命令的示例代碼
這篇文章主要介紹了使用python連接Linux服務(wù)器發(fā)送指定命令,首先安裝paramiko庫,使用paramiko庫連接linux,使用paramiko庫上傳下載文件,結(jié)合示例代碼給大家介紹的非常詳細(xì),需要的朋友可以參考下2023-10-10
Python多叉樹的構(gòu)造及取出節(jié)點數(shù)據(jù)(treelib)的方法
今天小編就為大家分享一篇Python多叉樹的構(gòu)造及取出節(jié)點數(shù)據(jù)(treelib)的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2019-08-08
Python利用pathlib進(jìn)行路徑操作的最佳實踐
在Python文件操作中,路徑處理是高頻需求,本文通過實際案例對比,揭示pathlib如何成為現(xiàn)代Python開發(fā)者的首選工具,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以了解下2026-01-01
Python中日志模塊logging的使用技巧和應(yīng)用詳解
在Python開發(fā)中,日志記錄是一個非常重要的環(huán)節(jié),它不僅有助于開發(fā)者追蹤程序的執(zhí)行流程,還能在出現(xiàn)問題時提供關(guān)鍵信息,幫助快速定位并解決問題,本文將結(jié)合實際案例,詳細(xì)介紹logging模塊的基礎(chǔ)用法和高級特性,需要的朋友可以參考下2024-08-08
使用Python實現(xiàn)數(shù)據(jù)庫的風(fēng)險識別
數(shù)據(jù)庫風(fēng)險發(fā)現(xiàn)系統(tǒng)旨在識別和緩解數(shù)據(jù)庫中的潛在風(fēng)險,如SQL注入,未授權(quán)訪問等,下面小編就來為大家詳細(xì)介紹一下如何使用Python實現(xiàn)數(shù)據(jù)庫的風(fēng)險識別吧2025-03-03

