当OneHotEncoder遇上字符串类型的类别变量 ValueError:could not convert string to float

在对字符型的类别变量进行OneHotEncoder独热编码的时候,不懂大家有没有遇到过下面的问题

使用pandas中的get_dummies是可以编码的

当OneHotEncoder遇上字符串类型的类别变量 ValueError:could not convert string to float_第1张图片

但是用sklearn中的OneHotEncoder的时候,问题来了

当OneHotEncoder遇上字符串类型的类别变量 ValueError:could not convert string to float_第2张图片

会出现ValueError:could not convert string to float : 'white'  这个错误提示

一开始看到有些博文上说是因为导入的数据里面存在空格或者符号,处理掉就好了

但是这个数据是我自己打上去的,没有以上的问题

怎么办呢?搜了好久,看了很多博文还是没解决,耽误了不少时间

后面了解到OneHotEncoder是不能直接对字符串类型的文本变量进行编码的,要实现对字符串类型的类别变量进行独热编码还真得通过曲线救国的方式去做,方法如下:

先用 LabelEncoder() 转换成连续的数值型变量,再用 OneHotEncoder() 二值化

需要注意的是,OneHotEncoder() 要求输入的是 2-D array,所以在进行独热编码的时候要将特征矩阵转二维

当OneHotEncoder遇上字符串类型的类别变量 ValueError:could not convert string to float_第3张图片

 

你可能感兴趣的:(bug)