sklearn-ValueError:无法将字符串转换为浮点型:'是'

时间:2018-09-03 15:08:49

标签: machine-learning scikit-learn

我有一个数据集,其中包含以下分类数据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'

无法找到错误原因。

预先感谢

1 个答案:

答案 0 :(得分:0)

来自sklearns OneHotEncoder documentation强调我的):

  

使用“一键通”(又称“一键通”)方案对整数特征进行编码。

     

此变压器的输入应为整数矩阵,表示   分类(离散)特征所采用的值。

但是,您输入原始分类值,例如。像“是”和“否”之类的字符串。因此,您会收到ValueError。

您需要首先factorize数据,这意味着您需要将字符串转换为分类数字(整数)。然后,您可以进行一种热编码。