我正在研究auto-mpg数据集,我尝试预测一些值,但我遇到了这个问题:在使用sickit的linear_regression函数学习之前,我使用preprocessing.scale标准化我的数据 但在那之后,当我尝试预测一个值但总是假的时候,如果我没有标准化数据,它会给出一个确切的结果。 这是我的代码`输入代码:
import pandas as pd
import numpy as np
import statsmodels.api as sm
from sklearn import linear_model
df = pd.read_csv("http://archive.ics.uci.edu/ml/machine-learning- databases/auto-mpg/auto-mpg.data-original",
delim_whitespace = True, header=None,
names = ['mpg', 'cylinders', 'displacement', 'horsepower', 'weight', 'acceleration',
'model_year', 'origin', 'car_name'])
df.dropna(inplace=True)
params=['cylinders', 'displacement', 'horsepower', 'weight', 'acceleration','model_year']
pred=['mpg']
X=df[params]
y=df[pred]
X_scaled=preprocessing.scale(X)
y_scaled=preprocessing.scale(y)
regr = linear_model.LinearRegression(fit_intercept=True)
regr.fit(X_scaled,y_scaled)
y_hat=regr.predict(X_scaled)
Nouveau_X=np.array([6,225,100,3233,15.4,76]).reshape(1,-1)
print Nouveau_X
Nouveau_X=(Nouveau_X-np.mean(Nouveau_X))/(np.var(Nouveau_X)**0.5)
print Nouveau_X
print "la prediction de la consommation pour ce nouveau vecteur X est ", regr.predict(Nouveau_X)
#should be mainly equal to 22 but found -1.8 !!!
Plz帮助!!
答案 0 :(得分:0)
问题是我们不应该规范化y,只能规范化X并且它会起作用。