首页 > 解决方案 > Python OR 运算符问题

问题描述

我有一个概率列表,指示输出是 numpy 数组中的 1 还是 0。我试图根据 75% 的确定性水平将这些概率分成两个单独的数组。如果任一概率高于 75%,则进入“确定”数组,如果两者都没有超过该阈值,则进入“不确定”数组。

出于某种原因,当我运行此代码时,它没有正确区分两者并继续将所有实例添加到“某些”数组中。

代码:

probs = rfc.predict_proba(X_validate)

certain = []
uncertain = []

for i in probs[0:10]:
    zero_val = i[0]
    one_val = i[1]

    if zero_val or one_val > 0.75:
        certain.append(i)
    else:
        uncertain.append(i)


print(len(certain))
print(certain)

print(len(uncertain))
print(uncertain)

这是输出:

10
[array([0., 1.]), array([1., 0.]), array([0.95, 0.05]), array(
[0.77, 0.23]), array([0.74, 0.26]), array([0.38, 0.62]), array
([0.11, 0.89]), array([1., 0.]), array([0.94, 0.06]), array([0
.19, 0.81])]
0
[]

是什么导致每个实例都被添加到“某些”数组中?谢谢!

标签: pythonarraysnumpy

解决方案


zero_val or one_val > 0.75zero_val != 0 or one_val > 0.75在这种情况下或多或少等同于,因此zero_val本质上被视为布尔标志。你需要写zero_val > 0.75 or one_val > 0.75


推荐阅读