一、代码
在这里插入代码片# 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()
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)
from sklearn.mixture import GaussianMixture
model = GaussianMixture(n_components=3, covariance_type="full")
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)
result.rename({0:u'聚类结果'}, axis=1, inplace=True)
print(result)
二、结果
kmeans:
国家 2019国际排名 2018世界杯排名 2015亚洲杯排名 聚类结果
0 中国 73 40 7 2
1 日本 60 15 5 0
2 韩国 61 19 2 0
3 伊朗 34 18 6 0
4 沙特 67 26 10 0
5 伊拉克 91 40 4 2
6 卡塔尔 101 40 13 1
7 阿联酋 81 40 6 2
8 乌兹别克斯坦 88 40 8 2
9 泰国 122 40 17 1
10 越南 102 50 17 1
11 阿曼 87 50 12 1
12 朝鲜 110 50 14 1
13 印尼 164 50 17 1
14 澳洲 40 30 1 0
15 叙利亚 76 40 17 1
16 约旦 118 50 9 2
17 科威特 160 50 15 1
GMM:
国家 2019国际排名 2018世界杯排名 2015亚洲杯排名 聚类结果
0 中国 73 40 7 1
1 日本 60 15 5 2
2 韩国 61 19 2 2
3 伊朗 34 18 6 2
4 沙特 67 26 10 2
5 伊拉克 91 40 4 1
6 卡塔尔 101 40 13 0
7 阿联酋 81 40 6 1
8 乌兹别克斯坦 88 40 8 1
9 泰国 122 40 17 0
10 越南 102 50 17 0
11 阿曼 87 50 12 0
12 朝鲜 110 50 14 0
13 印尼 164 50 17 0
14 澳洲 40 30 1 1
15 叙利亚 76 40 17 0
16 约旦 118 50 9 0
17 科威特 160 50 15 0