我对来自KNeighborsClassifier
sklearn.neighbors
有点问题
我有一个巨大的电影评级文件,其中每一行代表一个用户,每一列代表一部电影。
我想根据他评价的电影和其他用户的评分,向用户推荐一部电影(他还没看过)。
我尝试过:
model = KNeighborsClassifier(n_neighbors=3)
model.fit(user_rated, others_rated)
suggestList = model.predict_proba(others_unrated)
user_rated是(浮动)评级列表 others_rated是2d列表,具有相同的用户评级的电影评级,但是由不同的用户评分 others_unrated是当前用户尚未观看的其他用户的电影评级的第二列表
我认为问题在于,因为others_rated是2D列表,但如果我将其与其他一个用户(使用others_rated[user_num]
)进行比较,我将无所作为。
使用model.predict_proba(others_unrated)
如果只为一个或多个用户插入Incompatible dimension for X and Y matrices
,我会收到同样的错误。
有什么建议吗?
答案 0 :(得分:1)
我不确定你希望完成什么,但让我推断一些事情。
从这些陈述中,如果没有访问您的数据文件/数组,我猜这是正确的做法:
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_users应该是列维度。这是数学上唯一有意义的事情。调用KNeighborsClassifier.predict_proba(X)
时的列数X必须与上一次调用KNeighborsClassifier.fit(X,y)
中的X列数相同。