python 样本聚类

导入需要的包

import pandas as pd
import numpy as np
from pandas import DataFrame,Series
from sklearn.cluster import KMeans
from sklearn.cluster import Birch

设置文件导入导出位置

datafile = u'E:\\grade3作业\\多元实践\\newjiudiandata1.csv'#文件所在位置,u为防止路径中有中文名称,此处没有,可以省略
outfile = u'E:\\grade3作业\\多元实践\\julei_out.csv'#设置输出文件的位置
data = pd.read_csv(datafile)#datafile是excel文件,所以用read_excel,如果是csv文件则用read_csv
d = DataFrame(data)

进行样本分类

mod = KMeans(n_clusters=3, n_jobs = 4, max_iter = 500)#聚成4类数据,并发数为4,最大循环次数为500
mod.fit_predict(d)#y_pred表示聚类的结果
#聚成4类数据,统计每个聚类下的数据量,并且求出他们的中心
r1 = pd.Series(mod.labels_).value_counts()
r2 = pd.DataFrame(mod.cluster_centers_)
r = pd.concat([r2, r1], axis = 1)
r.columns = list(d.columns) + [u'类别数目']
#给每一条数据标注上被分为哪一类
r = pd.concat([d, pd.Series(mod.labels_, index = d.index)], axis = 1)
r.columns = list(d.columns) + [u'聚类类别']
print(r.head())
r.to_csv(outfile,sep=',',encoding='utf_8_sig',index=False, header=True)

可视化部分

from sklearn.manifold import TSNE
ts = TSNE()
ts.fit_transform(r)
ts = pd.DataFrame(ts.embedding_, index = r.index)
import matplotlib.pyplot as plt 
a = ts[r[u'聚类类别'] == 0]
plt.plot(a[0], a[1], '2',color='#f3a43b',label="0")
a = ts[r[u'聚类类别'] == 1]
plt.plot(a[0], a[1], '1',color='#60c0dd', label="1")
a = ts[r[u'聚类类别'] == 2]
plt.plot(a[0], a[1], '*',color='#9bca63', label="2")
#a = ts[r[u'聚类类别'] == 3]
#plt.plot(a[0], a[1], '+',color='#fe8463', label="3")
#a = ts[r[u'聚类类别'] == 4]
#plt.plot(a[0], a[1], '3',color='red', label="4")
plt.legend(); #加图例
plt.show()
发布了20 篇原创文章 · 获赞 3 · 访问量 3528

猜你喜欢

转载自blog.csdn.net/qq_41858657/article/details/103785664