如何解决如何在python中将名义数据转换为数字?
我使用的是二进制分类数据集。我想将名义数据转换为数字。我该怎么办?
age | class
------------
1 | no
2 | yes
3 | no
4 | yes
5 | no
6 | no
7 | no
8 | yes
9 | no
10 | y
代码:
mapping = {label:idx for idx,label in enumerate(np.unique(['class']))}
df['class'] = df['class'].map(mapping)
所需的输出:{'no':0 'yes':1}
解决方法
你的代码的问题是:
np.unique(['class'])
您正在尝试查找列表 ['class']
的唯一值,它只是一个值,您应该将其更改为:
np.unique(df['class'])
其中包含 class
列的所有不同值
但在此之前,您应该将嘈杂的数据 y
替换为 yes
:
df['class'] = df['class'].replace('y','yes')
mapping
变量现在具有您想要的输出:
{'no':0 'yes':1}
完整代码:
import numpy as np
import pandas as pd
df = pd.DataFrame(['no','yes','no','y'],columns=['class'])
df['class'] = df['class'].replace('y','yes') # replace your noisy data
mapping = {label:idx for idx,label in enumerate(np.unique(df['class']))} # make your mapping dict
df['class'] = df['class'].map(mapping) # map your class
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。