混淆矩阵取值错误
Confusion matrix get value error
我正在尝试使用 sci-kit 创建一个混淆矩阵来学习癫痫数据集
https://archive.ics.uci.edu/ml/datasets/Epileptic+Seizure+Recognition
准备好后,进行交叉验证和建模,得到如下结果(我标记了屏幕截图):
现在,当我想要获得混淆矩阵时,我得到了这个错误:
from sklearn.metrics import confusion_matrix
conf = confusion_matrix(pred["y"], pred["PredictedLabel"])
print(conf)
我该如何解决这个问题?
您可以将预测标签和真实标签都转换为 str
:
conf = confusion_matrix(pred["y"].astype(str), pred["PredictedLabel"].astype(str))
尝试重现类似问题,请考虑以下情况,其中 predicted 和 true 是不同类型:
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]]
如果数据框中的值类型不一致,请尝试将双精度数(假设它们是双精度数)转换为字符串。试试,
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)
我正在尝试使用 sci-kit 创建一个混淆矩阵来学习癫痫数据集 https://archive.ics.uci.edu/ml/datasets/Epileptic+Seizure+Recognition
准备好后,进行交叉验证和建模,得到如下结果(我标记了屏幕截图):
现在,当我想要获得混淆矩阵时,我得到了这个错误:
from sklearn.metrics import confusion_matrix
conf = confusion_matrix(pred["y"], pred["PredictedLabel"])
print(conf)
我该如何解决这个问题?
您可以将预测标签和真实标签都转换为 str
:
conf = confusion_matrix(pred["y"].astype(str), pred["PredictedLabel"].astype(str))
尝试重现类似问题,请考虑以下情况,其中 predicted 和 true 是不同类型:
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]]
如果数据框中的值类型不一致,请尝试将双精度数(假设它们是双精度数)转换为字符串。试试,
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)