K-means 聚类算法
#!/usr/bin/env python
# -*- coding:utf-8 -*-
import pandas as pd
inputfile='E:\\pycharm\\python数据分析与挖掘实战数据及源码\\chapter5\\demo\\data\\consumption_data.xls'
outputfile='E:\\pycharm\\python数据分析与挖掘实战数据及源码\\chapter5\\demo\\tmp\\data_type1.xls'
k=3
iteration=500
data=pd.read_excel(inputfile,index_col=u'Id')
data_zs=1.0*(data-data.mean())/data.std()#数据标准化
from sklearn.cluster import KMeans
model=KMeans(n_clusters=k,n_jobs=1,max_iter=iteration)#分为k类,并发数为4
model.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'类别数目']
#详细输出原始数据及其类别
r=pd.concat([data,pd.Series(model.labels_,index=data.index)],axis=1)
r.columns=list(data.columns)+[u'聚类类别']
r.to_excel(outputfile)
def density_plot(data):#自定义作图函数
import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif'] = ['SimHei']