Python数据分析与挖掘实战学习18

一、Python主要聚类分析算法

Python的聚类相关的算法主要在Scikit-Learn中,Python里面实现的聚类主要包括K-Means聚类、层次聚类、FCM以及神经网络聚类,其主要相关函数如下表所示:

对象名

函数功能

所属工具箱

Kmeans

K均值聚类

sklearn.cluster

 

AffinityPropagation

吸引力传播聚类,2007年提出,几乎优于所有其他方法,不需要指定聚类数,但运行效率较低

 

sklearn.cluster

MeanShift

均值漂移聚类算法

sklearn.cluster

SpectralClustering

谱聚类,具有效果比K均值好,速度比K均值块等特点

sklearn.cluster

AgglomerativeClustering

层次聚类,给出一颗聚类层次树

sklearn.cluster

DBSCAN

具有噪声的基于密度的聚类算法

sklearn.cluster

BIRCH

综合的层次聚类算法,可以处理大规模数据的聚类

sklearn.cluster

这些不同模型的使用方法是大同小异的,基本都是先用对应的函数建立模型,然后用.fit()方法来训练模型,训练好之后,就可以用.label_方法给出样本数据的标签,或者用.predict()方法预测新的输入的标签。

此外,Scipy库也提供了一个聚类子库scipy.cluster,里边提供了一些聚类算法,如层次聚类等,但没有Scikit-Learn那么完美和丰富。Scipy.cluster的好处是它的函数名和功能基本和Python是一一对应的(Scipy致力于让Python称为Python般强大),如层次聚类的linkage、dendrogram等。

TSNE是Laurens van der Maaten和Geoffrey Hintton在2008年提出的,它的定位是高维数据的可视化。通常来说输入的特征数是高维的(大于3维),一般难以直接以原特征对聚类结果进行展示。而TSNE提供了一种有效的数据降维方式,让我们可以在2维或者3维的空间中展示聚类结果。

算法演示:

  1. # @Desc     : TSNE进行数据降维并展示聚类结果  
  2.   
  3. import pandas as pd  
  4.   
  5. 参数初始化  
  6. inputfile = 'data/consumption_data.xls'  销量及其他属性数据  
  7. outputfile = 'tmp/data_type.xls'  保存结果的文件名  
  8. k = 3  聚类的类别  
  9. iteration = 500  聚类最大循环次数  
  10. data = pd.read_excel(inputfile, index_col='Id')  读取数据  
  11. data_zs = 1.0 * (data - data.mean()) / data.std()  数据标准化  
  12.   
  13. from sklearn.cluster import KMeans  
  14.   
  15. model = KMeans(n_clusters=k, max_iter=iteration)  分为k  
  16. model.fit(data_zs)  开始聚类  
  17.   
  18. 简单打印结果  
  19. r1 = pd.Series(model.labels_).value_counts()  统计各个类别的数目  
  20. r2 = pd.DataFrame(model.cluster_centers_)  找出聚类中心  
  21. 横向连接(0是纵向),得到聚类中心对应的类别下的数目  
  22. r = pd.concat([r
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值