AttributeError:“DataFrame”对象没有属性“raw_ratings”无法适应KNNBasic模型

2024-06-17 15:24:21 发布

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

我正在尝试创建一个基线模型:具有余弦相似性的KNNBasic(基于用户)。我做了一次列车测试。我将在这里尽可能详细地介绍

评级数据预处理:

sample_clean = sample.drop('Time', axis=1) #dropping time stamp
class MyDataset(dataset.DatasetAutoFolds):
     #this function creates a surprise friendly dataset
     #this function already has folds built into it for cross-validation
     self.raw_sample = [(uid, pid, r, None) for (uid, pid, r) in zip(sample_clean['UserId'], sample_clean['ProductId'], sample_clean['Score'])]
     self.reader = reader

然后我安装了我的阅读器

reader = Reader(line_format = 'user item rating', rating_scale=(0,5))

然后,我将示例数据框解析为一个令人惊讶的友好数据集

surprise_sample = MyDataset(sample_clean, reader)

我检查格式:

type(surprise_sample)

我得到的输出是

_main_.MyDataset

我继续制作一列原始_评级,并从样本_clean中提取:

raw_ratings = sample_clean.Score

接下来,我将执行一个运行良好的序列验证拆分

#test data
test_threshold = int(.85*len(sample_clean)
train_sample = sample_clean[:test_threshold]
test_raw_sample = sample_clean[test_thresholds:]

#列车数据

train_threshold = int(.8*len(train_sample))
validation_raw_sample = train_sample[train_threshold:]
train_raw_sample = train_sample[:train_threshold]

然后,我检查列车测试拆分期间是否没有数据丢失:

len(train_raw_sample) + len(test_raw_sample) + len(validation_raw_sample)
#output is 5000 which is what I wanted

我在下面遇到了问题,我正在构建一个基线模型,它是KNNBasic,具有余弦相似性(基于用户)

#cosine similarity
sim_cos = {'name': 'cosine', 'user_based': True}
#instantiate reader
basic_user = knns.KNNBasic(sim_options = sim_cos)
#fit the model 
simcos_crossval_user = cross_validate(basic_user, sample_clean, measures=['rmse', 'mae'], cv=3, return_train_measure=True, n_jobs=-1, verbose=True)

最后一行代码似乎不起作用,我得到一个输出错误:

AttributeError: 'DataFrame' object has no attribute 'raw_ratings'

请帮我找出我做错了什么。多谢各位


Tags: 数据sampletestcleanrawthresholdlentrain
1条回答
网友
1楼 · 发布于 2024-06-17 15:24:21

您可以尝试另一种方法,将自定义数据帧解析为令人惊讶的友好数据集:

reader = Reader(line_format = 'user item rating', rating_scale=(0,5))

列必须对应于用户id、项目id和评级(按顺序):

data = Dataset.load_from_df(sample_clean [['userId', 'productId', 'Score']], reader)

您可以找到更多详细信息here.

相关问题 更多 >