Python RandomForest – Unknown Error de etiqueta

Tengo problemas con el uso de RandomForest ajuste de la función de

Este es mi conjunto de entrenamiento

         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)

Quiero predecir P1 gracias a todas las otras variables utilizando sklearn.conjunto 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)

Aquí está el error:

ValueError: Unknown label type: array([[  0. ],
       [  0. ],
       [  0. ],
       ..., 
       [ 49.4],
       [ 47.4],

No he encontrado nada acerca de este error de etiqueta, puedo usar Python 3.5.
Cualquier consejo sería de gran ayuda !

la versión de sklearn usted está utilizando?

OriginalEl autor Dragonfly | 2015-12-12

3 respuestas

  1. 21

    Cuando se pasa de la etiqueta (s) de datos para rf.fit(X,y), espera y a 1D lista. Rebanar el Panda marco siempre el resultado de un 2D de la lista. Así, el conflicto planteado en su caso de uso. Usted necesita para convertir el 2D lista proporcionada por los pandas DataFrame a una 1D lista de espera por el ajuste de la función.

    Trate de usar 1D primera lista:

    Y_train = list(train.P1.values)

    Si esto no soluciona el problema, puedes probar con la solución mencionada en MultinomialNB error: “error Desconocido Tipo de Etiqueta”:

    Y_train = np.asarray(train['P1'], dtype="|S6")

    Por lo que su código se convierte,

    colsRes = ['P1']
    X_train = train.drop(colsRes, axis = 1)
    Y_train = np.asarray(train['P1'], dtype="|S6")
    rf = RandomForestClassifier(n_estimators=100)
    rf.fit(X_train, Y_train)
    Entiendo el problema ahora, pero el código no hacer el trabajo. Estoy buscando otras maneras de hacer la conversión
    Puedes intentar con Y_train = list(train.P1.values)? Me permite conocer el mensaje de error si hay alguna
    Mensaje de Error no cambia. Y_train forma se ve bien a pesar de impresión(Y_train) [ 0. 0. 0. …, 49.4 47.4 45.4] Y le da forma (34208) – a #34208 es el número de filas
    Gracias por el mensaje de error. Puedes intentar esto: Y_train = np.asarray(train['P1'], dtype="|S6")
    Funcionó, muchas gracias ! Mi PC se estrelló tres veces porque no podía apoyar el cálculo, aunque…

    OriginalEl autor Gurupad Hegde

  2. 9

    Según de esta MANERA posterior a la, Clasificadores necesidad entero o una cadena de etiquetas.

    Usted podría considerar la posibilidad de cambiar a un modelo de regresión en lugar de (que podría se adapte mejor a tus datos, ya que cada dato que parece ser un float), así:

    X_train = train.drop('P1', axis=1)
    Y_train = train['P1']
    rf = RandomForestRegressor(n_estimators=100)
    rf.fit(X_train.as_matrix(), Y_train.as_matrix())
    Gracias, pero no diferencia
    Por lo que entiendo acerca de completar un informe de error, a partir de la línea de donde yo llamo el ‘ajuste’ de la función del informe: rf.ajuste(X_train, Y_train) Archivo “C:\Anaconda3\lib\site-packages\sklearn\ensemble\forest.py”, la línea 235, en el ajuste y, expanded_class_weight = auto._validate_y_class_weight(y) …
    He probado con el código actualizado, no cambio
    Mirando hacia el problema, como en todos los campos del conjunto de entrenamiento son los flotadores. Entonces, yo creo que regresión ser más útiles que el clasificador.
    Regresión funciona bien! Muchas gracias ! He utilizado RandomForestRegressor en lugar de ExtraTreesRegressor. Voy a tratar de averiguar la diferencia entre los dos

    OriginalEl autor N. Wouda

  3. 1

    puede ser un poco tarde a la fiesta, pero yo acabo de recibir este error y resuelto por hacer que mis y variable de tipo(int) utilizando

     y = df['y_variable'].astype(int) 

    antes de hacer un tren de prueba de división, también como otros han dicho que el problema parece mejor ajuste con un RFReg en lugar de RF

    ‘y_variable’ ortografía

    OriginalEl autor RunD.M.C.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *