Python数据挖掘建模 chapter_3 聚类

来源:互联网 发布:64码高清网络电视官网 编辑:程序博客网 时间:2024/04/28 07:47

1.常用聚类

划分方法K-meas,K-MEDOIDS,CLARNS层次分析法BIRCH,CURE,CHAMELEON基于密度DBSAN,DENCLUE,OPTICS基于网格STING,CLIOUE,WAVE-CLUSTER

2.数据度量:欧几里得算法、曼哈顿距离、闵可夫斯基距离

3.聚类主要算法(sklearn.cluster)

Kmeansk均值聚类AffinityPropagation吸引力传播聚类MeanShift均值飘移聚类SpectralCluster谱聚类AgglomerativeCluster层次聚类DBSCAN有噪声基于密度聚类BIRCH综合层次聚类,大规模聚类

数据举例 data.xls

IdRFM1276232.612351507.113416817.624311232.8151471913.056196220.07752615.8382621059.669219304.82102211227.96...   

#-*- coding: utf-8 -*-#使用K-Means算法聚类消费行为特征数据import pandas as pd#参数初始化inputfile = 'data.xls' #销量及其他属性数据outputfile = 'data_result.xls' #保存结果的文件名k = 3 #聚类的类别iteration = 500 #聚类最大循环次数data = pd.read_excel(inputfile, index_col = 'Id') #读取数据data_zs = 1.0*(data - data.mean())/data.std() #数据标准化from sklearn.cluster import KMeansmodel = KMeans(n_clusters = k, n_jobs = 1, max_iter = iteration) #分为k类,并发数1model.fit(data_zs) #开始聚类#简单打印结果r1 = pd.Series(model.labels_).value_counts() #统计各个类别的数目r2 = pd.DataFrame(model.cluster_centers_) #找出聚类中心r = pd.concat([r2, r1], axis = 1) #横向连接(0是纵向),得到聚类中心对应的类别下的数目r.columns = list(data.columns) + [u'num_clarify'] #类别数目print(r)#详细输出原始数据及其类别r = pd.concat([data, pd.Series(model.labels_, index = data.index)], axis = 1)  #详细输出每个样本对应的类别r.columns = list(data.columns) + [u'cluster_clarify'] #聚类类别r.to_excel(outputfile) def density_plot(data): #作图函数  import matplotlib.pyplot as plt  plt.rcParams['font.sans-serif'] = ['SimHei'] #用来正常显示中文标签  plt.rcParams['axes.unicode_minus'] = False #用来正常显示负号  p = data.plot(kind='kde', linewidth = 2, subplots = True, sharex = False)  [p[i].set_ylabel(u'midu') for i in range(k)]  plt.legend()  return pltpic_output = 'pd_'for i in range(k):  density_plot(data[r[u'cluster_clarify']==i]).savefig(u'%s%s.png' %(pic_output, i))



原创粉丝点击