首页 > 解决方案 > pandas python to onehot标记具有相同值集的几列

问题描述

我正在尝试使用带有 onehot 标签的 Python 创建用于机器学习的功能。原始数据让我们说 element_1、element_2、element3... 具有苹果、香蕉、猕猴桃等值...

     element_1     element_2     element_3
1.     apple         banana          kiwi

2.     apple         

3.     banana        kiwi            

4.     kiwi          apple

我正在尝试做的是这些新功能,例如

     apple     banana     kiwi
1.     1           1          1

2.     1           0          0

3.     0           1          1

4.     1           0          1

谢谢你。

尝试过的方法会创建比需要更多的列,例如 element1_apple、element1_banana、...、element2_apple...

Y = TrainDF.loc[:,['ele_1','ele_2','ele_3','ele_4']] Y1 = pd.DataFrame(columns=Y.columns, data=le2.fit_transform(Y.values.flatten( )).reshape(Y.shape))

Y2 = onehot1.fit_transform(Y1)

感谢您的评论。该项目的目标是预测如何通过混合元素及其单独数量 (%)(最少 1 个和最多 4 个元素)来获得某些特征。元素输入有四列和大约 50 种类型的元素。假设如果需要一个 RGB 值 (100,50,150),则需要 A 元素 5% + D 元素 8% 的输入。标签编码和onehot编码还没有很好的结果。我正在组织数据,以便训练的输出如下所示。

     apple     banana     kiwi
1.     1           2          1

2.     3           0          0

3.     0           1          5

4.     1           0          1

标签: pythonscikit-learn

解决方案


尝试:

pd.get_dummies(df.stack(), prefix=None, prefix_sep=None).sum(level=0)

输出:

    apple  banana  kiwi
1.      1       1     1
2.      1       0     0
3.      0       1     1
4.      1       0     1

推荐阅读