我有两个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方法是什么?
答案 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
。