Python sklearn OneHotEncoder已断开-值错误:无法将字符串转换为浮点
我从sklearn OneHotEncoder纪录片页面中选取了这个例子:Python sklearn OneHotEncoder已断开-值错误:无法将字符串转换为浮点,python,scikit-learn,Python,Scikit Learn,我从sklearn OneHotEncoder纪录片页面中选取了这个例子: from sklearn.preprocessing import OneHotEncoder enc = OneHotEncoder(handle_unknown='ignore') X = [['Male', 1], ['Female', 3], ['Female', 2]] enc.fit(X) enc.categories_ enc.transform([['Female', 1], ['Male', 4]])
from sklearn.preprocessing import OneHotEncoder
enc = OneHotEncoder(handle_unknown='ignore')
X = [['Male', 1], ['Female', 3], ['Female', 2]]
enc.fit(X)
enc.categories_
enc.transform([['Female', 1], ['Male', 4]]).toarray()
enc.inverse_transform([[0, 1, 1, 0, 0], [0, 0, 0, 1, 0]])
enc.get_feature_names()
我得到:
ValueError:无法将字符串转换为浮点:“男性”
当我用数字替换“男性”和“女性”时:
X=[[5',1],[4',3],[4',2]]
我得到:
AttributeError:“OneHotEncoder”对象没有属性“categories”
我的sklearn版本是0.19.1
有人能复制这个吗?正如维韦克·库马尔(Vivek Kumar)所说,0.19.1太旧了。
升级到版本0.20.1解决了问题您使用的是旧版本,其中OneHotEncoder无法直接将字符串转换为一个热编码功能,并且您似乎正在按照教程学习最新的功能。您需要先使用LabelEncoder。或者升级您的scikit learn,然后使用OneHotEncoder。尝试先使用LabelEconder,然后对其应用一个热编码result@VivekKumar你是对的。升级到0.20.1后,它可以工作。我没想到他们改变了OneHotEncoder接口。但是非常感谢你。