python3 學習使用api
使用了網上的數據集,我把他下載到了本地
可以到我的git中下載數據集: https://github.com/linyi0604/MachineLearning
代碼:
1 import numpy as np 2 import pandas as pd 3 from sklearn.cluster import KMeans 4 from sklearn import metrics 5 6 ''' 7 k均值算法: 8 1 隨機選擇k個樣本作為k個類別的中心 9 2 從k個樣本出發,選取最近的樣本歸為和自己同一個分類,一直到所有樣本都有分類 10 3 對k個分類重新計算中心樣本 11 4 從k個新中心樣本出發重復23, 12 如果據類結果和上一次一樣,則停止 13 否則重復234 14 15 ''' 16 ''' 17 該數據集源自網上 https://archive.ics.uci.edu/ml/machine-learning-databases/optdigits/ 18 我把他下載到了本地 19 訓練樣本3823條, 測試樣本1797條 20 圖像通過8*8像素矩陣表示共64個維度,1個目標維度表示數字類別 21 ''' 22 23 # 1 准備數據 24 digits_train = pd.read_csv("./data/optdigits/optdigits.tra", header=None) 25 digits_test = pd.read_csv("./data/optdigits/optdigits.tes", header=None) 26 # 從樣本中抽取出64維度像素特征和1維度目標 27 x_train = digits_train[np.arange(64)] 28 y_train = digits_train[64] 29 x_test = digits_test[np.arange(64)] 30 y_test = digits_test[64] 31 32 # 2 建立模型 33 # 初始化kMeans聚類模型 聚類中心數量為10個 34 kmeans = KMeans(n_clusters=10) 35 # 聚類 36 kmeans.fit(x_train) 37 # 逐條判斷每個測試圖像所屬的聚類中心你 38 y_predict = kmeans.predict(x_test) 39 40 41 # 3 模型評估 42 # 使用ARI進行性能評估 當聚類有所屬類別的時候利用ARI進行模型評估 43 print("k均值聚類的ARI值:", metrics.adjusted_rand_score(y_test, y_predict)) 44 ''' 45 k均值聚類的ARI值: 0.6673881543921809 46 ''' 47 # 如果沒有聚類所屬類別,利用輪廓系數進行評估