Python 使用sklearns'时,如何检查为哪个标签分配了什么值;LabelEncoder()?

Python 使用sklearns'时,如何检查为哪个标签分配了什么值;LabelEncoder()?,python,pandas,machine-learning,scikit-learn,one-hot-encoding,Python,Pandas,Machine Learning,Scikit Learn,One Hot Encoding,为了机器学习的目的,我正在将分类数据转换为数值 举个例子,汽车的购买价格(“购买”变量)分为:“vhigh、high、med、low”。 为了将其转换为数值,我使用了: le = preprocessing.LabelEncoder() buying = le.fit_transform(list(data["buying"])) 有没有办法检查Python如何准确地将这些标签转换为数值,因为这是随机进行的(例如vhigh=0,high=2) 您可以在数据框中创建一个额外的列来映射值: map

为了机器学习的目的,我正在将分类数据转换为数值

举个例子,汽车的购买价格(“购买”变量)分为:“vhigh、high、med、low”。 为了将其转换为数值,我使用了:

le = preprocessing.LabelEncoder()
buying = le.fit_transform(list(data["buying"]))

有没有办法检查Python如何准确地将这些标签转换为数值,因为这是随机进行的(例如vhigh=0,high=2)

您可以在数据框中创建一个额外的列来映射值:

mapping_df = data[['buying']].copy() #Create an extra dataframe which will be used to address only the encoded values
mapping_df['buying_encoded'] = le.fit_transform(data['buying'].values) #Using values is faster than using list
下面是一个完整的工作示例:

import pandas as pd
from sklearn.preprocessing import LabelEncoder
le = LabelEncoder()
data = pd.DataFrame({'index':[0,1,2,3,4,5,6],
        'buying':['Luffy','Nami','Luffy','Franky','Sanji','Zoro','Luffy']})
data['buying_encoded'] = le.fit_transform(data['buying'].values)
data = data.drop_duplicates('buying').set_index('index')
print(data)
输出:

       buying  buying_encoded
index                        
0       Luffy               1
1        Nami               2
3      Franky               0
4       Sanji               3
5        Zoro               4
{'buying_encoded': {'Luffy': 1, 'Nami': 2, 'Franky': 0, 'Sanji': 3, 'Zoro': 4}}
{'Luffy': 1, 'Nami': 2, 'Franky': 0, 'Sanji': 3, 'Zoro': 4}

您还可以获得映射到类别的字典,如下所示 从@celius stingher停下来的地方开始

d1=data.drop\u duplicates('busing')。drop('index',axis=1)。set\u index('busing'))
印刷品(d1)
输出:

       buying  buying_encoded
index                        
0       Luffy               1
1        Nami               2
3      Franky               0
4       Sanji               3
5        Zoro               4
{'buying_encoded': {'Luffy': 1, 'Nami': 2, 'Franky': 0, 'Sanji': 3, 'Zoro': 4}}
{'Luffy': 1, 'Nami': 2, 'Franky': 0, 'Sanji': 3, 'Zoro': 4}
购买编码的
购买
路飞1号
纳米2
弗兰基0
三机3
佐罗4号
要将此输出转换为字典

dict\u map=d1.to\u dict()
打印(dict_地图)
输出:

       buying  buying_encoded
index                        
0       Luffy               1
1        Nami               2
3      Franky               0
4       Sanji               3
5        Zoro               4
{'buying_encoded': {'Luffy': 1, 'Nami': 2, 'Franky': 0, 'Sanji': 3, 'Zoro': 4}}
{'Luffy': 1, 'Nami': 2, 'Franky': 0, 'Sanji': 3, 'Zoro': 4}
因此,我们可以通过从返回的
Dict

print(dict\u map['buying\u encoded'])
输出:

       buying  buying_encoded
index                        
0       Luffy               1
1        Nami               2
3      Franky               0
4       Sanji               3
5        Zoro               4
{'buying_encoded': {'Luffy': 1, 'Nami': 2, 'Franky': 0, 'Sanji': 3, 'Zoro': 4}}
{'Luffy': 1, 'Nami': 2, 'Franky': 0, 'Sanji': 3, 'Zoro': 4}