【发布时间】:2016-11-25 15:54:46
【问题描述】:
我有一个 Pandas 数据框,其中包含 2 个分类变量、ID 变量和一个目标变量(用于分类)。我设法用OneHotEncoder 转换了分类值。这导致稀疏矩阵。
ohe = OneHotEncoder()
# First I remapped the string values in the categorical variables to integers as OneHotEncoder needs integers as input
... remapping code ...
ohe.fit(df[['col_a', 'col_b']])
ohe.transform(df[['col_a', 'col_b']])
但我不知道如何在 DecisionTreeClassifier 中使用这个稀疏矩阵?特别是当我想稍后在我的数据框中添加一些其他非分类变量时。谢谢!
编辑 回复miraculixx的评论:我也试过sklearn-pandas中的DataFrameMapper
mapper = DataFrameMapper([
('id_col', None),
('target_col', None),
(['col_a'], OneHotEncoder()),
(['col_b'], OneHotEncoder())
])
t = mapper.fit_transform(df)
然后我得到这个错误:
TypeError: 不支持类型转换: (dtype('O'), dtype('int64'), dtype('float64'), dtype('float64'))。
【问题讨论】:
-
sklearn-pandas 在处理数据框和 sklearn 时非常有用。
标签: python pandas scikit-learn classification one-hot-encoding