我尝试计算一个汇总的混淆矩阵来评估我的模型:

cv_results = cross_validate(estimator, dataset.data, dataset.target, scoring=scoring,
                cv=Config.CROSS_VALIDATION_FOLDS, n_jobs=N_CPUS, return_train_score=False)


但是我不知道如何提取不同折痕的单个混淆矩阵。在得分手中,我可以计算出它:

scoring = {
'cm': make_scorer(confusion_matrix)
}


,但我无法返回混淆矩阵,因为它必须返回一个数字而不是一个数组。如果尝试,会出现以下错误:

ValueError: scoring must return a number, got [[...]] (<class 'numpy.ndarray'>) instead. (scorer=cm)


我想知道是否可以将混淆矩阵存储在全局变量中,但是使用失败

global cm_list
cm_list.append(confusion_matrix(y_true,y_pred))


在自定义得分手中。

在此先感谢您的任何建议。

最佳答案

问题是,在RandomizedSearchCV完成后,我无法访问估计器,因为我不知道RandomizedSearchCV实现了一种预测方法。这是我的个人解决方案:

r_search = RandomizedSearchCV(estimator=estimator, param_distributions=param_distributions,
                          n_iter=n_iter, cv=cv, scoring=scorer, n_jobs=n_cpus,
                          refit=next(iter(scorer)))
r_search.fit(X, y_true)
y_pred = r_search.predict(X)
cm = confusion_matrix(y_true, y_pred)

关于python - sklearn RandomizedSearchCV提取不同褶皱的混淆矩阵,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/45915247/

10-12 16:41