LabelEncoder().fit_transform 与 pd.get_dummies 用于分类编码
LabelEncoder().fit_transform vs. pd.get_dummies for categorical coding
最近我注意到,如果你有这样的数据框 df
:
A B C
0 0 Boat 45
1 1 NaN 12
2 2 Cat 6
3 3 Moose 21
4 4 Boat 43
您可以使用 pd.get_dummies
:
自动编码分类数据
df1 = pd.get_dummies(df)
产生这个:
A C B_Boat B_Cat B_Moose
0 0 45 1.0 0.0 0.0
1 1 12 0.0 0.0 0.0
2 2 6 0.0 1.0 0.0
3 3 21 0.0 0.0 1.0
4 4 43 1.0 0.0 0.0
我通常使用 LabelEncoder().fit_transform
来执行此类任务,然后再将其放入 pd.get_dummies
,但如果我可以跳过一些步骤,那将是可取的。
我是否仅仅通过在我的整个数据帧上使用 pd.get_dummies
对其进行编码而丢失任何东西?
是的,如果您只想对字符串特征进行编码,则可以跳过 LabelEncoder
的使用。另一方面,如果您有一个整数分类列(而不是字符串),那么 pd.get_dummies
将保持原样(例如,请参阅您的 A 或 C 列)。在这种情况下,您应该使用 OneHotEncoder
. Ideally OneHotEncoder
would support both integer and strings but this is being worked on at the moment.
最近我注意到,如果你有这样的数据框 df
:
A B C
0 0 Boat 45
1 1 NaN 12
2 2 Cat 6
3 3 Moose 21
4 4 Boat 43
您可以使用 pd.get_dummies
:
df1 = pd.get_dummies(df)
产生这个:
A C B_Boat B_Cat B_Moose
0 0 45 1.0 0.0 0.0
1 1 12 0.0 0.0 0.0
2 2 6 0.0 1.0 0.0
3 3 21 0.0 0.0 1.0
4 4 43 1.0 0.0 0.0
我通常使用 LabelEncoder().fit_transform
来执行此类任务,然后再将其放入 pd.get_dummies
,但如果我可以跳过一些步骤,那将是可取的。
我是否仅仅通过在我的整个数据帧上使用 pd.get_dummies
对其进行编码而丢失任何东西?
是的,如果您只想对字符串特征进行编码,则可以跳过 LabelEncoder
的使用。另一方面,如果您有一个整数分类列(而不是字符串),那么 pd.get_dummies
将保持原样(例如,请参阅您的 A 或 C 列)。在这种情况下,您应该使用 OneHotEncoder
. Ideally OneHotEncoder
would support both integer and strings but this is being worked on at the moment.