Python RandomForest - Inconnu label Erreur
J'ai de la difficulté à l'aide de RandomForest ajustement de la fonction
C'est mon jeu de formation
P1 Tp1 IrrPOA Gz Drz2
0 0.0 7.7 0.0 -1.4 -0.3
1 0.0 7.7 0.0 -1.4 -0.3
2 ... ... ... ... ...
3 49.4 7.5 0.0 -1.4 -0.3
4 47.4 7.5 0.0 -1.4 -0.3
... (10k rows)
Je veux prédire P1 merci à toutes les autres variables à l'aide de sklearn.ensemble RandomForest
colsRes = ['P1']
X_train = train.drop(colsRes, axis = 1)
Y_train = pd.DataFrame(train[colsRes])
rf = RandomForestClassifier(n_estimators=100)
rf.fit(X_train, Y_train)
Voici l'erreur que je reçois:
ValueError: Unknown label type: array([[ 0. ],
[ 0. ],
[ 0. ],
...,
[ 49.4],
[ 47.4],
Je n'ai rien trouvé à propos de cette erreur de label, j'utilise Python 3.5.
Tout conseil serait d'une grande aide !
la version de sklearn vous utilisez?
OriginalL'auteur Dragonfly | 2015-12-12
Vous devez vous connecter pour publier un commentaire.
Lorsque vous êtes de passage de l'étiquette (y) les données à
rf.fit(X,y)
, il s'attend à y être 1D liste. Le découpage de Panda cadre toujours un 2D liste. Ainsi, les conflits soulevés dans votre cas d'utilisation. Vous avez besoin de convertir la 2D liste fournie par les pandas DataFrame à un 1D liste comme prévu par l'ajustement de la fonction.Essayez d'utiliser 1D liste:
Si cela ne résout pas le problème, vous pouvez essayer avec la solution mentionnée dans MultinomialNB d'erreur: "Unknown Type d'Étiquette":
De sorte que votre code devient,
Pouvez-vous essayer avec
Y_train = list(train.P1.values)
? Laissez-moi savoir le message d'erreur si il n'y a aucuneMessage d'erreur ne change pas. Y_train forme semble si bon d'impression(Y_train) [ 0. 0. 0. ..., 49.4 47.4 45.4] forme Y donne (34208,) - #34208 est le nombre de lignes
Merci pour le message d'erreur. Pouvez-vous essayer ceci:
Y_train = np.asarray(train['P1'], dtype="|S6")
Cela a fonctionné, merci beaucoup ! Mon PC s'est écrasé trois fois, car il ne pouvait pas soutenir le calcul...
OriginalL'auteur Gurupad Hegde
Vous pourriez envisager de passer à un modèle de régression à la place (qui pourrait mieux répondre à vos données, comme chaque donnée semble être un float), comme suit:
Ce que je comprends au sujet de remplir un rapport d'erreur, à partir de la ligne où j'appelle la bonne fonction à Partir du rapport: rf.ajustement(X_train, Y_train) Fichier "C:\Anaconda3\lib\site-packages\sklearn\ensemble\forest.py", la ligne 235, dans l'ajustement de y, expanded_class_weight = auto._validate_y_class_weight(y) ...
J'ai essayé avec ton code mis à jour, pas de changement
La recherche dans le problème, comme tous les champs de l'ensemble d'apprentissage sont des flotteurs. Donc, je pense que régression être plus utile que le classificateur.
Régression fonctionne très bien! Merci beaucoup ! J'ai utilisé RandomForestRegressor au lieu de ExtraTreesRegressor. Je vais essayer de comprendre la différence entre ces deux
OriginalL'auteur N. Wouda
peut-être un peu en retard à la fête, mais j'ai juste eu cette erreur et résolu en faisant en sorte que ma variable y est de type(int) à l'aide de
avant de faire un train de test de split, aussi, comme d'autres l'ont dit votre problème semble mieux adaptée avec un RFReg plutôt RF
OriginalL'auteur RunD.M.C.