Geo*_*ler 3 python numpy pandas 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']
Run Code Online (Sandbox Code Playgroud)
是一个已经标签编码的数据帧,我只想对 标记的列进行编码columnsToEncode?
我的问题是我不确定 apd.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)
Run Code Online (Sandbox Code Playgroud)
注意:我知道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()
Run Code Online (Sandbox Code Playgroud)
因为这支持未知的数据集。现在,我会坚持使用 half-pandas half-numpy,因为 pandas 标签很好。对于数字列。
| 归档时间: |
|
| 查看次数: |
11254 次 |
| 最近记录: |