You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Surprise库计算RMSE时出现'DataFrame'无global_mean属性错误

错误产生原因
  • Surprise库的fit()方法不支持直接传入Pandas DataFrame类型的训练数据,仅支持接收Surprise自定义的Trainset类实例。你直接读取CSV得到的DataFrame对象没有内置global_mean等Surprise算法要求的属性,因此触发属性缺失报错。
解决方法

你需要先将Pandas格式的训练、测试数据集转换为Surprise可识别的格式,具体修改后的代码如下:

import pandas as pd
from surprise import SVD, accuracy
from surprise import Dataset
from surprise.reader import Reader

# 读取原始CSV文件
trainset_df = pd.read_csv('drive/MyDrive/trainrating.csv')
testset_df = pd.read_csv('drive/MyDrive/testrating.csv')

# 定义Reader,rating_scale参数填你实际使用的评分上下限,示例为1到5分
reader = Reader(rating_scale=(1, 5))

# 将训练集DataFrame转换为Surprise Dataset格式,替换中括号内为你实际的用户ID、物品ID、评分对应的列名
train_dataset = Dataset.load_from_df(trainset_df[['user_id', 'item_id', 'rating']], reader)
# 构建Surprise要求的Trainset实例
trainset = train_dataset.build_full_trainset()

# 将测试集转换为Surprise test方法要求的格式:元素为(用户ID, 物品ID, 真实评分)的元组列表
testset = list(testset_df[['user_id', 'item_id', 'rating']].itertuples(index=False, name=None))

# 原有训练、评估代码可正常运行
algo = SVD(n_factors=factors, n_epochs=epochs, lr_all=lr_value, reg_all=reg_value)
predictions = algo.fit(trainset).test(testset)
accuracy.rmse(predictions)

内容的提问来源于stack exchange,提问作者mimi acrs

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.05 08:18:03