我正在尝试使用sci-kit创建一个混淆矩阵来学习癫痫数据集 https://archive.ics.uci.edu/ml/datasets/Epileptic+Seizure+Recognition
准备完成后,进行交叉验证和建模我得到了如下结果(我标记了屏幕截图):
现在,当我想得到混淆矩阵时,我得到了这个错误:
void
我该如何解决这个问题?
答案 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)