Przewiduj pojedynczą wartość za pomocą scikit-learn prowadzi do ValueError
Nov 17 2020
Próbuję zrobić kilka podstawowych rzeczy, z jedną zmienną X i jedną zmienną Y. Pojedynczy Przewiduję z jedną kolumną, muszę przekształcić X w tablicę 2D. Teraz chcę przewidzieć pojedynczą wartość, ale mój model pozwala mi przewidzieć tylko tablicę o długości 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: Liczba funkcji modelu musi być zgodna z danymi wejściowymi. Model n_features to 32, a wejściowe n_features to 1
Czy ktoś może mi pomóc rozwiązać ten problem?
Odpowiedzi
2 StupidWolf Nov 17 2020 at 17:41
Źle dopasowałeś model danymi o niewłaściwym kształcie, jeśli:
X = df["mpg"].values.reshape(1, -1)
y = df["cyl"].values.reshape(1, -1)
X.shape
(1, 32)
Oznacza to, że X to 1 obserwacja i 32 predyktory ... podczas gdy mamy 1 predyktor i 32 obserwacje.
Więc powinno być:
X = df[["mpg"]]
y = df["cyl"]
clf = RandomForestClassifier(random_state=0)
clf.fit(X, y)
Następnie prognozuj, używając:
clf.predict(np.array(35).reshape(-1,1))
array([4])