[小白系列][K-means聚类模型]球队聚类分析实例代码详解

K-Means工作原理

• Step1, 选取K个点作为初始的类中心点,这些点一般都是从数据集中随机抽取的;
• Step2, 将每个点分配到最近的类中心点,这样就形成了K个类,然后重新计算每个类的中心点;
• 重复Step2,直到类不发生变化,或者你也可以设置最大迭代次数,这样即使类中心点发生变化,但是只要达到最大迭代次数就会结束。

数据规范化的方式:

• Min-max规范化
将原始数据投射到指定的空间[min,max]
新数值 = (原数值-极小值)/ (极大值 - 极小值)
当min=0, max=1时,为[0,1]规范化
sklearn中的MinMaxScaler
• Z-Score规范化
将原始数据转换为正态分布的形式
新数值 = (原数值 - 均值)/ 标准差
sklearn中的preprocessing.scale()
• 小数定标规范化
通过移动小数点的位置来进行规范化
使用numpy
[小白系列][K-means聚类模型]球队聚类分析实例代码详解_第1张图片

# coding: utf-8
from sklearn.cluster import KMeans
from sklearn import preprocessing
import pandas as pd
import numpy as np
# 数据加载
data = pd.read_csv('team_cluster_data.csv', encoding='gbk')
train_x = data[["2019国际排名","2018世界杯排名","2015亚洲杯排名"]]
kmeans = KMeans(n_clusters=3)  # 在这里设置聚为三类
# 规范化到 [0,1] 空间<-----因为要聚类的特征太分散了,在这里采用规范化的方法
min_max_scaler=preprocessing.MinMaxScaler()  # 这里选用的是min_max规范化方法
train_x=min_max_scaler.fit_transform(train_x)  # 喂数据
#print(train_x)
# kmeans 算法
kmeans.fit(train_x)
predict_y = kmeans.predict(train_x)
# 合并聚类结果,插入到原数据中
result = pd.concat((data,pd.DataFrame(predict_y)),axis=1)
result.rename({0:u'聚类结果'},axis=1,inplace=True)
print(result)
# 将结果导出到CSV文件中
#result.to_csv("team_cluster_result.csv")

[小白系列][K-means聚类模型]球队聚类分析实例代码详解_第2张图片

你可能感兴趣的:([小白系列][K-means聚类模型]球队聚类分析实例代码详解)