我正在使用惊喜来执行交叉验证
def cross_v(data, folds=5):
algorithms = (SVD, KNNBasic, KNNWithMeans, NormalPredictor)
measures = ['RMSE', 'MAE']
for a in algorithms:
data.split(folds);
algo = a();
algo.fit(data)我以这种方式调用函数
data = Dataset.load_builtin('ml-100k')
multiple_cv(data)我得到了这个错误
Traceback (most recent call last):
File "/home/user/PycharmProjects/pac1/prueba.py", line 30, in <module>
multiple_cv(data)
File "/home/user/PycharmProjects/pac1/prueba.py", line 19, in multiple_cv
algo.fit(data)
File "surprise/prediction_algorithms/matrix_factorization.pyx", line 155, in surprise.prediction_algorithms.matrix_factorization.SVD.fit
File "surprise/prediction_algorithms/matrix_factorization.pyx", line 204, in surprise.prediction_algorithms.matrix_factorization.SVD.sgd
AttributeError: 'DatasetAutoFolds' object has no attribute 'global_mean'我错过了什么??
发布于 2018-04-17 11:48:35
As per the docs,则fit方法的输入必须是您尝试使用的训练集,它不同于数据集。您可以使用前面提到的here拆分方法的输出将数据集拆分为训练集(和测试集)。
在您的示例中,
data = Dataset.load_builtin('ml-100k')
trainset = data.build_full_trainset()然后,您可以使用
algo.fit(trainset)这样得到的训练集和测试集可以分别用作拟合函数和测试函数的输入。
https://stackoverflow.com/questions/49263964
复制相似问题