Python OneHotEncoder拟合错误值错误:无法将字符串转换为浮点值:b

Python OneHotEncoder拟合错误值错误:无法将字符串转换为浮点值:b,python,scikit-learn,Python,Scikit Learn,ValueError:无法将字符串转换为浮点值:b sklearn.version=0.19.2 如果将OneHotEncoder中的dtype=np.int64dtype用于所需的输出,并且只支持数字类型,并且您正在传递np.str,则该选项也无法工作。这就是为什么会出现错误 from sklearn.preprocessing import OneHotEncoder enc = OneHotEncoder(dtype=np.str) enc.fit([['b', 'c', 'd'], ['

ValueError:无法将字符串转换为浮点值:b

sklearn.version=0.19.2


如果将OneHotEncoder中的dtype=np.int64

dtype用于所需的输出,并且只支持数字类型,并且您正在传递np.str,则该选项也无法工作。这就是为什么会出现错误

from sklearn.preprocessing import OneHotEncoder
enc = OneHotEncoder(dtype=np.str)
enc.fit([['b', 'c', 'd'], ['a', 'd', 'f']])
print enc.transform([['a', 'd', 'f']]).toarray()
试一试


OneHotEncoder希望您的输入数据在转换为虚拟变量之前是数字格式。因此,您可能希望首先使用LabelEncoder将分类数据转换为数字

另一种更简洁的方法是使用LabelBinarizer,其工作原理类似于使用LabelEncoder,然后使用OneHotEncoder:

enc = enc.fit([['b', 'c', 'd'], ['a', 'd', 'f']])
enc.data #--> array(['1.0', '1.0', '1.0'], dtype='<U32')
enc.data.tolist()


我得到正确的输出使用sklearn 0.21,这应该是sklearn的版本的问题,谢谢大家

我正在运行sklearn.uuuu版本uuu,'0.21.3'我想你的版本可能有一个bug,它在0.21.3上工作。你能升级吗?我刚刚卸载了0.21.3并安装了0.19.2,但得到了与你相同的错误。如果您尝试卸载pip3 install scikit learn==0.21.3,它应该可以工作。HotEncoder应该返回虚拟变量,因此我们不能期望它返回str格式作为输出。它在sklearn 0.21中被接受,感谢alldtype=np.int64也在工作,我使用的是sklearn版本“0.20.2”。。
enc = enc.fit([['b', 'c', 'd'], ['a', 'd', 'f']])
enc.data #--> array(['1.0', '1.0', '1.0'], dtype='<U32')
enc.data.tolist()

from sklearn.preprocessing import LabelBinarizer
encoder = LabelBinarizer()
encoder = encoder.fit(['a', 'd', 'f'])
print(encoder.transform(['a','d','f']))