创建Confusion Matrix时遇TypeError:y_true与y_pred类型不匹配如何解决?
解决混淆矩阵的类型不匹配错误
错误的核心原因很明确:你的真实标签target_test是布尔类型(False/True),但模型输出的预测结果predict_test是字符串形式的布尔值('False'/'True'),两者类型不一致导致无法生成混淆矩阵。
下面是两种直接有效的解决办法:
方法1:将预测结果转为布尔类型
直接把模型输出的字符串预测值转换成布尔类型,和真实标签的类型对齐:
predict_test = best_cat.predict(features_test).astype(bool) # 或者用列表推导式实现转换,效果一致 # predict_test = [pred == 'True' for pred in best_cat.predict(features_test)] sns.heatmap(confusion_matrix(target_test, predict_test), annot=True, fmt='3.0f') plt.title('Confusion Matrix', y=1.05, size=15)
方法2:将真实标签转为字符串类型
如果更倾向于统一用字符串类型,也可以把真实标签转换成字符串:
target_test_str = target_test.astype(str) sns.heatmap(confusion_matrix(target_test_str, predict_test), annot=True, fmt='3.0f') plt.title('Confusion Matrix', y=1.05, size=15)
推荐用方法1,布尔类型在后续的模型评估计算(比如准确率、召回率)中更便捷,能避免字符串转换带来的额外问题。
内容的提问来源于stack exchange,提问作者alinase
相关产品推荐
相关产品推荐

