假设我有一个带有以下列名的Pandas数据框:'age'(例如33、26、51等)、'seniority'(例如'junior'、'senior'等)、'gender'(例如'male'、'female')和'salary'(例如32000、40000、64000等)。我想将'seniority'分类变量转换为One-Hot编码的值。因此,我正在执行以下操作:
from sklearn.preprocessing import LabelEncoder
label_encoder = LabelEncoder()
data['seniority'] = label_encoder.fit_transform(data['seniority'])
from sklearn.preprocessing import OneHotEncoder
one_hot_encoder = OneHotEncoder(categorical_features=[1])
data = one_hot_encoder.fit_transform(data.values)
但是我遇到了这个错误
ValueError: could not convert string to float: 'gender'
在行上
data = one_hot_encoder.fit_transform(data.values)
然而,我已明确指定 categorical_features=[1]
,因此仅应考虑该热编码的第一列(seniority
)。
除了删除“gender”列之外,我怎样才能解决这个错误?
过去我使用过 pandas.get_dummies
,并没有这个问题。
OneHotEncoder
不再要求输入为整数。请参见此处:https://scikit-learn.org/stable/modules/preprocessing.html#encoding-categorical-features - Pablo