将功能哈希应用于DataFrame中的特定列

时间:2017-11-21 01:15:25

标签: python pandas scikit-learn data-science

我在Python Pandas中使用Feature Hashing有点迷失。

我有一个包含多列的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

然后,为此类数据框应用了特征哈希。但我不明白如何使用info将功能散列的结果添加到我的DataFrame中,以便将其用作机器学习算法中的输入。

这就是我使用FeatureHashing的方式:

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

如何将此FeatureHasher结果插入我的DataFrame?我的方法有多糟糕?有没有更好的方法来实现我的目标?

谢谢!

2 个答案:

答案 0 :(得分:0)

我已经切换到One Hot Coding,使用类似的东西:

categoriesDF = pd.get_dummies(categoriesDF)

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

答案 1 :(得分:0)

我知道这个答案来得很晚,但是我偶然发现了同样的问题,发现这个方法可行:

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检索的稀疏矩阵中创建一个数据框,并将该矩阵连接到现有数据框。