python分層聚類集群合并_24、python分層聚類案例(scipy方法)

目錄

1、分層聚類算法

2、方法

3、分析步驟

4、案例

1、分層聚類算法

層次聚類算法又稱為樹聚類算法,它根據數據之間的距離,透過一種層次架構方式,反復將數據

進行聚合,創建一個層次以分解給定的數據集。

2、方法

01 聚類方法

linkage=scipy.cluster.hierarchy.linkage(data,method='single')

data ?訓練樣本

method 類距離的計算公式:

1、single l兩個類之間最短距離的點的距離

2、complete 兩個類之間最長距離的點的距離

3、centroid 兩個所有點的中點的距離

02 層次聚類繪圖

scipy.cluster.hierarchy.dendrogram(linkage)

linkage ? ?層次聚類的結果

03 層次聚類分類方法

scipy.cluster.hierarchy.fcluster(linkage,n,criterion='maxclust')

linkage ? 層次聚類的結果

n ? ? ? ? 要聚類的個數

criterion 劃分方法,使用maxclust,最大劃分法

3、分析步驟

01 計算每兩個點距離的平方

計算公式:也就是兩個點距離的平方。

02 找出他們之間的最近距離進行合并

兩點的均值作為新值,歸為一類

03 重新計算新生成的這個類與各個舊類之間的相似度

04 重復胡2和3的步驟

4、案例

import pandas as pd

import matplotlib.pyplot as plt

data=pd.read_csv('D:\\DATA\\pycase\\7.1\\data.csv')

# 提取關鍵特征 data.columns

fColumns=[ '工作日上班時電話時長', '工作日下半時電話時長', '周末電話時長', '國際電話時長', '總電話時長',

'平均每次通話時長']

# 導入距離計算公式,并且進行訓練數據

import scipy.cluster.hierarchy as hcluster

linkage=hcluster.linkage(

data[fColumns],

method='centroid')

# 查看層次聚類的結果

hcluster.dendrogram(linkage)

# 僅僅查看其中一部分的數據,這里查看12個數據

hcluster.dendrogram(

linkage,

truncate_mode='lastp',

p=12,

leaf_font_size=12.

)

# 進行層次聚類

pTarget=hcluster.fcluster(

linkage,3,

criterion='maxclust')

# 對樣本量進行統計交叉

pd.crosstab(pTarget,pTarget)

# 通過PCA對數據進行降維

from sklearn.decomposition import PCA

pca_2=PCA(n_components=2)

data_pca=pca_2.fit_transform(data[fColumns])

# 轉化為數據框

data_pca_2=pd.DataFrame(data_pca)

# 繪圖

plt.scatter(

data_pca_2[0],

data_pca_2[1],

c=pTarget)

# 繪制每個數據特征的影響和表現

# 3 定義空的數據框

dMean=pd.DataFrame(columns=fColumns+['分類'])

data_gb=data[fColumns].groupby(pTarget)

i=0;

for g in data_gb.groups:

rMean=data_gb.get_group(g).mean()

rMean['分類']=g

dMean=dMean.append(rMean,ignore_index=True)

subData=data_gb.get_group(g)

for column in fColumns:

i=i+1

p=plt.subplot(3,5,i)

p.set_title(column)

p.set_ylabel(str(g)+"分類")

plt.hist(subData[column],bins=20)

# 繪制折線圖data.columns

pTarget=pTarget-1 # 下面繪圖從0開始繪制

r=data[['工作日上班時電話時長', '工作日下半時電話時長', '周末電話時長', '國際電話時長']]

r.index=data.客戶編號

r['聚類類別']=pTarget

plt.rcParams['font.sans-serif']=['SimHei'] #用來正常顯示中文標簽

plt.rcParams['axes.unicode_minus']=False #用來正常顯示負號

#有中文出現的情況,需要u'內容'

style=['ro-','go-','bo-']

fColumns2=[ '工作日上班時電話時長', '工作日下半時電話時長', '周末電話時長', '國際電話時長']

xlabels=fColumns2

# # %matplotlib qt 彈窗

k=3

for i in range(k): #注意作圖、做出不同樣式

plt.figure()

