ValueError:在进行加权预测时,操作数无法与形状 (7,) (624,3) 一起广播

Posted

技术标签:

【中文标题】ValueError:在进行加权预测时,操作数无法与形状 (7,) (624,3) 一起广播【英文标题】:ValueError: operands could not be broadcast together with shapes (7,) (624,3) while doing weighted predictions 【发布时间】:2021-11-07 19:58:27 【问题描述】:

我正在对七个模型的预测概率进行集成。每个模型输出三个类。我计算了七个模型中每个模型的预测的权重。这些预测的权重存储在变量“prediction_weights”中。加权平均代码如下:

prediction_weights = np.array([[3.66963025e-01, 1.08053256e-01,1.14617370e-01, 4.10366349e-01,
 6.16391075e-14, 4.37376684e-14, 9.26785075e-18]]) 
weighted_predictions7 = np.zeros((nb_test_samples, num_classes), 
                                dtype='float32')
for weight, prediction in zip(prediction_weights, preds):
    weighted_predictions7 += weight * prediction    
yPred7 = np.argmax(weighted_predictions7, axis=1)
yTrue = Y_test.argmax(axis=-1)
accuracy = metrics.accuracy_score(yTrue, yPred7) * 100

np.savetxt('weighted_averaging_7_y_pred.csv',
            weighted_predictions7,fmt='%f',
            delimiter = ",")

我收到以下错误:

  File "<ipython-input-16-8f3a15c0fec1>", line 2, in <module>
    weighted_predictions7 += weight * prediction

ValueError: operands could not be broadcast together with shapes (7,) (624,3) 

以下是变量的形状:

    prediction_weights: (1,7) - Array of Float 64
    nb_test_samples: 1 - int
    num_classes: 1 - int
    weighted_predictions7: (624,3) - Array of float32
    Y_test: (624,3) - Array of float32
    yTrue: (624,) - Array of Int64

【问题讨论】:

如果 weightprediction 是 numpy 数组,那么抛出错误的行是尝试在这些数组之间进行逐元素乘法。但是,它们是不同的形状,它不知道如何解释执行。您需要确定如何进行乘法运算并更明确地处理它,或者使两个数组匹配形状。 我的印象是,您的问题实际上是关于确定各种数据的维度应该是什么,以便系统在理论上有意义,而不是与代码本身有关。 【参考方案1】:

简单替换

prediction_weights = np.array([[3.66963025e-01, 1.08053256e-01,1.14617370e-01, 4.10366349e-01,
 6.16391075e-14, 4.37376684e-14, 9.26785075e-18]]) 

通过

prediction_weights = [3.66963025e-01, 1.08053256e-01,1.14617370e-01, 4.10366349e-01,
 6.16391075e-14, 4.37376684e-14, 9.26785075e-18] 

解决了错误。

【讨论】:

以上是关于ValueError:在进行加权预测时,操作数无法与形状 (7,) (624,3) 一起广播的主要内容,如果未能解决你的问题,请参考以下文章

ValueError:操作数无法与形状一起广播 (2501,201) (2501,)

线性回归器无法预测一组值;错误:ValueError:形状(100,1)和(2,1)未对齐:1(dim 1)!= 2(dim 0)

拓端tecdat|R语言编程指导用线性模型进行臭氧预测: 加权泊松回归,普通最小二乘,加权负二项式模型,多重插补缺失值

ValueError:无法将字符串转换为浮点数:'07/06/2019'

ICME2021:基于VVC的角度加权预测

在 Keras 中进行预测后无法创建混淆矩阵 - 无法处理多标签指示符的混合 [重复]