问题描述
在这个将数据集评估为推荐系统的示例中,我不知道如何编写代码来加载 CSV 文件或 .inter 文件而不是内置数据集:
from surprise import SVD
from surprise import KNNBasic
from surprise import Dataset
from surprise.model_selection import cross_validate
# Load the movielens-100k dataset (download it if needed).
data = Dataset.load_builtin('ml-100k')
# Use the famous SVD algorithm.
algo = KNNBasic()
# Run 5-fold cross-validation and print results.
cross_validate(algo,data,measures=['RMSE','MAE'],cv=5,verbose=True)
我只需要输入数据路径和文件名的完整代码行如何?我已经尝试过 Surprise 的网站,但我什么也没找到。所以我不想要示例中的 movielens 代码,而是加载数据路径和文件的一行。
解决方法
首先你需要创建 Reader()
的实例:
reader = Reader(line_format=u'rating user item',sep=',',rating_scale=(1,6),skip_lines=1)
请注意,line_format
参数只能是 'rating user item'
(可以选择添加 'timestamp'
)并且这些参数与您的 custom_rating.csv
中的列名称无关。这就是定义 skip_lines=1
参数的原因(它跳过通常定义列名的 csv 文件 中的第一行)。
另一方面,line_format
参数确定列的顺序。所以为了清楚起见,我的 custom_ratings.csv
看起来像这样:
评分、用户 ID、电影 ID
4,1,1
6,2
1,3
. . .
. . .
. . .
现在您可以创建您的 data
实例:
data = Dataset.load_from_file("custom_rating.csv",reader=reader)
最后,您可以继续创建 SVD 模型,如 examples 所示:
# sample random trainset and testset
# test set is made of 20% of the ratings.
trainset,testset = train_test_split(data,test_size=.2)
# We'll use the famous SVD algorithm.
algo = SVD()
# Train the algorithm on the trainset,and predict ratings for the testset
algo.fit(trainset)
predictions = algo.test(testset)
# Then compute RMSE
accuracy.rmse(predictions)
PS:并且不要忘记在代码的开头导入库:)
from surprise import SVD
from surprise import Dataset
from surprise import accuracy
from surprise import Reader
from surprise.model_selection import train_test_split