K-Means的工作原理
选取K个点作为初始的类中心点,这些点一般都是从数据集中随机抽取的;
将每个点分配到最近的类中心点,这样就形成了K个类,然后重新计算每个类的中心点;
重复第二步,直到类不发生变化,或者你也可以设置最大迭代次数,这样即使类中心点发生变化,但是只要达到最大迭代次数就会结束。
项目实战
#-*- coding : utf-8 -*-
# coding: utf-8
import pandas as pd
from sklearn.cluster import KMeans
from sklearn import preprocessing
# 输入数据
data = pd.read_csv('./data.csv')
train_x = data[["2019年国际排名","2018世界杯","2015亚洲杯"]]
df = pd.DataFrame(train_x)
kmeans = KMeans(n_clusters=3)
# 规范化到[0,1]空间
min_max_scaler=preprocessing.MinMaxScaler()
train_x=min_max_scaler.fit_transform(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)