我有一个数据集,其中包含以下分类数据colname。 使用sklearn执行one_hot_encoding时,出现错误。
def ohe_encode(train, test, index):
Onehot = OneHotEncoder(categorical_features='all', handle_unknown='error')
x_train_1 = train
x_test_1 = test
colname = df.columns[index]
Onehot.fit(train[colname].astype(str))
x_trans = Onehot.transform(train[columnns].astype(str))
new_features = Onehot.transform(test[colname].astype(str))
return (x_transform, new_features)
屏幕显示错误,
ValueError: could not convert string to float: 'yes'
无法找到错误原因。
预先感谢
答案 0 :(得分:0)
来自sklearns OneHotEncoder documentation(强调我的):
使用“一键通”(又称“一键通”)方案对整数特征进行编码。
此变压器的输入应为整数矩阵,表示 分类(离散)特征所采用的值。
但是,您输入原始分类值,例如。像“是”和“否”之类的字符串。因此,您会收到ValueError。
您需要首先factorize数据,这意味着您需要将字符串转换为分类数字(整数)。然后,您可以进行一种热编码。