首页 > 解决方案 > 3列的python模式 - 关于方法的建议?

问题描述

我遇到了一个问题,我的项目需要很长时间 - 超时。有问题的数据框只有 303 个条目,如下所示:

   age  sex  cp  trestbps  chol  fbs  restecg  thalach  exang  oldpeak  slope  ca  thal  label_1  label_2  label_3
0    50    1   0       150   243    0        0      128      0      2.6      1   0     3        0        0        1
1    55    0   1       135   250    0        0      161      0      1.4      1   0     2        1        1        1
2    54    1   0       140   239    0        1      160      0      1.2      2   0     2        1        0        1
3    59    1   3       178   270    0        0      145      0      4.2      0   0     3        1        0        1
4    70    1   2       160   269    0        1      112      1      2.9      1   1     3        1        0        0
5    64    0   2       140   313    0        1      133      0      0.2      2   0     3        1        0        1
6    61    1   0       120   260    0        1      140      1      3.6      1   1     3        0        0        1
7    77    1   0       125   304    0        0      162      1      0.0      2   3     2        1        0        0
8    60    1   0       130   253    0        1      144      1      1.4      2   1     3        0        1        0
9    45    0   1       130   234    0        0      175      0      0.6      1   0     2        1        1        1
10   44    1   1       120   220    0        1      170      0      0.0      2   0     2        1        1        0
11   47    1   2       130   253    0        1      179      0      0.0      2   0     2        1        0        1
12   46    1   1       101   197    1        1      156      0      0.0      2   0     3        0        1        1
13   46    0   2       142   177    0        0      160      1      1.4      0   0     2        0        1        1
14   60    0   3       150   240    0        1      171      0      0.9      2   0     2        1        0        1
15   59    1   0       135   234    0        1      161      0      0.5      1   0     3        1        1        1
16   57    1   0       110   335    0        1      143      1      3.0      1   1     3        0        0        1
17   65    0   0       150   225    0        0      114      0      1.0      1   3     3        1        0        0
18   58    1   2       132   224    0        0      173      0      3.2      2   2     3        1        0        0
19   65    1   3       138   282    1        0      174      0      1.4      1   1     2        1        0        0

我感兴趣的唯一列label_1label_2label_3

这些是二进制值(0 或 1)。我需要对每一行进行多数表决,并认为我会在 for 循环中使用 3 列的模式,如下所示:

target=[]
for i in range(data.shape[0]):
    labels=data.loc[:,['label_1','label_2','label_3']]
    true_label = labels.mode(axis=1)
    
    target.append(true_label)

鉴于它只处理 3 列中的 303 行,我不得不怀疑我把这些放在一起做得不好,而且它需要更长的时间,因为它正在做我不打算做的事情。

最终,我要做的是为分类器模型构建一个目标,在该模型中,我目前没有准确的目标标签来训练/验证模型。

我喜欢任何关于我可能做错/应该做的不同的见解、意见、建议或一般性观察。

标签: pythonpandas

解决方案


mode接受axis您已经使用的选项。您不需要遍历数据的长度(i对循环内的代码有什么作用?)。仅此就足够了:

target = df.filter(like='label_').mode(axis=1)

推荐阅读