线性回归预测

回归问题和分类问题的区别在于:其待预测的目标是连续变量。这里不详细介绍线性回归模型的具体算法,而是用一个预测波士顿房价的案例来使用LinearRegression模型和SGDRegressor模型,这里使用python3.6版本,Anaconda3进行编程实现。

from sklearn.datasets import load_boston
boston=load_boston()
print(boston.DESCR)

from sklearn.cross_validation import train_test_split
import numpy as np
X=boston.data
y=boston.target

X_train,X_test,y_train,y_test=train_test_split(X,y,random_state=33,test_size=0.25)
#分析回归目标值的差异
print('max:',np.max(boston.target),'\tmin:',np.min(boston.target),'\taverage:',np.mean(boston.target))

from sklearn.preprocessing import StandardScaler

ss_X=StandardScaler()
ss_y=StandardScaler()

#标准化处理
X_train=ss_X.fit_transform(X_train)
X_test=ss_X.fit_transform(X_test)
y_train=ss_y.fit_transform(y_train)
y_test=ss_y.fit_transform(y_test)

#LinearRegression回归模型,采用解析方法;SGDRegressor回归模型,采用随机梯度方法
from sklearn.linear_model import LinearRegression
lr=LinearRegression()
lr.fit(X_train,y_train)
lr_y_predict=lr.predict(X_test)

from sklearn.linear_model import SGDRegressor
sgdr=SGDRegressor()
sgdr.fit(X_train,y_train)
sgdr_y_predict=sgdr.predict(X_test)

#对两种模型进行性能评价
from sklearn.metrics import r2_score,mean_squared_error,mean_absolute_error

print('LinearRegression:',lr.score(X_test,y_test),'\t',r2_score(y_test,lr_y_predict),'\t',mean_squared_error(ss_y.inverse_transform(y_test),ss_y.inverse_transform(lr_y_predict)),'\t',mean_absolute_error(ss_y.inverse_transform(y_test),ss_y.inverse_transform(lr_y_predict)))
print('SGDRegression:',sgdr.score(X_test,y_test),'\t',r2_score(y_test,sgdr_y_predict),'\t',mean_squared_error(ss_y.inverse_transform(y_test),ss_y.inverse_transform(sgdr_y_predict)),'\t',mean_absolute_error(ss_y.inverse_transform(y_test),ss_y.inverse_transform(sgdr_y_predict)))

性能评价:

LinearRegression: 0.676930350524         0.676930350524          25.0512388542   3.51371562676
SGDRegression: 0.652214717758    0.652214717758          26.9677210148   3.57681549776

虽然,使用随机梯度下降估计参数的方法SGDRegressor在性能上不及使用解析方法的LinearRegression,但是在训练数据规模十分庞大时,它能够在不损失过多性能的前提下,节省大量计算时间。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值