sklearn machine learning forest example ejemplo python python-3.x scikit-learn random-forest

python - machine - random state random forest



Python RandomForest-Error de etiqueta desconocida (3)

Tengo problemas para usar la función de ajuste RandomForest

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 usando 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)

Aquí está el error que recibo:

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

No encontré nada sobre este error de etiqueta, uso Python 3.5. Cualquier consejo sería de gran ayuda!


De acuerdo con esta publicación SO , los clasificadores necesitan etiquetas de cadenas o enteros .

En su lugar, podría considerar cambiar a un modelo de regresión (que podría adaptarse mejor a sus datos, ya que cada dato parece ser una flotación), 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())


Cuando está pasando datos de etiqueta (y) a rf.fit(X,y) , espera que y sea la lista 1D. Cortar el marco de Panda siempre da como resultado una lista 2D. Por lo tanto, el conflicto planteado en su caso de uso. Debe convertir la lista 2D proporcionada por Pandas DataFrame a una lista 1D como lo espera la función de ajuste.

Trate de usar la lista 1D primero:

Y_train = list(train.P1.values)

Si esto no resuelve el problema, puede intentar con la solución mencionada en el error MultinomialNB: "Tipo de etiqueta desconocido" :

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

Entonces tu 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)


puede ser un poco tarde para la fiesta, pero acabo de recibir este error y lo resolví asegurándome de que mi variable y fuera tipo (int) usando

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

Antes de hacer una división de prueba de trenes, también como otros han dicho, parece que su problema encaja mejor con un RFReg que con un RF