【问题标题】:ImportError: cannot import name 'evaluate' ( from surprise import evaluate )ImportError:无法导入名称“评估”(来自意外导入评估)
【发布时间】:2020-03-25 11:43:33
【问题描述】:
from surprise import Reader, Dataset, SVD
from surprise import evaluate
---------------------------------------------------------------------------
ImportError                               Traceback (most recent call last)
<ipython-input-12-6d771df269b8> in <module>()
----> 1 from surprise import evaluate

ImportError: cannot import name 'evaluate'

第一行,从意外导入 Reader, Dataset, SVD 工作正常。 就是这样,它无法从惊喜包中导入评估。

我已经使用 conda 安装了 scikit-surprise。 我认为它已成功安装。

【问题讨论】:

    标签: python-3.x scikit-learn anaconda recommender-systems


    【解决方案1】:

    从 2020 年 1 月起,请改为执行以下操作...

    from surprise import SVD
    from surprise import Dataset
    from surprise.model_selection import cross_validate
    
    # Load the dataset (download it if needed)
    data = Dataset.load_builtin('ml-100k')
    
    # Use the famous SVD algorithm
    algo = SVD()
    
    # Run 5-fold cross-validation and then print results
    cross_validate(algo, data, measures=['RMSE', 'MAE'], cv=5, verbose=True)
    
    

    【讨论】:

      【解决方案2】:

      根据文档,evaluate() 方法是 deprecated in version 1.0.5(功能上替换为 model_selection.cross_validate())和 removed in version 1.1.0,这可能是您安装的。

      【讨论】:

        【解决方案3】:

        正如@merv 所述,evaluate() 方法在版本 1.0.5 中已弃用。这是一个使用scikit-surprise==1.1.1 测试的工作示例:

        import pandas as pd
        from surprise import SVD, Reader
        from surprise import Dataset
        from surprise.model_selection import cross_validate
        
        reader = Reader()
        csv = pd.read_csv('yourdata.csv')
        
        # Loading local dataset
        data = Dataset.load_from_df(csv, reader)
        
        # Use SVD algorithm or other models
        model = SVD()
        
        # cross-validation with no. of kfold=5 (can be changed per your need)
        cross_validate(model, data, measures=['rmse', 'mae'], cv=5)
        

        训练模型

        data_train = data.build_full_trainset()
        model.fit(data_train)
        

        预测

        model.predict(uid=<e.g. 1>, iid=<e.g. 2>)
        

        您可以阅读documentation了解更多详情。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2020-08-19
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2014-10-10
          • 2014-09-20
          相关资源
          最近更新 更多