Python I';我试图预测X_检验的概率,并在一个数组中得到2个值。我需要比较这两个值,使其为1

Python I';我试图预测X_检验的概率,并在一个数组中得到2个值。我需要比较这两个值,使其为1,python,pandas,dataframe,loops,sklearn-pandas,Python,Pandas,Dataframe,Loops,Sklearn Pandas,我试图预测X_检验的概率,并在一个数组中得到2个值。我需要比较这两个值,将其设为1。 当我写代码时 y_pred = classifier.predict_proba(X_test) y_pred 它的输出类似于 array([[0.5, 0.5], [0.6, 0.4], [0.7, 0.3], ..., [0.5, 0.5], [0.4, 0.6], [0.3, 0.7]]) 我们知道,如果值>=0.5,

我试图预测X_检验的概率,并在一个数组中得到2个值。我需要比较这两个值,将其设为1。

当我写代码时

y_pred = classifier.predict_proba(X_test)
y_pred
它的输出类似于

array([[0.5, 0.5],
       [0.6, 0.4],
       [0.7, 0.3],
       ...,
       [0.5, 0.5],
       [0.4, 0.6],
       [0.3, 0.7]])
我们知道,如果值>=0.5,则为和1,如果小于0.5,则为0

我使用下面的代码将上面的数组转换成熊猫

proba = pd.DataFrame(proba)
proba.columns = [['pred_0', 'pred_1']]
proba.head()
输出是

    pred_0  pred_1
0   0.5     0.5
1   0.6     0.4
2   0.7     0.3
3   0.4     0.6
4   0.3     0.7

如何迭代上述行,并编写一个条件,即如果列1的行值大于等于0.5,行值为2,则为1,如果与列2的行值相比,列1的行值小于0.5

例如,通过查看上面的数据帧,输出必须是

  output
0 0
1 1
2 1
3 1
4 1

比较两列以创建布尔索引,然后使用以下命令转换为
int

备选案文1:

df['output'] = (df['pred_0'] >= df['pred_1']).astype(int)
备选案文2:

df['output'] = df['pred_0'].ge(df['pred_1']).astype(int)

或通过:

备选案文3:

df['output'] = np.where(df['pred_0'] >= df['pred_1'], 1, 0)
备选案文4:

df['output'] = np.where(df['pred_0'].ge(df['pred_1']), 1, 0)

您可以只映射初始数组,而不将其转换为数据帧,以便在每个子数组的第一个值大于等于0.5时返回True,否则返回False。最后,将其转换为int:

>>> import numpy as np
>>> a = np.array([[0.5, 0.5], [0.6, 0.4], [0.3, 0.7]])
>>> a
array([[0.5, 0.5],
       [0.6, 0.4],
       [0.3, 0.7]])
>>> result = map(lambda x:int(x[0] >= 0.5), a)
>>> print(list(result))
[1, 1, 0]

“与列2的行值相比,列1小于0.5”您如何比较“pred_0”和“pred_1”?我正在尝试迭代两列的行,并希望比较它们。如果第1列第1行的值大于第2列第2行的值,则它应返回1,否则0将第1行(0.5)与第1行(0.5)比较,它应返回1。同样地,比较第二行(0.6)和第二行(0.4),它应该返回1。条件是,如果第1行第1列值>=第1行第2列值,则应返回1或0。将0.5与0.5进行比较,则应返回0。将0.6与0.4进行比较,新列中应返回1 etc。主要条件是,如果第1列第1行的值>=第2列第1行的值,它应该返回1,否则返回0,因此idx 3和4的预期输出中的值不正确?谢谢!!
>>> import numpy as np
>>> a = np.array([[0.5, 0.5], [0.6, 0.4], [0.3, 0.7]])
>>> a
array([[0.5, 0.5],
       [0.6, 0.4],
       [0.3, 0.7]])
>>> result = map(lambda x:int(x[0] >= 0.5), a)
>>> print(list(result))
[1, 1, 0]