Confusion Matrix error : Mismatched Datatypes between Actual and Predicted Values

Confusion Matrix error : Mismatched Datatypes between Actual and Predicted Values

原始数据集如上所示。 CO(ppm) 是因变量。

model = Sequential()
#First Hidden Layer
model.add(Dense(64, activation='relu', kernel_initializer='random_normal', input_dim=19))
#Second  Hidden Layer
model.add(Dense(4, activation='relu', kernel_initializer='random_normal'))
#model.add(Dropout(0.3))
#Output Layer
model.add(Dense(1, activation='sigmoid', kernel_initializer='random_normal'))

对于上面显示的二元分类问题,我正在尝试获取 混淆矩阵。 我有从 y_pred 和 y_test 产生的数组,并且数据类型不匹配,因为 y_pred 输出从 0 到 1 的 值范围(sigmoid 激活函数)和 y_test 有一个由 仅 0 和 1 组成的数组 .

如果有人能帮我想出一种为此绘制混淆矩阵的方法,我将不胜感激。

谢谢。

假设任何预测的 class 大于或等于 0.5,并且假设最终激活映射 0 到 1 之间的任何值 non-inclusive,您可以执行以下操作:

y_pred = np.where(y_pred >= 0.5, 1, 0)

任何大于等于 0.5 的值都将映射为 1,否则为 0。之后您可以使用 sklearn 的 confusion_matrix 方法获得混淆矩阵:

sklearn.metrics.confusion_matrix(y_true, y_pred)

示例:

y_true = np.array([1, 0, 0, 1, 1, 1, 0, 0])

y_pred = np.array([0.8, 0.1, 0.4, 0.6, 0.9, 0.69, 0.46, 0.21])
y_pred = np.where(y_pred >= 0.5, 1, 0)

sklearn.metrics.confusion_matrix(y_true, y_pred)

输出:

array([[4, 0],
       [0, 4]])