反向标签编码给出错误

Posted

技术标签:

【中文标题】反向标签编码给出错误【英文标题】:Reverse Label Encoding giving error 【发布时间】:2018-04-14 13:46:35 【问题描述】:

我使用标签编码器将分类数据标记为数字数据

data['Resi'] = LabelEncoder().fit_transform(data['Resi'])

但是当我试图找到它们是如何在内部映射时使用

list(LabelEncoder.inverse_transform(data['Resi']))

我遇到错误


TypeError                                 Traceback (most recent call last)
<ipython-input-67-419ab6db89e2> in <module>()
----> 1 list(LabelEncoder.inverse_transform(data['Resi']))

TypeError: inverse_transform() missing 1 required positional argument: 'y'

如何解决这个问题

样本数据

Resi
IP
IP
IP
IP
IP
IE
IP
IP
IP
IP
IP
IPD
IE
IE
IP
IE
IP
IP
IP

【问题讨论】:

你能分享一些数据吗? LabelEncoder.classes_ 显示了什么? @VivekKumar,更新了有问题的样本数据 【参考方案1】:

您可以查看label encoding:

>>> from sklearn import preprocessing
>>> le = preprocessing.LabelEncoder()
>>> le.fit([1, 2, 2, 6])
LabelEncoder()
>>> le.classes_
array([1, 2, 6])
>>> le.transform([1, 1, 2, 6])
array([0, 0, 1, 2])
>>> le.inverse_transform([0, 0, 1, 2])
array([1, 1, 2, 6])

对于您的解决方案:

from sklearn.preprocessing import LabelEncoder

le = LabelEncoder().fit(data['Resi'])
data['Resi'] = le.transform(data['Resi'])
print (data.tail())
    Resi
14     1
15     0
16     1
17     1
18     1

L = list(le.inverse_transform(data['Resi']))
print (L)
['IP', 'IP', 'IP', 'IP', 'IP', 'IE', 'IP', 'IP', 'IP', 
 'IP', 'IP', 'IPD', 'IE', 'IE', 'IP', 'IE', 'IP', 'IP', 'IP']

编辑:

d = dict(zip(le.classes_, le.transform(le.classes_)))
print (d)
'IE': 0, 'IPD': 2, 'IP': 1

【讨论】:

@jezral,我如何找到哪个标签对应哪个类别。即 IP =0,IPD=1,依此类推【参考方案2】:

您没有将 LabelEncoder() 对象存储在任何地方。您需要像这样保存它:

le = LabelEncoder()

然后拨打fit(),或transform()

import pandas as pd
import numpy as np
from sklearn.preprocessing import LabelEncoder

ls = ['IP', 'IP', 'IP', 'IP', 'IP', 'IE', 'IP', 'IP', 'IP', 'IP', 'IP', 'IPD', 'IE', 'IE', 'IP', 'IE', 'IP', 'IP', 'IP']

data = pd.DataFrame(np.array(ls).reshape(-1,1), columns=['Resi'])

le = LabelEncoder()
data['Resi'] = le.fit_transform(data['Resi'])

df['resi'] = LabelEncoder().fit_transform(df['resi'])
list(le.inverse_transform(data['Resi']))

Out: 
['IP',
 'IP',
 'IP',
 'IP',
 'IP',
 'IE',
 'IP',
 'IP',
 'IP',
 'IP',
 'IP',
 'IPD',
 'IE',
 'IE',
 'IP',
 'IE',
 'IP',
 'IP',
 'IP']

【讨论】:

如何找到哪个标签对应哪个类别【参考方案3】:
encoder = LabelEncoder()  
encoder.inverse_transform(data['Resi'])

【讨论】:

请始终将您的答案放在上下文中,而不仅仅是粘贴代码。有关详细信息,请参阅here。

以上是关于反向标签编码给出错误的主要内容,如果未能解决你的问题,请参考以下文章

CLGeocoder 反向地理编码失败,错误域=NSURLErrorDomain 代码=-1000 -

在 EC2 上部署的 docker 中使用 flask_oidc 和 nginx 反向代理的烧瓶应用程序在使用 keycloak 进行身份验证后给出未授权错误

Rails 中的 Spreadsheet.open 给出此错误“未知编码名称 - MACINTOSH”

我在 C++ 编码方面非常陌生,我无法设置 vs 代码给出错误 [关闭]

我可以从 HERE 的反向地理编码 API 调整返回的地址标签吗?

地理编码器在 ios 5 中给出了错误的地址