gpt4 book ai didi

python - 适合 Pandas df 的 LabelEncoder 顺序

转载 作者:太空狗 更新时间:2023-10-30 01:27:30 25 4
gpt4 key购买 nike

我正在安装 scikit-learn LabelEncoder在 Pandas 的专栏上 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"] 然后编码[0 1 2 3],因为这是字符串在列中出现的顺序。这能做到吗?

最佳答案

这是按排序顺序完成的。在字符串的情况下,它是按字母顺序完成的。没有这方面的文档,但查看 LabelEncoder.transform 的源代码我们可以看到工作主要委托(delegate)给函数 numpy.setdiff1d , 以及以下文档:

Find the set difference of two arrays.

Return the sorted, unique values in ar1 that are not in ar2.

(强调我的)。

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

关于python - 适合 Pandas df 的 LabelEncoder 顺序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38749305/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com