Preveja um único valor com leads de scikit-learn para ValueError
Nov 17 2020
Tento fazer algumas coisas básicas do sklearn, com uma única variável X e uma única variável Y. Prevejo único com uma única coluna, tenho que transformar X em um array 2D. Agora quero prever um único valor, mas meu modelo só me permite prever uma matriz de comprimento de 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: o número de recursos do modelo deve corresponder à entrada. O modelo n_features é 32 e a entrada n_features é 1
Alguém pode me ajudar a resolver este problema?
Respostas
2 StupidWolf Nov 17 2020 at 17:41
Você ajustou o modelo incorretamente com dados de formato errado, se você:
X = df["mpg"].values.reshape(1, -1)
y = df["cyl"].values.reshape(1, -1)
X.shape
(1, 32)
Isso significa que X é 1 observação e 32 preditores .. enquanto o que você tem é 1 preditor e 32 observações.
Então deveria ser:
X = df[["mpg"]]
y = df["cyl"]
clf = RandomForestClassifier(random_state=0)
clf.fit(X, y)
Em seguida, preveja usando:
clf.predict(np.array(35).reshape(-1,1))
array([4])
O que significa um erro “Não é possível encontrar o símbolo” ou “Não é possível resolver o símbolo”?
Christopher Nolan uma vez se arrependeu de ter lido o 'roteiro de Pulp Fiction' de Quentin Tarantino