有没有办法同时对字符串和整数应用独热编码?DictVectorizer用于字符串,OneHotEncoder用于整数。是否有某种东西可以将它们组合在一起(将所有特征值视为分类值,无论其类型如何)?
例如:我有一个熊猫数据帧,有些列是整数,有些是字符串:
>>> df
a b c d
0 2 0 w K
1 0 1 f K
2 1 2 y L
3 0 0 f M
所有列实际上是分类的。其中一些是整数没有任何意义。现在,如果我使用这样的DictVectorizer:
vectorizer = DictVectorizer(sparse=False)
df_dict = df.T.to_dict().values()
vectorizer.fit_transform(df_dict)
我得到了一个很好的大矩阵,用于列"c"和"d",但"a"和"b"中的值保持不变。我需要他们得到同样的动作。一种选择当然是在"a"和"b"上应用 str 函数,但这既是隐式的(原始数据始终是整数),又效率不高(遍历所有列,这可能非常大并且应用浪费的任务..)。
有没有简单的方法可以做到这一点?
谢谢
看起来get_dummies
是你想要的。 这将采用任何列并将其转换为分类指标的枢轴。
http://pandas.pydata.org/pandas-docs/dev/generated/pandas.get_dummies.html