Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/xpath/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Scikit learn 属性错误:';str';对象没有属性';参数';由于新版本的sklearn_Scikit Learn_Python 3.7_Gridsearchcv_Log Likelihood - Fatal编程技术网

Scikit learn 属性错误:';str';对象没有属性';参数';由于新版本的sklearn

Scikit learn 属性错误:';str';对象没有属性';参数';由于新版本的sklearn,scikit-learn,python-3.7,gridsearchcv,log-likelihood,Scikit Learn,Python 3.7,Gridsearchcv,Log Likelihood,我正在使用sklearn进行主题建模。在尝试从网格搜索输出获取对数似然时,我得到以下错误: AttributeError:'str'对象没有属性'parameters' 我想我理解的问题是:“参数”在旧版本中使用,而我使用的是sklearn的新版本(0.22),这是错误的。我还搜索了新版本中使用的术语,但找不到它。代码如下: # Get Log Likelyhoods from Grid Search Output n_components = [10, 15, 20, 25, 30] log_

我正在使用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()

提前谢谢

有一个键“params”,用于存储所有候选参数的参数设置命令列表。您可以从sklearn文档中查看GridSearchCv文档

在代码中,
gscore
cv\u results\u
的字符串键值

cv_结果
的输出是字符串键的字典,如'params'、'split0_test_score'等(您可以参考文档),其值为
list
array

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

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:未定义名称“model”。此外,我甚至尝试使用“best_lda_model”而不是“model”,但仍然得到了名称错误:名称“best_lda_model”未定义。@PiyushGhasiya,model是您在GridSearchCV代码中使用的分类模型。你能展示一下你应用GridSearchCv代码的代码吗?“平均检验分数”现在是“平均测试分数”。使用“平均测试分数”。为了确认,您可以查看gridA.cv\u results\uuu.keys(),在运行上述注释后,您可以看到没有“平均值验证分数”。