1 K近鄰是一種用於分類的有監督學習演演算法;K均值是一種用於聚類的無監督學習演演算法。
2 透過視覺化理解K近鄰和K均值的差異。
K近鄰演演算法視覺化
K均值演演算法視覺化
3 KNN是監督學習演演算法,意味著訓練資料集需要有label或者類別,KNN的標的是把沒有標簽的資料點(樣本)自動打上標簽或者預測所屬類別。Kmeans是無監督學習演演算法,意味著資料集沒有label,它根據無label的資料點和事先設定的超引數K值,它利用無標記的資料點去學習和計算每個點與均值的距離以實現聚類劃分。
4 KNN和Kmeans演演算法的偽程式碼
KNN的偽程式碼
Kmeans的偽程式碼
5 KNN和Kmeans程式碼片段
R語言版本
KNN
1library(class) # 載入class包
2# 利用knn函式
3# 輸入引數:
4# 1)訓練資料集
5# 2)訓練資料集的label
6# 3)超引數K值
7# 4)測試資料集
8# 輸出結果:
9# 測試資料集的預測label
10prc_test_pred 10)
Kmeans
1#利用R語言自動的kmeans函式
2k 5)
Python語言版本
KNN
1#利用scikit-learn裡面KNeighborsClassifier函式
2from sklean.neighbors import KNeighborsClassifier
3
4knn = KNeighborsClassifier(n_neighbors = 10)
5knn.fit(X_train,y_train)
6y_pred = knn.predict(X_test)
Kmeans
1#利用scikit-learn裡面的KMeans函式
2from sklean.cluster import KMeans
3kmeans = KMeans(n_clusters=5)
4kmeans.fit(X)