【问题标题】:AttributeError: 'str' object has no attribute 'parameters' due to new version of sklearnAttributeError:由于 sklearn 的新版本,“str”对象没有属性“parameters”
【发布时间】:2020-04-17 02:44:43
【问题描述】:

我正在使用 sklearn 进行主题建模。在尝试从网格搜索输出中获取对数似然时,我收到以下错误:

AttributeError: 'str' 对象没有属性 'parameters'

我想我理解的问题是:旧版本中使用了“参数”,而我使用的是 sklearn 的新版本 (0.22),这会出错。我还搜索了新版本中使用但找不到的术语。下面是代码:

# Get Log Likelyhoods from Grid Search Output
n_components = [10, 15, 20, 25, 30]
log_likelyhoods_5 = [round(gscore.mean_validation_score) for gscore in model.cv_results_ if gscore.parameters['learning_decay']==0.5]
log_likelyhoods_7 = [round(gscore.mean_validation_score) for gscore in model.cv_results_ if gscore.parameters['learning_decay']==0.7]
log_likelyhoods_9 = [round(gscore.mean_validation_score) for gscore in model.cv_results_ if gscore.parameters['learning_decay']==0.9]

# Show graph
plt.figure(figsize=(12, 8))
plt.plot(n_components, log_likelyhoods_5, label='0.5')
plt.plot(n_components, log_likelyhoods_7, label='0.7')
plt.plot(n_components, log_likelyhoods_9, label='0.9')
plt.title("Choosing Optimal LDA Model")
plt.xlabel("Num Topics")
plt.ylabel("Log Likelyhood Scores")
plt.legend(title='Learning decay', loc='best')
plt.show()

提前致谢!

【问题讨论】:

    标签: scikit-learn python-3.7 gridsearchcv log-likelihood


    【解决方案1】:

    有一个键'params'用于存储所有候选参数的参数设置字典列表。您可以从 sklearn 文档中查看 GridSearchCv 文档 here

    在您的代码中,gscorecv_results_ 的字符串键值。

    cv_results_ 的输出是字符串键的字典,如 'params'、'split0_test_score' 等(您可以参考文档),它们的值为 listarray 等。

    因此,您需要对代码进行以下更改:

    log_likelyhoods_5 = [round(model.cv_results_['mean_test_score'][index]) for index, gscore in enumerate(model.cv_results_['params']) if gscore['learning_decay']==0.5]
    

    【讨论】:

    • 我仍然收到错误:NameError: name 'model' is not defined。此外,我什至尝试使用 'best_lda_model' 而不是 'model' 但仍然出现 NameError: name 'best_lda_model' is not defined。
    • @PiyushGhasiya,模型是您在 GridSearchCV 代码中使用的分类模型。你能在你应用 GridSearchCv 代码的地方显示代码吗?
    • “mean_validation_score”现在被贬低为“mean_test_score”。使用“mean_test_score”。为了您的确认,您可以签出 gridA.cv_results_.keys() 运行上述评论后,您可以看到没有“mean_validation_score”。
    猜你喜欢
    • 1970-01-01
    • 2018-01-15
    • 1970-01-01
    • 1970-01-01
    • 2017-03-02
    • 1970-01-01
    • 2018-09-10
    • 2021-10-04
    • 2019-12-02
    相关资源
    最近更新 更多