24、python階層クラスタリングケース(scipy方法)
3321 ワード
目次
1、階層クラスタリングアルゴリズム
2、方法
3、分析手順
4、ケース
1、階層クラスタリングアルゴリズム
階層クラスタリングアルゴリズムはツリークラスタリングアルゴリズムとも呼ばれ、データ間の距離に基づいて階層アーキテクチャ方式を通じてデータを繰り返し集約し、与えられたデータセットを分解する階層を作成します.
2、方法
01クラスタリング方法
linkage=scipy.cluster.hierarchy.linkage(data,method='single')
dataトレーニングサンプル
methodクラス距離の計算式:
1、single l両クラス間の最短距離の点の距離
2、complete 2つのクラス間の最長距離の点の距離
3、centroid 2つのすべての点の中点の距離
02階層クラスタリング図面
scipy.cluster.hierarchy.dendrogram(linkage)linkage階層クラスタリングの結果
03階層クラスタリングの分類方法
scipy.cluster.hierarchy.fcluster(linkage,n,criterion='maxclust')linkage階層クラスタリングの結果nクラスタリングする個数criterion分割方法maxclust,最大分割法
3、分析手順
01各2点距離の2乗計算式、すなわち2点距離の2乗を計算する.
02彼らの間の最近の距離を見つけて合併する
2点の平均値を新しい値として分類
03新しく生成されたこのクラスと各古いクラスとの類似度を再計算する
04胡2と3の手順を繰り返す
4、ケース
1、階層クラスタリングアルゴリズム
2、方法
3、分析手順
4、ケース
1、階層クラスタリングアルゴリズム
階層クラスタリングアルゴリズムはツリークラスタリングアルゴリズムとも呼ばれ、データ間の距離に基づいて階層アーキテクチャ方式を通じてデータを繰り返し集約し、与えられたデータセットを分解する階層を作成します.
2、方法
01クラスタリング方法
linkage=scipy.cluster.hierarchy.linkage(data,method='single')
dataトレーニングサンプル
methodクラス距離の計算式:
1、single l両クラス間の最短距離の点の距離
2、complete 2つのクラス間の最長距離の点の距離
3、centroid 2つのすべての点の中点の距離
02階層クラスタリング図面
scipy.cluster.hierarchy.dendrogram(linkage)linkage階層クラスタリングの結果
03階層クラスタリングの分類方法
scipy.cluster.hierarchy.fcluster(linkage,n,criterion='maxclust')linkage階層クラスタリングの結果nクラスタリングする個数criterion分割方法maxclust,最大分割法
3、分析手順
01各2点距離の2乗計算式、すなわち2点距離の2乗を計算する.
02彼らの間の最近の距離を見つけて合併する
2点の平均値を新しい値として分類
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)) #