【问题标题】:DatasetAutoFolds' object has no attribute 'global_mean' on python surpriseDatasetAutoFolds 对象在 python 上没有属性“global_mean”
【发布时间】:2018-03-13 19:00:40
【问题描述】:

我正在使用惊喜来执行交叉验证

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'

我错过了什么??

【问题讨论】:

    标签: python recommender-systems


    【解决方案1】:

    As per the docs,fit 方法的输入必须是一个训练集,它不同于您尝试使用的数据集。您可以使用here 中提到的拆分方法的输出将数据集拆分为训练集(和测试集)。

    在你的例子中,

    data = Dataset.load_builtin('ml-100k')
    trainset = data.build_full_trainset()
    

    然后,你可以使用

    algo.fit(trainset)
    

    这样得到的 Trainset 和 Testset 可以分别作为 fit 和 test 函数的输入。

    【讨论】:

      猜你喜欢
      • 2021-11-01
      • 2020-09-14
      • 1970-01-01
      • 1970-01-01
      • 2010-10-05
      • 2014-05-14
      • 1970-01-01
      • 2012-10-04
      • 2021-08-20
      相关资源
      最近更新 更多