python - 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_1
是label_2
和label_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 行,我不得不怀疑我把这些放在一起做得不好,而且它需要更长的时间,因为它正在做我不打算做的事情。
最终,我要做的是为分类器模型构建一个目标,在该模型中,我目前没有准确的目标标签来训练/验证模型。
我喜欢任何关于我可能做错/应该做的不同的见解、意见、建议或一般性观察。
解决方案
mode
接受axis
您已经使用的选项。您不需要遍历数据的长度(i
对循环内的代码有什么作用?)。仅此就足够了:
target = df.filter(like='label_').mode(axis=1)
推荐阅读
- jquery - jQuery sortable 不适用于动态添加的 div
- spring - 如何在 Spring Tools 4 IDE 中启用 Spring 支持?
- javascript - 将文件流式传输到 html 视频播放器,因为它正在使用 fs 在 Electron 中下载
- replace - 在 Dart 中查找和替换字符串
- java - TreeMap - 如何找到以字母表中每个字母开头的单词数
- laravel - 在 Laravel 中正确使用 Ressource Controller
- android - 使用字符串查询过滤 RealmResults 并获得 RecyclerView 粒度动画
- r - 使用 R 创建包含基于日期时间的连续计数的向量
- google-bigquery - Apache Beam/Dataflow 加入 Big Query 数据集
- konvajs - 使用比例绘制时的问题