數據來源是簡單整理的2015-2019亞洲球隊的排名,如下圖所示。通過K-Means做簡單聚類分析。
1、數據加載
import numpy as np
import pandas as pd
data = pd.read_csv(r'C:\Users\hzjy\Desktop\data.csv',encoding='gbk')
train_x = data[['2019年國際排名','2018世界盃','2015亞洲盃']]
df = pd.DataFrame(train_x)
2、聚類一般要做數據標準化處理,採用Min-max 規範化
from sklearn import preprocessing
min_max_scaler = preprocessing.MinMaxScaler()
train_x = min_max_scaler.fit_transform(train_x)
3、K-Means聚類
from sklearn.cluster import KMeans
kmeans = KMeans(n_clusters=5)
kmeans.fit(train_x)
predict_y = kmeans.predict(train_x)
4、合併聚類結果 插入到原數據中
result = pd.concat((data,pd.DataFrame(predict_y)),axis = 1)
result.rename({0:'聚類'},axis = 1,inplace = True)
result
這裏解釋下2個問題:
1)之所以用pd.DataFrame(predict_y) 是因爲pd.concat() 是根據軸作合併的,而predict_y是array數組類型,data是DataFrame類型,需要將predict_y的類型進行轉換
2)result.rename({0:'聚類'},axis = 1,inplace = True) 用 0:'聚類' 是因爲沒重名之前聚類結果這一列列名爲“0”,需要rename替換下。