当我尝试从sklearn库学习One HotEncoder时,我尝试了scikit-learn.org提供的following sample code。但是这段代码给了我错误,我无法调试它。
from sklearn.preprocessing import OneHotEncoder
enc = OneHotEncoder(handle_unknown='ignore')
X = [['Male', 1], ['Female', 3], ['Female', 2]]
enc.fit(X)
我收到此错误:
array = np.array(array, dtype=dtype, order=order, copy=copy)
ValueError: could not convert string to float: 'Male'
我假设如果此代码是在scikit-learn.org上编写的,那么问题一定出在我的环境中,或者我在这里做错了什么。
答案 0 :(得分:1)
可以说它与您的scikit-learn版本有关。从版本0.20开始,OneHotEncoder
可以处理字符串,而在较早的版本中则不是这种情况-请注意,v0.19的文档没有提供相同的示例:
https://scikit-learn.org/0.19/modules/generated/sklearn.preprocessing.OneHotEncoder.html
版本0.20.2(12月18日)的release notes特别提到:
主要功能:扩展了
preprocessing.OneHotEncoder
,以允许使用一键(或虚拟)编码方案将分类字符串特征编码为数字数组
因此,将scikit-learn升级到当前版本(0.20),就可以了。