我在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?我的方法有多糟糕?有没有更好的方法来实现我的目标?
谢谢!
答案 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检索的稀疏矩阵中创建一个数据框,并将该矩阵连接到现有数据框。