【python】调用sklearn使用k-means模型

本文介绍了一种使用K-means算法进行数据聚类的方法,并通过PCA技术将数据特征维度降至2维,便于可视化展示。文章详细展示了从数据预处理、聚类分析到结果可视化及预测的全过程。
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')

 

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值