LabelEncoder对Pandas df的拟合顺序[英] LabelEncoder order of fit for a Pandas df

本文是小编为大家收集整理的关于LabelEncoder对Pandas df的拟合顺序的处理方法,想解了LabelEncoder对Pandas df的拟合顺序的问题怎么解决?LabelEncoder对Pandas df的拟合顺序问题的解决办法?那么可以参考本文帮助大家快速定位并解决问题。

问题描述

我正在拟合 scikit-learn LabelEncoderpandas df.

如何确定将遇到的字符串映射到整数的顺序?它是确定性的吗?

更重要的是,我可以指定这个顺序吗?

import pandas as pd
from sklearn import preprocessing

df = pd.DataFrame(data=["first", "second", "third", "fourth"], columns=['x'])
le = preprocessing.LabelEncoder()
le.fit(df['x'])
print list(le.classes_)
### this prints ['first', 'fourth', 'second', 'third']
encoded = le.transform(["first", "second", "third", "fourth"]) 
print encoded
### this prints [0 2 3 1]

我希望 le.classes_ 是 ["first", "second", "third", "fourth"] 然后 encoded 是 [0 1 2 3],因为这是字符串在列中出现的顺序.这个可以吗?

推荐答案

按排序顺序完成.在字符串的情况下,它是按字母顺序完成的.没有这方面的文档,但是查看 LabelEncoder.transform 我们可以看到工作大多委托给函数 numpy.setdiff1d,带有以下文档:

<块引用>

求两个数组的集合差.

返回 排序的,ar1 中不存在于 ar2 中的唯一值.

(强调我的).

请注意,由于没有记录,它可能是实现定义的,并且可以在版本之间更改.可能只是我查看的版本使用了排序顺序,而其他版本的 scikit-learn 可能会改变这种行为(不使用 numpy.setdiff1d).

本文地址:https://www.itbaoku.cn/post/1727969.html