回归问题与分类问题的区别在于:其待预测的目标是连续变量。比如:价格、降水量等等。
在分类的线性模型中,为了便于将原本在实数域上的计算结果映射到(0,1)区间,引入了逻辑斯蒂函数。而在线性回归问题中,由于预测目标直接是实数域上的数值,因此优化目标就更加简单,即最小化预测结果与真实值之间的差异。
为了学习到决定模型的参数,即系数w和b,仍然可以使用一种精确计算的解析算法和一种快速的随机梯度下降的估算方法。
数据描述:美国波士顿地区房价数据描述
#从sklearn.datasets导入波士顿房价数据读取器
from sklearn.datasets import load_boston
#江都区的房价数据存储到变量boston中
boston=load_boston()
#输出数据描述
print (boston.DESCR)
(2)数据分割
from sklearn.model_selection import train_test_split
import nmupy 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("the max target value is",np.max(boston.target))
print("the min target value is",np.min(boston.target))
print("the average target value is",np.mean(boston.target))
frojm sklearn.preprocessing import StandardScaler
ss_X=StandardScaler()
ss_y=StandardScaler()
X_train=ss_X.fit_transform(X_train)
X_test=ss_X.transform(X_test)
y_train=ss_y.fit_transform(y_train)
y_test=ss_y.transform(y_test)
(3)使用线性回归模型LinearRegression和SGDRegressor分别对美国波斯顿地区房价进行预测
#从sklearn.linear_model导入LinearRegression
from sklearn.linear_model import LinearRegression
#使用默认配置初始化线性回归器LinearRegression
ir=LinearRegression()
#使用训练数据进行参数估计
lr.fit(X_train,y_train)
#对测试数据进行回归预测
ir_y_predict=lr.predict(X_test)
#从sklearn.linear_model导入SGDRegression
from sklearn.linear_model import SGDRegression
#使用默认配置初始化线性回归器SGDRegression
sgdr=SGDRegression()
#使用测试数据进行参数估计
sgdr.fit(X_train,y_train)
#对测试数据进行回归预测
sgdr_y_predict=sgdr.predict(X_test)
(4)性能测评
不同于类别预测,我们不能苛求回归预测的数值结果要严格地与真实值相同。一般情况下,我们希望衡量预测值与真实值之间的差距。因此可以通过多种测评函数进行评价。其中最为直观的评价指标包括,平均绝对误差(Mean Absolute Error,MAE)以及均方误差(Mean Square Error,MSE),因为这也是线性回归模型所要优化的目标。
R-squared评价指标的计算公式 R^2=1-SS(res)/SS(tot)
(4)使用三种回归评价机制以及两种调用R-squared评价模块的方法,对本节模型的回归性能作评价
#使用LinearRegression模型自带的评估模块,并输出评估结果。
print('the value of default measurement of LinearRegression is',lr.score(X_test,y_test))
#从sklearn.metrics一次导入r2_score/mean_squared_error,mean_absolute_error用于回归性能的评估。
from sklearn.metrics import r2_score,mean_squared_error,mean_absolute_error
#使用r2_score模块,并输出评估结果。
print('the value of R-squares of LinearRegression is',r2_score(y_test,lr_y_predict))
#使用mean_squared_error模块,并输出评估结果。
print('the mean square error of LinearRegression is',mean_squared_error(ss_y,inverse_transform(y_test),ss_y.inverse_transform(lr_y_predict)))
#使用mean_absolute_error模块,并输出评估结果
print('the mean absolute error of LinearRegression is',mean_absolute_error(ss_y.inverse_transform(y_test),ss_y.inverse_transform(lr_y_predict)))
#使用SGDRegressor模型自带的评估模块,并输出评估结果。
print('the value of default measurement of SGDRegressor is',sgdr.score(X_test,y_test))
#使用r2_score模块,并输出评估结果
print('the value of R-squares of SGDRegressor is',r2_socre(y_test,sgdr_y_predict))
#使用mean_square_error模块并输出评估结果
print('the mean squared error of SGDRegressor is',mean_square_error(ss_y.inverse_transform(y_test),ss_y,inverse_transform(sgdr_y_preedict)))
#使用mean_absolute_error模块,并输出评估结果
print('the mean absolute error of SGDRegressor is',mean_absolute_error(ss_y.inverse_ransform(y_test),ss_y.inverse_transform(sgdr_y_predict)))