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

What is the numpy way to conditionally merge arrays?

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

您可以尝试如下所示的列表理解,然后使用 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.

您正在寻找 numpy.where:

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

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