有条件地合并数组的 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)
我有两个 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)