PythonKNeighborsClassifi

2024-04-24 05:36:45 发布

您现在位置:Python中文网/ 问答频道 /正文

我对来自sklearn.neighborsKNeighborsClassifier有点问题

我有一个巨大的电影分级文件,每一行代表一个用户,每一列代表一部电影。在

我想建议一部电影(他还没有看)给一个用户的基础上,他已经评级的电影和其他用户的评级。在

我试过了:

    model = KNeighborsClassifier(n_neighbors=3)
    model.fit(user_rated, others_rated)
    suggestList = model.predict_proba(others_unrated)

用户评级是(浮动)评级列表 其他人的评级是2d名单与相同的电影评级用户已评级,但由不同的用户 others_unrated是一个2d列表,包含当前用户尚未观看的其他用户的电影分级

我认为问题是,因为其他人的评级是2D list,但如果我只将其与另一个用户(使用others_rated[user_num])进行比较,我将一事无成。 使用model.predict_proba(others_unrated)时,如果只为一个或多个用户插入,Incompatible dimension for X and Y matrices,我会得到相同的错误。在

有什么建议吗?在


Tags: 用户列表model电影neighbors代表ratedpredict
1条回答
网友
1楼 · 发布于 2024-04-24 05:36:45

我不确定你希望完成什么,但让我推断几件事。在

  • 首先,others_rated是一个N_users length list of N unu movies_rated_by_this_user length float列表。在
  • 其次,others_nrated是一个N_user length list of N_users length of N_movies_not_u rated_by_this_user length list of floats.其他未分级的是N_user length list of N_movies_not u rated_by_thi。在

从这些语句中,并且在没有访问数据文件/数组的情况下,我想这是您正在尝试执行的正确操作:

import numpy as np
model = KNeighborsClassifier(n_neighbors=3)
model.fit( np.transpose(others_rated),user_rated)
suggestList = model.predict_proba(np.transpose(others_unrated))

我所做的两个更改如下:首先,我几乎可以确定在调用.fit()时必须交换X和y。如果你不这样做,你的问题是如此糟糕(数学上),它几乎肯定会失败:你试图训练一个模型,从向量预测矩阵(从不太多的信息中预测大量信息)。在

第二,你提出问题的方式,n用户应该是维。这是唯一在数学上有意义的东西。调用KNeighborsClassifier.predict_proba(X)时的列数X必须与上一次调用KNeighborsClassifier.fit(X,y)时X中的列数相同。在

相关问题 更多 >