scikit-learn으로 단일 값을 예측하면 ValueError가 발생합니다.
Nov 17 2020
단일 X 변수와 단일 Y 변수로 기본적인 sklearn 작업을 수행하려고합니다. 단일 열로 예측하면 X를 2D 배열로 변환해야합니다. 이제 단일 값을 예측하고 싶지만 내 모델에서는 길이가 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 : 모델의 기능 수가 입력과 일치해야합니다. 모델 n_features는 32이고 입력 n_features는 1입니다.
누구든지이 문제를 해결하도록 도와 줄 수 있습니까?
답변
2 StupidWolf Nov 17 2020 at 17:41
다음과 같은 경우 잘못된 형태의 데이터로 모델을 잘못 피팅 한 것입니다.
X = df["mpg"].values.reshape(1, -1)
y = df["cyl"].values.reshape(1, -1)
X.shape
(1, 32)
이것은 X가 1 개의 관측치와 32 개의 예측 자라는 것을 의미합니다. 반면에 당신이 가진 것은 1 개의 예측 자와 32 개의 관측치입니다.
따라서 다음과 같아야합니다.
X = df[["mpg"]]
y = df["cyl"]
clf = RandomForestClassifier(random_state=0)
clf.fit(X, y)
그런 다음 다음을 사용하여 예측합니다.
clf.predict(np.array(35).reshape(-1,1))
array([4])