【问题标题】:pandas python to onehot label several columns with same set of valuespandas python to onehot标记具有相同值集的几列
【发布时间】:2019-02-04 07:50:55
【问题描述】:

我正在尝试使用带有 onehot 标签的 Python 创建机器学习功能。原始数据假设为 element_1、element_2、element3... 的值如 apple、banana、kiwi...

     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

【问题讨论】:

  • 请向我们展示您最近尝试的代码
  • 这不完全是 one-hot 编码。 One-hot 编码采用分类信​​息,您实际上只是在说 TRUE FALSE TRUE,这很好,但如果您将其视为 one-hot 而不是布尔信息,您可能会根据您尝试拟合的模型得到意想不到的结果.

标签: python scikit-learn


【解决方案1】:

试试:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-08-20
    • 2020-11-07
    • 1970-01-01
    • 2021-02-24
    • 1970-01-01
    • 2023-03-16
    • 2020-11-04
    • 1970-01-01
    相关资源
    最近更新 更多