如何在使用 sklearns 的 LabelEncoder() 时检查分配给哪个标签的值?

Posted

技术标签:

【中文标题】如何在使用 sklearns 的 LabelEncoder() 时检查分配给哪个标签的值?【英文标题】:How can I check what value is assigned to what label while using sklearns' LabelEncoder()? 【发布时间】:2020-06-02 11:52:53 【问题描述】:

我正在将分类数据转换为用于机器学习目的的数值。

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

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

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

【问题讨论】:

【参考方案1】:

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

d1 = data.drop_duplicates('buying').drop('index', axis=1).set_index('buying')
print(d1)

输出:

        buying_encoded
buying
Luffy                1
Nami                 2
Franky               0
Sanji                3
Zoro                 4

要将此输出转换为字典,

dict_map = d1.to_dict()
print(dict_map)

输出:

'buying_encoded': 'Luffy': 1, 'Nami': 2, 'Franky': 0, 'Sanji': 3, 'Zoro': 4

所以我们可以通过从返回的Dict中获取buying_encoded属性来获取字典

print(dict_map['buying_encoded'])

输出:

'Luffy': 1, 'Nami': 2, 'Franky': 0, 'Sanji': 3, 'Zoro': 4

【讨论】:

【参考方案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

【讨论】:

以上是关于如何在使用 sklearns 的 LabelEncoder() 时检查分配给哪个标签的值?的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 sklearn 训练算法对数据点进行加权

如何在 sklearn 中使用 OneHotEncoder 的输出?

python:如何在sklearn中使用逻辑回归系数构建决策边界

如何在 sklearn 中编写自定义估算器并对其使用交叉验证?

如何在 Python 中使用 sklearn 对模型进行单一预测?

如何在 sklearn 的集成分类器中使用自定义分类器?