如何解释基于兴趣匹配人群的knn sklearn输出

我对机器学习还比较新手。我试图根据兴趣评分(1=低,10=高)将SetA中的人与SetB中的人进行匹配。我的实际数据集有40个特征(后来我想对某些特征以及不太常见的兴趣设置更高的权重,我相信这个会对我有帮助?)。

示例数据集:

>>> dfA = pd.DataFrame(np.array([[1, 1, 1], [4, 4, 4], [8, 8, 8]]),                   columns=['interest1', 'interest2', 'interest3'],                  index=['personA1','personA2','personA3'])>>> dfB = pd.DataFrame(np.array([[4, 4, 3], [2, 2, 1], [1, 2, 2]]),                   columns=['interest1', 'interest2', 'interest3'],                  index=['personB1','personB2','personB3'])print(dfA, "\n", dfB)>>>           interest1  interest2  interest3personA1          1          1          1personA2          4          4          4personA3          8          8          8           interest1  interest2  interest3personB1          4          4          3personB2          2          2          1personB3          1          2          2

我使用sklearn的最近邻算法来做这件事:

knn = NearestNeighbors(n_neighbors = 2).fit(dfA)distances, indicies = knn.kneighbors(dfB)>>> print(distances, "\n \n", indicies)>>>[[1.         4.69041576] [1.41421356 4.12310563] [1.41421356 4.12310563]]  [[1 0] [0 1] [0 1]]

我无法理解这个输出?我知道有一个类似问题的解释,但是我不知道如何将其应用到这种情况,因为有两个不同的数据集。

最终,我想要一个匹配的最终数据框,如下所示:

SetA             SetBpersonA1        personB2personA2        personB1personA3        personB3

回答:

你得到的结果是SetB中给定人的最近邻居,从SetA中的人中选出
换句话说,第一个元素distances[0]告诉你personB1与其在SetA中的两个最近邻居的距离。indicies[0]告诉你这两个人的索引。

在这个例子中:
indicies[0] = [1, 0]意味着personB1在SetA中的最近邻居是SetA[1] = personA2和SetA[0] = personA1。
distances[0] = [1. 4.69041576]告诉我们personB1和personA2之间的距离是1,而personB1和personA1之间的距离是4.69041576(你可以手动计算欧几里得距离来验证这一点)。

几点说明:

  • 从你的问题描述来看,你似乎只对SetB中的人在SetA中找到最近邻居感兴趣(而不是两个最近邻居)。如果是这样的话,我建议将knn参数中的n_neighbors=2改为n_neighbors=1。

  • 注意你的索引:在你的数据集中,标签是从1开始的(personA1, personA2, …),但是在knn中,索引总是从0开始。当事情变得更复杂时,这可能会导致混淆,因为SetA[0]=personA1,所以要注意这一点。

Related Posts

使用LSTM在Python中预测未来值

这段代码可以预测指定股票的当前日期之前的值,但不能预测…

如何在gensim的word2vec模型中查找双词组的相似性

我有一个word2vec模型,假设我使用的是googl…

dask_xgboost.predict 可以工作但无法显示 – 数据必须是一维的

我试图使用 XGBoost 创建模型。 看起来我成功地…

ML Tuning – Cross Validation in Spark

我在https://spark.apache.org/…

如何在React JS中使用fetch从REST API获取预测

我正在开发一个应用程序,其中Flask REST AP…

如何分析ML.NET中多类分类预测得分数组?

我在ML.NET中创建了一个多类分类项目。该项目可以对…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注