基于K-Means聚类、高斯聚类对亚洲球队进行聚类
需求:对18只亚洲球队进行聚类
数据集:包含四个字段(国家,2019国际排名,2018世界杯排名,2015亚洲杯排名)
完整代码:
# coding: utf-8 import pandas as pd # 数据预处理 from sklearn import preprocessing # 引入KMeans聚类算法 from sklearn.cluster import KMeans # 数据加载 data = pd.read_csv('team_cluster_data.csv', encoding='gbk') # 抽取data中的三列数据进行后面的聚类分析 train_x = data[["2019国际排名", "2018世界杯排名", "2015亚洲杯排名"]] # 创建KMeans对象,并且规定聚成3类 kmeans = KMeans(n_clusters=3) # 创建对象,规范化到[0,1]空间(创建了一把尺子) min_max_scaler = preprocessing.MinMaxScaler() # fit学习这个数据(得到一些值),transform应用这个尺子,最后得到一个变化后的结果(在0,1范围内) 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") # 高斯混合聚类(无限逼近曲线) from sklearn.mixture import GaussianMixture # n_components聚类的数量 model = GaussianMixture(n_components=3) model.fit(train_x) # result = model.predict(train_x) predict_y = model.predict(train_x) # 合并聚类结果,插入到原数据中 result = pd.concat((data, pd.DataFrame(predict_y)), axis=1) # inplace=True 原地修改,节省内存 result.rename({0: u'聚类结果'}, axis=1, inplace=True) print(result)
愿有人陪你颠沛流离,如果没有,愿你成为自己的太阳

浙公网安备 33010602011771号