聚类分析案例及结果解释(还在用SPSS做聚类分析?1个小案例教会你用Python做聚类分析)

下表是同一批客户对经常光顾的五座商厦在购物环境和服务质量两方面的平均评分。现希望根据这批数据将五座商厦分类。

聚类分析案例

说明:数据源就只有5行,大家练习的时候,可以直接手动输入这些数据到Excel中。

以下内容分3部分:

1、数据源读取

2、系统聚类法(层次聚类法)

3、K-Mean聚类法

Python中的scikit-learn库和scipy库都有聚类分析算法的实现,下面将分别演示。

数据源读取

import pandas as pd cdata=pd.read_excel('../data/clusterdata.xlsx',sheet_name='data1',index_col='编号') cdata.head() 系统聚类法(层次聚类法)

1、实现系统聚类法的第一种方式:scipy

说明:使用前需要安装,安装命令:pip install scipy

from scipy.cluster.hierarchy import linkage,dendrogram,cut_tree hcluster=linkage(cdata,method='single',metric='euclidean') hcluster

说明:以上结果反映了聚类分析的过程,SPSS中有类似的结果。

#绘制聚类图谱 hdiagram=dendrogram(hcluster)

clabels=cut_tree(hcluster,n_clusters=3) #假设分3个类别 clabels

cdata_rst=pd.concat([cdata,Series(clabels.T[0],index=cdata.index)],axis=1) cdata_rst

cdata_rst.columns=['购物环境','服务质量','类别'] #cdata_rst.columns=list(cdata.columns)+['类别'] cdata_rst

结论:从上面可以看出,将这5座商厦分成3类,A、B属于一个类别,C属于一个类别,D、E属于一个类别。

2、实现系统聚类法的第二种方式:sklearn

说明:使用前需要安装,安装命令:pip install scikit-learn

from sklearn.cluster import AgglomerativeClustering amodel=AgglomerativeClustering(n_clusters=3,affinity='euclidean',linkage='ward') amodel.fit(cdata)

#获取类别标签 amodel.labels_

接着就是把标签赋回原记录,跟上面一样。

K-Means聚类法

1、实现K-Means聚类法第一种方式:scipy

#scipy from scipy.cluster.vq import KMeans2 zcdata=(cdata-cdata.mean())/cdata.std() kmodel=kmeans2(zcdata,k=3,iter=10,minit="points") kmodel[1]

2、实现K-Means聚类法第一种方式:sklearn

from sklearn.cluster import KMeans kmodel=KMeans(n_clusters=3,n_jobs=4,max_iter=10) kmodel.fit(cdata)

#获取样本的类别标签 kmodel.labels_

#将类别标签赋回原记录 cdata_rst1=pd.concat([cdata,Series(kmodel.labels_,index=cdata.index)],axis=1) cdata_rst1.columns=list(cdata.columns)+['类别'] cdata_rst1

总结:

1、从上面可以看出,将这5座商厦分成3类,A、B属于一个类别,C属于一个类别,D、E属于一个类别,两种聚类分析方法的结论大体都是一致的。

2、在Python中,有两个库都可以实现聚类分析:scikit-learn和scipy。

3、对于系统聚类法,scikit-learn库无法直接聚类图谱,所以这里通过scipy来绘制聚类图谱。

感谢观看,喜欢的朋友,关注走一波,后续内容更精彩!

您可以还会对下面的文章感兴趣

最新评论

  1. 夏夜咏叹调
    夏夜咏叹调
    发布于:2022-04-27 09:56:35 回复TA
    luster import AgglomerativeClusteringamodel=AgglomerativeClustering(n_clusters=3,affinity='euclidean',
  1. 拂袖清风
    拂袖清风
    发布于:2022-04-27 06:36:26 回复TA
    _clusters=3,n_jobs=4,max_iter=10)kmodel.fit(cdata)#获取样本的类别标签kmodel.labels_#将类别标签赋回原记录cdata_rst1=pd.concat([cdata,Series(km
  1. 薛之昌眉
    薛之昌眉
    发布于:2022-04-27 02:52:02 回复TA
    男人活着全靠健忘,女人活着全靠牢记。

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

使用微信扫描二维码后

点击右上角发送给好友