【问题标题】:Apply Feature Hashing to specific columns from a DataFrame将特征散列应用于 DataFrame 中的特定列
【发布时间】:2018-05-04 08:40:57
【问题描述】:

我对在 Python Pandas 中使用特征散列有点迷茫。

我有一个包含多个列的 DataFrame,其中包含许多不同类型的信息。有一列代表数据的一个类。

例子:

         col1   col2    colType
    1     1      2        'A'
    2     1      1        'B'
    3     2      4        'C' 

我的目标是为 ColType 应用 FeatureHashing,以便能够应用机器学习算法。

我为 colType 创建了一个单独的 DataFrame,如下所示:

                   colType  value
           1         'A'       1
           2         'B'       2
           3         'C'       3
           4         'D'       4

然后,对此类数据框应用特征散列。但我不明白如何将特征散列的结果与信息一起添加到我的 DataFrame 中,以便将其用作机器学习算法中的输入。

这就是我使用 FeatureHashing 的方式:

  from sklearn.feature_extraction import FeatureHasher
  fh = FeatureHasher(n_features=10, input_type='string')
  result = fh.fit_transform(categoriesDF)

如何将此 FeatureHasher 结果插入我的 DataFrame?我的方法有多糟糕?有没有更好的方法来实现我正在做的事情?

谢谢!

【问题讨论】:

    标签: python pandas scikit-learn data-science


    【解决方案1】:

    我已切换到 One Hot Coding,使用如下代码:

    categoriesDF = pd.get_dummies(categoriesDF)
    

    此函数将为每个非类别值创建一个列,包含 1 或 0。

    【讨论】:

      【解决方案2】:

      我知道这个答案来晚了,但我偶然发现了同样的问题并发现它有效:

      fh = FeatureHasher(n_features=8, input_type='string')
      sp = fh.fit_transform(df['colType'])
      df = pd.DataFrame(sp.toarray(), columns=['fh1', 'fh2', 'fh3', 'fh4', 'fh5', 'fh6', 'fh7', 'fh8'])
      pd.concat([df1, df], axis=1)
      

      这会从 FeatureHasher 检索到的稀疏矩阵中创建一个数据框,并将该矩阵连接到现有的数据框。

      【讨论】:

        猜你喜欢
        • 2019-06-13
        • 2014-12-14
        • 2012-01-30
        • 2017-04-01
        • 1970-01-01
        • 1970-01-01
        • 2020-08-18
        • 1970-01-01
        • 2013-08-01
        相关资源
        最近更新 更多