tmp=r[r[u'聚類類別']==i].iloc[:,:4] # 提取每一類

for j in range(len(tmp)):

plt.plot(range(1,5),tmp.iloc[j],style[i])

plt.xticks(range(1,5),xlabels,rotation=20) #坐標標簽

plt.subplots_adjust(bottom=0.15) # 調整底部

plt.savefig(u'%s%s,png'%('D:\\DATA\\pycase\\7.1\\scipy',i)) #保存圖片

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/287827.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/287827.shtml
英文地址,請注明出處:http://en.pswp.cn/news/287827.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

【經典回放】多種語言系列數據結構算法:數組

數組如同前面學過的順序表,一次性申請一片地址連續的存儲空間,我們還知道,計算機中數組是以一維的形式存儲的,因為計算機的內存的一維的。在知道了多維數據的計算機存儲方式后,我們還要知道構造一個多維數據的方法,并構造ADT,具體做法如下所示: 內容和步驟: 1、C語言中…

stl中Priority Queues(優先隊列)的基本用法

博客搬家啦 blog.ma6174.comstl中Priority Queues(優先隊列)的基本用法 C優先隊列類似隊列, 但是在這個數據結構中的元素按照一定的斷言排列有序。 C Priority Queues(優先隊列) empty 語法: bool empty(); empty()函數返回真(true)如果優先隊列為空,否則…

如何用 windbg 導出 C# 中的 string 內容?

咨詢區 driis我在用 windbg 調試一個生產上的 程序卡死 故障 ,在線程棧上有一個 string 類型的參數相當大,我用 !dumpobj 命令不能正常顯示內容,參考如下:0:036> !do 00000001b30d8668 Name: System.String MethodTable: 00000…

《零基礎看得懂的C語言入門教程 》——(四)C語言的基本數據類型及變量

一、學習目標 了解C語言的基本數據類型了解變量的基本概念了解變量的使用方法了解了變量的命名方法了解格式占位符了解變量的輸出 目錄 C語言真的很難嗎?那是你沒看這張圖,化整為零輕松學習C語言。 第一篇:(一)脫離…

android一句話搞定圖片加載

http://square.github.io/picasso/ Picasso.with(context).load("http://i.imgur.com/DvpvklR.png").into(imageView); gradle中添加 compile com.squareup.picasso:picasso:2.5.2 轉載于:https://www.cnblogs.com/rwxwsblog/p/5467874.html

轉HTML+CSS總結/深入理解CSS盒子模型

原文地址:http://www.chinaz.com/design/2010/1229/151993.shtml 前言:前陣子在做一個項目時,在頁面布局方面遇到了一點小問題,于是上stackoverflow上求助。ifaou在幫助我解決我問題的同時,還推薦我閱讀一篇有關CSS盒子…

主成分分析步驟_多元分析(1)--主成分分析

主成分分析主成分分析(PCA)是數據降維的一種常見方法,其它常見的方法還有因子分析(FA),獨立成分分析,在進行大數據處理時,因為數據有很多特征,維數過高,不容易進行處理且…

ArcGIS實驗教程——實驗十九:網絡分析(最短路徑實現)

ArcGIS實驗視頻教程合集:《ArcGIS實驗教程從入門到精通》(附配套實驗數據) 一、實驗描述 網絡分析模塊用于實現基于網絡數據集的網絡分析功能,包括路徑分析、服務區分析、最近設施點分析、OD成本矩陣分析、多路徑配送分析、位置分配分析和高級網絡的管理與創建等。 網絡…

設計模式之策略模式和狀態模式

1 策略模式 我們創建表示各種策略的對象和一個行為隨著策略對象改變而改變的 context 對象。策略對象改變 context 對象的執行算法, 我們可以簡單理解為更加不同的策略對象,執行不同策略方法。 2 類圖 3 代碼實現 1)接口:Strat…

期待已久的Java 9 今日發布

人們期待已久的Java SE 9.0將在2017年9月21日發布,它會帶來一些重要的變化。\\JDK 9的核心變化就是引入了一種新的Java編程組件,也就是模塊,按照Oracle的說法,它是一個可命名的、自描述的代碼和數據集合。模塊技術的核心目標是減少…

