这可能是一个初学者问题,但我看到很多人使用 LabelEncoder() 用序数替换分类变量。很多人通过一次传递多个列来使用此功能,但是我对某些功能中的顺序错误以及它将如何影响我的模型有些怀疑。下面是一个例子:
输入
import pandas as pd
import numpy as np
from sklearn.preprocessing import LabelEncoder
a = pd.DataFrame(['High','Low','Low','Medium'])
le = LabelEncoder()
le.fit_transform(a)
Run Code Online (Sandbox Code Playgroud)
输出
array([0, 1, 1, 2], dtype=int64)
Run Code Online (Sandbox Code Playgroud)
如您所见,序号值没有正确映射,因为我的 LabelEncoder 只关心列/数组中的顺序(它应该是 High=1、Med=2、Low=3,反之亦然)。错误的映射对模型的影响有多大,除了 OrdinalEncoder() 之外,还有其他简单的方法可以正确映射这些值吗?
python machine-learning correlation scikit-learn feature-engineering