Python KNeighborsClassifier
Python KNeighborsClassifier
我在 KNeighborsClassifier
来自 sklearn.neighbors
时遇到一点问题
我有一个巨大的电影评分文件,其中每一行代表一个用户,每一列代表一部电影。
我想根据他评价的电影和其他用户的评价向他推荐一部电影(他还没有看过)。
我试过:
model = KNeighborsClassifier(n_neighbors=3)
model.fit(user_rated, others_rated)
suggestList = model.predict_proba(others_unrated)
user_rated 是(浮动)评级列表
others_rated 是二维列表,具有用户已评分的相同电影评分,但被不同的用户评分
others_unrated 是二维列表,其中包含当前用户尚未观看的其他用户对电影的评分
我认为问题在于,因为 others_rated 是二维列表,但如果我只将它与其他用户(使用 others_rated[user_num]
)进行比较,我将一事无成。
使用 model.predict_proba(others_unrated)
如果仅为一个或多个用户插入,我会得到同样的错误,Incompatible dimension for X and Y matrices
。
有什么建议吗?
我不确定你希望完成什么,但让我推断一些事情。
- 首先,others_rated 是 N_users 长度的浮点数列表 N_movies_rated_by_this_user 长度列表。
- 其次,others_unrated 是 N_users 长度的浮点数列表 N_movies_not_rated_by_this_user 长度列表。
根据这些陈述,在无法访问您的数据的情况下 files/arrays,我猜这对您尝试做的事情来说是正确的:
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中的列数相同
我在 KNeighborsClassifier
来自 sklearn.neighbors
我有一个巨大的电影评分文件,其中每一行代表一个用户,每一列代表一部电影。
我想根据他评价的电影和其他用户的评价向他推荐一部电影(他还没有看过)。
我试过:
model = KNeighborsClassifier(n_neighbors=3)
model.fit(user_rated, others_rated)
suggestList = model.predict_proba(others_unrated)
user_rated 是(浮动)评级列表 others_rated 是二维列表,具有用户已评分的相同电影评分,但被不同的用户评分 others_unrated 是二维列表,其中包含当前用户尚未观看的其他用户对电影的评分
我认为问题在于,因为 others_rated 是二维列表,但如果我只将它与其他用户(使用 others_rated[user_num]
)进行比较,我将一事无成。
使用 model.predict_proba(others_unrated)
如果仅为一个或多个用户插入,我会得到同样的错误,Incompatible dimension for X and Y matrices
。
有什么建议吗?
我不确定你希望完成什么,但让我推断一些事情。
- 首先,others_rated 是 N_users 长度的浮点数列表 N_movies_rated_by_this_user 长度列表。
- 其次,others_unrated 是 N_users 长度的浮点数列表 N_movies_not_rated_by_this_user 长度列表。
根据这些陈述,在无法访问您的数据的情况下 files/arrays,我猜这对您尝试做的事情来说是正确的:
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)
.