我有一个pandas数据框,左侧是以下分类变量的列,右侧是它们的具体实现,
(抱歉图片分辨率低)。
为了进行统计回归,我希望标记所有这些分类变量,例如,在LotShape
中,Reg
变为0
,IR1
变为1
,IR2
变为2
,IR3
变为3
。我发现scikit-learn的LabelEncoder
可以完成这项工作,但有一个问题。其中一些分类变量是隐式有序的,0
、1
等需要分配给正确的标签,而LotShape
碰巧在那里是有序的。
所以我的问题是,如何高效地,按照我指定的顺序,标记大量的分类变量?
回答:
这可能有帮助。
x= ['GA','TA','SA','TA','GA','TA','SA']import numpy as npfrom sklearn.preprocessing import LabelEncoderfrom sklearn.preprocessing.label import _encodefrom sklearn.utils import column_or_1dx = column_or_1d(x, warn=True)classes_,encoded_values = _encode(x,uniques=np.array(['GA','TA','SA']),encode=True)encoded_values, classes_#(array([0, 1, 2, 1, 0, 1, 2]), ['GA', 'TA', 'SA'])#comparing with labelencoder, which will sort the labels before encodingle = LabelEncoder()le.fit_transform(x),le.classes_#(array([0, 2, 1, 2, 0, 2, 1], dtype=int64), array(['GA', 'SA', 'TA'], dtype='<U2'))