我在熊猫df的列上安装了scikit-learn LabelEncoder。
如何确定将遇到的字符串映射到整数的顺序?它是确定性的吗?
更重要的是,我可以指定此顺序吗?
import pandas as pdfrom sklearn import preprocessingdf = 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的顺序。由于我不想迁移一些代码并使用其他一些库。我设法实现了暂时的解决方法。
因为一开始我就知道数据集中的类别,所以我创建了虚拟类别,这些虚拟类别将按字母顺序排列为所需的特定顺序。例
{0:ARejected,1:ZApproved}
之后,我将标签编码器安装到数据集上。装好后,我将替换标签编码器的类,以确保将来可以按需要映射标签。