混淆矩阵得到值错误

时间:2018-04-22 19:16:08

标签: python scikit-learn confusion-matrix valueerror

我正在尝试使用sci-kit创建一个混淆矩阵来学习癫痫数据集 https://archive.ics.uci.edu/ml/datasets/Epileptic+Seizure+Recognition

准备完成后,进行交叉验证和建模我得到了如下结果(我标记了屏幕截图):

现在,当我想得到混淆矩阵时,我得到了这个错误:

void

enter image description here

我该如何解决这个问题?

2 个答案:

答案 0 :(得分:1)

您可以将预测标签和真实标签都转换为str

conf = confusion_matrix(pred["y"].astype(str), pred["PredictedLabel"].astype(str))

尝试重新创建类似的问题,请考虑以下情况:预测和真实是不同的类型:

import pandas as pd
from sklearn.metrics import confusion_matrix

pred = pd.DataFrame()
pred["y"] = [1,2,3]
pred["PredictedLabel"] = ['1','2','3']
conf = confusion_matrix(pred["y"], pred["PredictedLabel"])
print(conf)

会出错:ValueError: Mix of label input types (string and number)

如果你将它们都转换为str类型(你可以使用其他作为int或float,其中两者必须相同,但对于预测和真实标签):

import pandas as pd
from sklearn.metrics import confusion_matrix

pred = pd.DataFrame()
pred["y"] = [1,2,3]
pred["PredictedLabel"] = ['1','2','3']
conf = confusion_matrix(pred["y"].astype(str), pred["PredictedLabel"].astype(str))
print(conf)

结果:

[[1 0 0]
 [0 1 0]
 [0 0 1]]

答案 1 :(得分:0)

如果数据框中值的类型不一致,请尝试将双精度数(假设它们是双精度数)转换为字符串。尝试,

conf = confusion_matrix(pred["y"].values.astype(int).astype(str), pred["PredictedLabel"].values)
conf = pd.DataFrame(conf)

如果您想要标签,可以将它们添加回去,

my_columns = ["y", "PredictedLabel"]
conf.columns = my_columns
print(conf)