Predecir un valor único con scikit-learn conduce a ValueError
Nov 17 2020
Intento hacer algunas cosas básicas de sklearn, con una sola variable X y una sola variable Y. Solo predigo con una sola columna, tengo que transformar X en una matriz 2D. Ahora quiero predecir un valor único, pero mi modelo solo me permite predecir una matriz de longitud 32.
import pandas as pd
from sklearn.ensemble import RandomForestClassifier
import numpy as np
df = pd.read_csv("https://gist.githubusercontent.com/seankross/a412dfbd88b3db70b74b/raw/5f23f993cd87c283ce766e7ac6b329ee7cc2e1d1/mtcars.csv")
df
X = df["mpg"].values.reshape(1, -1)
y = df["cyl"].values.reshape(1, -1)
y
clf = RandomForestClassifier(random_state=0)
clf.fit(X, y)
clf.predict([[35]])
ValueError: el número de características del modelo debe coincidir con la entrada. El modelo n_features es 32 y la entrada n_features es 1
¿Puede alguien ayudarme a solucionar este problema?
Respuestas
2 StupidWolf Nov 17 2020 at 17:41
Ajustó el modelo incorrectamente con datos de forma incorrecta, si lo hace:
X = df["mpg"].values.reshape(1, -1)
y = df["cyl"].values.reshape(1, -1)
X.shape
(1, 32)
Esto significa que X es 1 observación y 32 predictores ... mientras que lo que tiene es 1 predictor y 32 observaciones.
Entonces debería ser:
X = df[["mpg"]]
y = df["cyl"]
clf = RandomForestClassifier(random_state=0)
clf.fit(X, y)
Luego predice usando:
clf.predict(np.array(35).reshape(-1,1))
array([4])