
Python实现Kmeans聚类
# -*- coding: utf-8 -*-
# 使用K-Means算法聚类消费行为特征数据
import pandas as pd
from sklearn.cluster import KMeans
# 参数初始化
inputfile = r'D:\1zhuomian\期末题目\大数据期末数据 参考文件 电子书\consumption_data.xls' # 销量及其他属性数据文件路径
outputfile = r'D:\1zhuomian\期末题目\大数据期末数据 参考文件 电子书\data_type.xlsx' # 保存结果的文件路径
k = 3 # 聚类的类别数量
iteration = 500 # 聚类最大迭代次数
data = pd.read_excel(inputfile, index_col='Id') # 读取数据并以'Id'列为索引
data_zs = 1.0 * (data - data.mean()) / data.std() # 数据标准化处理
# 创建KMeans模型并进行训练
model = KMeans(n_clusters=k, 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) + ['类别数目'] # 重命名表头
print(r)
# 详细输出原始数据及其类别
r = pd.concat([data, pd.Series(model.labels_, index=data.index)], axis=1) # 详细输出每个样本对应的类别
r.columns = list(data.columns