如何修复 ValueError:不支持多类格式

Posted

技术标签:

【中文标题】如何修复 ValueError:不支持多类格式【英文标题】:How to fix ValueError: multiclass format is not supported 【发布时间】:2020-07-21 16:21:00 【问题描述】:

这是我的代码,我尝试计算 ROC 分数,但 ValueError 出现问题:不支持多类格式。我已经在寻找 sci-kit 学习,但它没有帮助。最后,我仍然有ValueError:不支持多类格式。

这是我的代码

from sklearn.tree import DecisionTreeClassifier
from sklearn.ensemble import BaggingClassifier
from sklearn.metrics import confusion_matrix,zero_one_loss
from sklearn.metrics import classification_report,matthews_corrcoef,accuracy_score
from sklearn.metrics import roc_auc_score, auc


dtc = DecisionTreeClassifier()
bc = BaggingClassifier(base_estimator=dtc, n_estimators=10, random_state=17)
bc.fit(train_x, train_Y)
pred_y = bc.predict(test_x)

fprate, tprate, thresholds = roc_curve(test_Y, pred_y)
results = confusion_matrix(test_Y, pred_y)
error = zero_one_loss(test_Y, pred_y)
roc_auc_score(test_Y, pred_y)

FP = results.sum(axis=0) - np.diag(results)  
FN = results.sum(axis=1) - np.diag(results)
TP = np.diag(results)
TN = results.sum() - (FP + FN + TP)



print('\n Time Processing: \n',time.process_time())
print('\n Confussion Matrix: \n', results)
print('\n Zero-one classification loss: \n', error)
print('\n True Positive: \n', TP)
print('\n True Negative: \n', TN)
print('\n False Positive: \n', FP)
print('\n False Negative: \n', FN)
print ('\n The Classification report:\n',classification_report(test_Y,pred_y, digits=6))
print ('MCC:', matthews_corrcoef(test_Y,pred_y))
print ('Accuracy:', accuracy_score(test_Y,pred_y))
print (auc(fprate, tprate))
print ('ROC Score:', roc_auc_score(test_Y,pred_y))

这是回溯

【问题讨论】:

请添加错误信息以便我们能够追踪行号和信息 是的,我已经在问题中提出了错误 您能否发布完整的回溯,以便我们查看您的代码中的哪一行导致了错误?截至目前,它仅显示 sci-kit 学习库中发生错误的位置,这并不是特别有用 好的我已经放好了 【参考方案1】:

来自文档,roc_curve:“注意:此实现仅限于二进制分类任务。”

您的标签类别 (y) 是 1 还是 0?如果没有,我认为您必须将pos_label 参数添加到您的roc_curve 调用中。

fprate, tprate, thresholds = roc_curve(test_Y, pred_y, pos_label='your_label')

或者:

test_Y = your_test_y_array  # these are either 1's or 0's
fprate, tprate, thresholds = roc_curve(test_Y, pred_y)

【讨论】:

以上是关于如何修复 ValueError:不支持多类格式的主要内容,如果未能解决你的问题,请参考以下文章

ValueError:使用 sklearn roc_auc_score 函数不支持多类多输出格式

如何修复 aws 区域错误“ValueError:必须使用 SageMaker 支持的区域设置本地 AWS 配置”

Python:ValueError:索引1处不支持的格式字符'''(0x27)

WEKA - 用 Ja​​va 训练多类 SVM 模型

如何修复'ValueError:输入0与层simple_rnn_1不兼容:预期形状=(无,无,20),找到形状=(无,无,2,20)'

ValueError:mysql scrapy管道中不支持的格式字符