如何在 SciKit-Learn Python 的 KNN 模型中识别每个集群内的记录?

How can I identify the records inside each cluster in a KNN model in SciKit-Learn Python?

我正在制作一个 KNN 模型。目标变量分为2类,特征是3个分类变量(国家、语言和公司)。模型说最优是 5 个簇,所以我用 5 个簇来做。

我需要知道如何查看 5 个集群中每个集群中的记录(我的意思是,模型在每个集群中分组的国家、语言和公司)。有没有办法将集群的标签添加到数据框?

我试过: 预测 = knn.predict(特征)

但这只是返回目标变量的 2 个标签的估计值

我做了一些研究,发现: km.labels_

但这只适用于 KMeans,而我使用的是 KNN

我希望有人能告诉我这方面的等价物或如何解决 KNN 模型的问题

是的,总是可以匹配回来的。

predictions = knn.predict(features)

y_test['preds'] = predictions

df_out = pd.merge(df,y_test[['preds']],how = 'left',left_index = True, right_index = True)

如果您的数据框名为 df,这应该可以。

KNN不是聚类,而是分类

参数k不是k-means的k;它是邻居的数量而不是集群的数量...

因此,将k设置为5 dors不会突然产生5个标签。您的训练数据有 2 个标签,因此您得到 2 个标签。

KNN = k-最近邻分类。对于 k=5 这意味着 5 个最近的邻居。

K 均值聚类 = 用 k 个中心向量近似数据。完全不同的 k.