k近邻(KNN)算法与k均值(k-means)聚类算法有何不同?

By 陆勤 at 2019-03-24 • 0人收藏 • 192人看过

1 K近邻是一种用于分类的有监督学习算法;K均值是一种用于聚类的无监督学习算法。

2 通过可视化理解K近邻和K均值的差异。

K近邻算法可视化

KNN.png

K均值算法可视化

kmeans.png


3 KNN是监督学习算法,意味着训练数据集需要有label或者类别,KNN的目标是把没有标签的数据点(样本)自动打上标签或者预测所属类别。Kmeans是无监督学习算法,意味着数据集没有label,它根据无label的数据点和事先设定的超参数K值,它利用无标记的数据点去学习和计算每个点与均值的距离以实现聚类划分。


4 KNN和Kmeans算法的伪代码

KNN的伪代码

KNN的伪代码.png

Kmeans的伪代码

kmeans的伪代码.png


5 KNN和Kmeans代码片段

R语言版本

KNN

library(class) # 加载class包
# 利用knn函数
# 输入参数:
# 1)训练数据集
# 2)训练数据集的label
# 3)超参数K值
# 4)测试数据集
# 输出结果:
# 测试数据集的预测label
prc_test_pred <- knn(train = prc_train, test = prc_test,cl = prc_train_labels, k=10)

Kmeans

#利用R语言自动的kmeans函数
k <- kmeans(data,center=5)


Python语言版本

KNN

#利用scikit-learn里面KNeighborsClassifier函数
from sklean.neighbors import KNeighborsClassifier

knn = KNeighborsClassifier(n_neighbors = 10)
knn.fit(X_train,y_train)
y_pred = knn.predict(X_test)

Kmeans

#利用scikit-learn里面的KMeans函数
from sklean.cluster import KMeans
kmeans = KMeans(n_clusters=5)
kmeans.fit(X)


登录后方可回帖

信息栏
数据人网是数据人学习、交流和分享的平台,专注于从数据中学习,努力发觉数据之洞见,积极利用数据之价值
Loading...