python - Pandas sklearn one-hot 编码数据帧还是 numpy?

标签 python pandas numpy scikit-learn dummy-variable

如何将 pandas 数据帧转换为 sklearn one-hot-encoded(数据帧/numpy 数组),其中某些列不需要编码?

mydf = pd.DataFrame({'Target':[0,1,0,0,1, 1,1],
                   'GroupFoo':[1,1,2,2,3,1,2],
                    'GroupBar':[2,1,1,0,3,1,2],
                    'GroupBar2':[2,1,1,0,3,1,2],
                    'SomeOtherShouldBeUnaffected':[2,1,1,0,3,1,2]})
columnsToEncode = ['GroupFoo', 'GroupBar']

是否已对标签编码数据帧进行编码,而我只想对由 columnsToEncode 标记的列进行编码?

我的问题是,我不确定 pd.Dataframe 或 numpy 数组表示是否更好,以及如何将编码部分与另一个部分重新合并。

到目前为止我的尝试:

myEncoder = OneHotEncoder(sparse=False, handle_unknown='ignore')
myEncoder.fit(X_train)
df = pd.concat([
         df[~columnsToEncode], # select all other / numeric
        # select category to one-hot encode
         pd.Dataframe(encoder.transform(X_train[columnsToEncode]))#.toarray() # not sure what this is for
        ], axis=1).reindex_axis(X_train.columns, axis=1)

注意:我知道 Pandas: Get Dummies/http://pandas.pydata.org/pandas-docs/stable/generated/pandas.get_dummies.html但这在训练/测试分割中效果不佳,我需要每次折叠都进行这样的编码。

最佳答案

这个库提供了几个分类编码器,使 sklearn/numpy 能够与 pandas 很好地配合 https://github.com/wdm0006/categorical_encoding

但是,他们还不支持“处理未知类别”

现在我会使用

myEncoder = OneHotEncoder(sparse=False, handle_unknown='ignore')
myEncoder.fit(df[columnsToEncode])

pd.concat([df.drop(columnsToEncode, 1),
          pd.DataFrame(myEncoder.transform(df[columnsToEncode]))], axis=1).reindex()

因为这支持未知的数据集。现在,我会坚持使用 half-pandas half-numpy,因为 pandas 标签很好。对于数字列。

关于python - Pandas sklearn one-hot 编码数据帧还是 numpy?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39923927/

相关文章:

python - 我怎样才能更好地处理这个 Flask-SQLAlchemy 提交/回滚?

python - 使用 pandas 转置 csv

python - 获取条件下唯一值的计数

python - 为什么在这个 numpy 数组中 ndim = 2 ?

python - 如何避免sklearn GridSearchCV中不必要的重新计算?

Python 日期时间 : use strftime() with a timezone-aware date

Python 聊天与异步获取 session 数据

python - 基于两列中的值合并其他列中的值

python-3.x - 返回多维数组中N个最大值的索引(可以求一维的解,但不能求多维的)

Python NumPy : create 2d array of values based on coordinates