我尝试用一个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
谁能帮我解决这个问题?
如果执行以下操作,则会用错误形状的数据错误地拟合模型:
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])
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句