import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
from sklearn.cluster import KMeans
def show_res(data, center, y_predict):
"""
实现结果展示
:param data: 数据
:param center: 类别聚类
:param y_predict: 聚类数据
:return: None
"""
# 创建画布
plt.figure()
index_num = data.shape[0]
color = ['r', 'g', 'b']
colors = []
for i in range(index_num):
colors.append(color[y_predict[i]])
for i in range(index_num):
plt.scatter(data.iloc[i, 0], data.iloc[i, 1],c=colors[i])
# 进行绘制聚类中心
plt.plot(center[:, 0],center[:, 1],'bx', markersize=12)
plt.show()
def desc_sca(data):
"""
小数定标标准化
:param data: 传入数据
:return: 标准化之后的数据
"""
data = data/(10**np.ceil(np.log10(data.abs().max())))
return data
# 加载数据
com = pd.read_csv('company.csv', encoding='gbk')
data = com[['平均每次消费金额', '平均消费周期(天)']]
# 标准化之后的data
data = desc_sca(data)
# 进行k-means算法聚类
# 确定聚类类别数目
k = 3
# 定义一个km对象
# n_clusters --》聚类类别数目
km = KMeans(n_clusters=k)
km.fit(data) # 训练数据
y_predict = km.predict(data) # 进行预测
# 聚类中心
center = km.cluster_centers_
# 结果展示
show_res(data, center, y_predict)
k-means算法模块实现
最新推荐文章于 2024-05-23 22:49:23 发布