python - 一种热编码(映射值问题)
问题描述
我正在研究多标签文本分类。我正在为我的训练和测试标签进行一次热编码,因此首先我创建了一个包含所有标签的列表,即 8921 个唯一标签,然后我在列表的帮助下进行一次热编码,如下所示: 注意:以下代码:b 是我的 8921 标签列表,df['LABELS'] 如下所示:
b=['865.09','482.1','860.4','31.29', ......, '76.74', '76.92', '79.32']
LABELS
[532.40,493.20,V45.81,412,401.9,44.43]
[211.3,427.31,578.9,560.1,496,584.9,428.0,276.5]
[440.22, 492.8, 401.9, 714.0, 39.29, 88.48]
我的代码:
for label in b:
df[label]=np.where((df['LABELS'])==label,1,0)
df[['LABELS']+b].head()
我得到的输出:
LABELS 038.9 785.59 584.9 427.5 410.71 ..... 428.0 682.6 425.4
0 [038.9, 0 0 0 0 0 0 0 0
493.20,
V45.81,
682.6,
401.9,
44.43]
1 [472.5, 0 0 0 0 0 ..... 0 0 0
428.0,
578.9,
560.1,
496,
584.9]
期望的输出
LABELS 038.9 785.59 584.9 427.5 410.71 ..... 428.0 682.6 425.4
0 [038.9, 1 0 0 0 0 0 1 0
493.20,
V45.81,
682.6,
401.9,
44.43]
1 [472.5, 0 0 1 1 0 ..... 1 0 0
428.0,
578.9,
560.1,
496,
584.9]
请帮助我在迭代我的 df['LABEL'] 值时出错。
解决方案
它似乎df['LABELS']
是一个系列,每行都包含一个列表。所以np.where
可能会用一个标签检查这个列表。例如,它检查是否[532.40,493.20,V45.81,412,401.9,44.43] == '865.09'
明显返回False
.
除此之外,其中的标签b
是字符串,而其中的标签df['LABELS']
似乎不是。这也会导致False
as'865.09' == 865.09
不一样。
推荐阅读
- python - 如何在列表中的多个元组中查找元素的乘积
- gatsby - 在 Gatsby JS 中中止生成特定页面
- python - 没有root的服务器linux中的Python selenium和chrome
- go - 如何通过'go mod'分隔不同目录中的代码?
- python - 当您知道数据在集合中的位置时,python 最快的集合类型是什么?
- c# - 如何打包自定义 UWP 模板化控件以便在其他项目中重用,并可能供其他人使用?
- sql - SQL Server 中的 Last_Value
- powershell - PowerShell Foreach 循环,带有用于复制文件的用户帐户的变量
- microsoft-graph-api - Graph API:尝试创建团队时出现 BadGateway
- amazon-web-services - AWS 中路由执行/数据库更改的时间