通过聚类算法将每列数据单独训练找出对应的簇中心和每个实例对应的分类。
利用实例分类得出每个类别分的实例。本文中使用两个簇中心的均值得出边界值。
将所有边界统一到一起,然后在利用其对病患数据集进行修改,将其离散值修改为对应的分类。
import pandas as pd
from sklearn.cluster import KMeans#倒入k均值算法
data=pd.read_excel('../data/data.xls')
k=4#聚类算法分类数
print(data.columns)
m='A'
result=pd.DataFrame()
for i in data.columns[:6]:
print(u'正在进行"%s"的聚类'%i)
kmodel=KMeans(n_clusters=k)
kmodel.fit(data[[i]])
r1=pd.DataFrame(kmodel.cluster_centers_,columns=[i])#输出聚类算法中心列表
print(r1.head())
r2=pd.Series(kmodel.labels_).value_counts()#分类统计
print(r2)
r2=pd.DataFrame(r2,columns=[i+'n'])#各个分类对应的数据数目
print(r2)
r=pd.concat([r1,r2],axis=1).sort_values(axis=0,ascending=True,by=i)#联合并且按列排序
print(r)
r.index=[1,2,3,4]#将index置换
r[i]=r[i].rolling(2).mean()#将两个簇类中心求均值,得到边界,便于后面数据的分类。
print('出')
print(r.T)
result=result.append(r.T)#利用T转换行列,如此所有的r有了共同的columns,可以通过append,
print(len(result))
result=result.sort_index()#利用index
print(result,len(result))