AspNetCore7.0源碼解讀之UseMiddleware

前言本文編寫時源碼參考github倉庫主分支。aspnetcore提供了Use方法供開發者自定義中間件,該方法接收一個委托對象,該委托接收一個RequestDelegate對象,并返回一個RequestDelegate對象,方法定義如下:IApplicationBuild…

邊工作邊刷題:70天一遍leetcode: day 11-3

Single Number I/II II的python解是網上抄的,其實可以AC,但是python不會像c/java那樣自動overflow,而是轉化成long。所以如果有負數的情況會得到一個巨大的正數解,比如 Input:[-2,-2,1,1,-3,1,-3,-3,-4,-2] Output:4294967292 Exp…

《零基礎看得懂的C語言入門教程 》——(五)C語言的變量、常量及運算

一、學習目標 了解C語言變量的其它創建方式了解C語言常量了解C語言的運算符 目錄 C語言真的很難嗎?那是你沒看這張圖,化整為零輕松學習C語言。 第一篇:(一)脫離學習誤區 第二篇:(二&#xff…

實戰使用Axure設計App,使用WebStorm開發(4) – 實現頁面UI

系列文章 實戰使用Axure設計App,使用WebStorm開發(1) – 用Axure描述需求 實戰使用Axure設計App,使用WebStorm開發(2) – 創建 Ionic 項目 實戰使用Axure設計App,使用WebStorm開發(3) – 構建頁面架構 實戰使用Axure設計App,使用WebStorm開發(4) – 實現頁面UI 實戰使用Axu…

ArcGIS實驗教程——實驗二十:ArcGIS數字高程模型DEM建立

ArcGIS實驗視頻教程合集:《ArcGIS實驗教程從入門到精通》(附配套實驗數據) 一、實驗描述 本實驗講述DEM的創建方法和過程。DEM的采集方法有四種:地面測量、攝影測量、空間站、地形圖數字化。 二、實驗內容 1、插值法DEM建立 2、創建TIN 3、TIN轉柵格 4、生成等高線 …

思科asa5515端口映射_Cisco ASA端口映射

SQL基礎--同義詞同義詞的概念: 同義詞是Oracle對象的別名,使用同義詞訪問相同的對象 可以為表.視圖.存儲過程.函數或另一同義詞等對象創建同義詞 方便訪問其它用戶的對象,隱藏了對象的身份 縮短對象名字的長度 同義 ...訪問本地json文件因跨域導致的問題我使用jquery的getJSON的…

英文詞頻統計預備,組合數據類型練習

實例: 下載一首英文的歌詞或文章,將所有,.?!等替換為空格,將所有大寫轉換為小寫,統計某幾個單詞出現的次數,分隔出一個一個的單詞。2.列表實例:由字符串創建一個作業評分列表,做增刪…

ArcGIS實驗教程——實驗二十一:DEM分析

ArcGIS實驗視頻教程合集:《ArcGIS實驗教程從入門到精通》(附配套實驗數據) 一、實驗描述 表面分析主要通過生成新數據集,如等值線、坡度、坡向、山體陰影等派生數據,獲取更多的反應原始數據集中所暗含的空間特征、空間格局等信息。 二、實驗內容 1、地形因子計算 2、填…

《零基礎看得懂的C語言入門教程 》——(六)輕輕松松了解C語言的邏輯運算

一、學習目標 了解邏輯判斷的概念了解if語句的使用方法了解switch語句的使用方法了解邏輯運算符的使用方法 目錄 C語言真的很難嗎?那是你沒看這張圖,化整為零輕松學習C語言。 第一篇:(一)脫離學習誤區 第二篇&#…

.NET 6 在 Win7 系統證書鏈錯誤導致 HttpWebRequest 內存泄露

本文記錄我將應用遷移到 dotnet 6 之后,在 Win7 系統上,因為使用 HttpWebRequest 訪問一個本地服務,此本地服務開啟 https 且證書鏈在此 Win7 系統上錯誤,導致應用內存泄露問題。本文記錄此問題的原因以及調查過程核心原因核心原因…