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() ValueError: could not convert string to float: bsklearn.version = 0.19.2It can't work too if dtype = np.int64
4 Réponses :
dtype dans un onehotencoder est utilisé pour la sortie souhaitée et seul le type de numéro est pris en charge et vous passez np.str c'est pourquoi vous obtenez une erreur
DTYPE = NP.INT64 fonctionne également, j'utilise Sklearn Version '0.20.2' ..
Essayez
Je couronne Sklearn .__ Version__, '0.21.3' Je pense que vous pouvez avoir un bogue dans votre version, cela fonctionne sur 0.21.3. Êtes-vous capable de mettre à niveau?
OneHotencoder s'attend à ce que vos données d'entrée soient au format numérique avant de les convertir en variables factices. Ainsi, vous voudrez peut-être que Fit_Transform utilise le labelEncoder pour convertir les données catégoriques en chiffres en premier.
Un autre moyen de nater de faire cela consiste à utiliser LabelBinarizer, qui fonctionne comme à l'aide de labelenCoder, puis d'un onehotencoder: p>
Je reçois une sortie correcte avec Sklearn 0.21, cela devrait être un problème pour la version de Sklearn, merci à tous! p>
Je viens de désinstaller 0,21,3 et installé 0.19.2 et obtenu la même erreur que votre gettez. Si vous essayez de désinstaller que Pip3 Installez SCIKIT-HOPR == 0.21.3, cela devrait fonctionner
Unhotencoder est censé renvoyer des variables factices, nous ne pouvons donc pas nous attendre à ce qu'il retourne au format Str en tant que sortie.
Il est accepté à Sklearn 0.21, merci à tous