歡迎光臨
每天分享高質量文章

面試|k近鄰(KNN)演算法與k均值(k-means)聚類演算法有何不同?

 

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)

赞(0)

分享創造快樂