调用sklearn使用k-means模型
其他
2020-01-13 10:23:19
阅读次数: 0
from sklearn.cluster import KMeans from sklearn.decomposition import PCA import pandas as pd import numpy as np import matplotlib as mpl #iOS系统 mpl.use('TkAgg') import matplotlib.pyplot as plt from sklearn.preprocessing import Imputer # 导入sklearn.preprocessing中的Imputer库
#聚类数据 df=pd.read_csv('overdue (5).csv', header=None,encoding='utf-8',sep='\t')
#去掉第一列(index) df2 = df.drop(df.columns[0], axis=1)
#归一化处理 #df3=(df2 - df2.min()) / (df2.max() - df2.min()) df1 = df2.fillna(df2.mean()) # 用平均数代替,选择各自列的均值替换缺失值
#K-means聚类 kmeans = KMeans(n_clusters=5, random_state=10).fit(df1) df1['jllable']=kmeans.labels_ df_count_type=df1.groupby('jllable').apply(np.size)
##各个类别的数目 print(df_count_type) ##聚类中心 print(kmeans.cluster_centers_) ##新的dataframe,命名为new_df ,并输出到本地,命名为new_df.csv。 new_df=df1[:] new_df new_df.to_csv('new_df.csv')
##将用于聚类的数据的特征的维度降至2维,并输出降维后的数据,形成一个dataframe名字new_pca pca = PCA(n_components=2) new_pca = pd.DataFrame(pca.fit_transform(new_df))
##可视化 d = new_pca[new_df['jllable'] == 0] plt.plot(d[0], d[1], 'r.') d = new_pca[new_df['jllable'] == 1] plt.plot(d[0], d[1], 'go') d = new_pca[new_df['jllable'] == 2] plt.plot(d[0], d[1], 'b*') plt.gcf().savefig('kmeans.png') plt.show()
#以下为预测 df_y=pd.read_csv('overdue (6).csv', header=None,encoding='utf-8',sep='\t')
#处理数据的方式与上面相同 #去掉第一列(index列) df2_y = df_y.drop(df_y.columns[0], axis=1) #处理空值 df1_y = df2_y.fillna(df2_y.mean()) df1_y = df1_y.fillna(1) #预测 df_y['ls'] = kmeans.predict(df1_y) # 预测聚类模型 new_df_y=df_y[:] #输出 new_df_y.to_csv('new_df_y.csv') |
|
发布了458 篇原创文章 ·
获赞 2 ·
访问量 10万+
转载自blog.csdn.net/u010395024/article/details/103851269