【问题标题】:Confusion Matrix error : Mismatched Datatypes between Actual and Predicted Values混淆矩阵错误:实际值和预测值之间的数据类型不匹配
【发布时间】:2021-01-24 21:04:23
【问题描述】:

原始数据集如上图所示。 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 秒

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

谢谢。

【问题讨论】:

    标签: python-3.x pandas keras confusion-matrix


    【解决方案1】:

    假设任何预测类大于或等于 0.5,并且假设最终激活映射了 0 和 1 之间的任何值(不包括在内),您可以执行以下操作:

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

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

    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]])
    

    【讨论】:

    • 感谢您的回复。我尝试了上述方法,它适用于 y_pred 但不适用于混淆矩阵。 y_pred 是一个数组,但 y_test 不是。获取不匹配数据类型的错误。有没有办法将 y_test 列转换为数组?谢谢。
    猜你喜欢
    • 2017-01-03
    • 2014-01-21
    • 2020-09-17
    • 2018-10-02
    • 2022-01-07
    • 1970-01-01
    • 2020-07-31
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多