您的代码的问题是:
np.unique(['class'])
您正在尝试查找 list 的唯一值['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', 'yes', 'no', 'no', '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