有条件合并数组的numpy方法是什么?

时间:2018-11-03 23:49:31

标签: python numpy text-classification

我有两个numpy数组(1000,),其中填充了来自两个模型的预测:

pred_1 = model_1.predict(x_test)
pred_2 = model_2.predict(x_test)

model_1之所以有吸引力,是因为FP极低,但FN也极高。

model_2由于整体准确性和召回性而具有吸引力。

我如何有条件使用预测来利用这些优势和劣势?

我想从第一个模型获得所有肯定的(1)预测,然后让第二个模型处理其余的预测。

基本上,我正在寻找这样的东西:

final_pred = model_1.predict() if model_1.predict() > 0.5 else model_2.predict()

这将失败:具有多个元素的数组的真值不明确。

如上组合这些数组的numpy方法是什么?

2 个答案:

答案 0 :(得分:3)

您正在寻找numpy.where

a = model_1.predict(x_test)
b = model_2.predict(x_test)

out = np.where(a > 0.5, a, b)

答案 1 :(得分:1)

您可以按照以下方式尝试理解列表,然后使用np.array将列表转换为数组。遍历自变量x_test,然后为x_test的每个值,从两个模型计算模型预测,并根据if条件存储输出。

final_pred = np.array([model_1.predict(i) if model_1.predict(i) > 0.5 else model_2.predict(i) for i in x_test])

您还可以将NumPy索引用作

mask = (pred_1 > 0.5)
pred_2[mask] = pred_1[mask]
final_pred = pred_2

在这里,您首先在pred_1 > 0.5处创建一个掩码,然后在pred_2数组中使用这些索引,然后将这些值替换为pred_1的值。结果pred_2将成为您的final_pred