我在训练集中使用标准化的预测器来训练模型。当我在测试集中预测结果时,如何将结果的比例反转为原始比例?看起来我预测了测试结果的标准化分数。
请参阅下面的可重现的 R 代码和输出:
> mtcars
> str(mtcars)
'data.frame': 32 obs. of 11 variables:
$ mpg : num 21 21 22.8 21.4 18.7 18.1 14.3 24.4 22.8 19.2 ...
$ cyl : num 6 6 4 6 8 6 8 4 4 6 ...
$ disp: num 160 160 108 258 360 ...
$ hp : num 110 110 93 110 175 105 245 62 95 123 ...
$ drat: num 3.9 3.9 3.85 3.08 3.15 2.76 3.21 3.69 3.92 3.92 ...
$ wt : num 2.62 2.88 2.32 3.21 3.44 ...
$ qsec: num 16.5 17 18.6 19.4 17 ...
$ vs : num 0 0 1 1 0 1 0 1 1 1 ...
$ am : num 1 1 1 0 0 0 0 0 0 0 ...
$ gear: num 4 4 4 3 3 3 3 4 4 4 ...
$ carb: num 4 4 1 1 2 1 4 2 2 4 ...
> set.seed(3422143)
> train.index=sample(32,20)
> train=mtcars[train.index,]
> test=mtcars[-train.index,]
> fit=lm(scale(hp)~scale(mpg)+scale(qsec)+scale(am),train)
> summary(fit)
Call:
lm(formula = scale(hp) ~ scale(mpg) + scale(qsec) + scale(am),
data = train)
Residuals:
Min 1Q Median 3Q Max
-0.66237 -0.37891 0.08107 0.27530 0.82087
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 4.331e-16 9.680e-02 0.000 1.00000
scale(mpg) -3.746e-01 2.205e-01 -1.699 0.10873
scale(qsec) -4.000e-01 1.157e-01 -3.457 0.00324 **
scale(am) -3.888e-01 2.073e-01 -1.876 0.07905 .
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Residual standard error: 0.4329 on 16 degrees of freedom
Multiple R-squared: 0.8422, Adjusted R-squared: 0.8126
F-statistic: 28.46 on 3 and 16 DF, p-value: 1.19e-06
> predict(fit,test)
Mazda RX4 Mazda RX4 Wag Hornet 4 Drive Hornet Sportabout Duster 360 Merc 240D Merc 280
-0.02303164 -0.16196109 -0.01044866 0.73605764 1.26694385 -0.31174766 0.39144301
Lincoln Continental Toyota Corona Ford Pantera L Ferrari Dino Maserati Bora
0.98680939 -0.15727132 0.74466200 0.28549328 0.76315171