你就快到了!
基本上是fit
方法,准备编码器(适合您的数据,即准备映射)但不转换数据。
你必须打电话transform
转换数据,或使用fit_transform
拟合并转换相同的数据。
enc = OrdinalEncoder()
enc.fit(df[["Sex","Blood", "Study"]])
df[["Sex","Blood", "Study"]] = enc.transform(df[["Sex","Blood", "Study"]])
或直接
enc = OrdinalEncoder()
df[["Sex","Blood", "Study"]] = enc.fit_transform(df[["Sex","Blood", "Study"]])
注意:这些值不会是您提供的值,因为 fit 方法在内部使用numpy.unique
它给出的结果按字母顺序排序,而不是按出现顺序排序。
正如你可以看到的enc.categories_
[array(['F', 'M'], dtype=object),
array(['A', 'AB', 'B', 'O'], dtype=object),
array(['Biology', 'English', 'Math', 'Science'], dtype=object)]```
数组中的每个值都按其位置进行编码。
(F 将编码为 0 ,M 编码为 1)