第⼗三节岭回归(L2正则化)解决过拟合问题
岭回归sklearn的API:from sklearn.linear_model import Ridge
通过调节模型中的参数alpha的值来调节正则化的⼒度,⼒度越⼤⾼次项的系数越⼩,逐渐趋近于0,但是不会等于0,alpha⼀般去0-1之间的⼩数,或者1-10之间的整数,可以通过⽹格搜索去寻最优参数
from sklearn.datasets import load_boston
from sklearn.linear_model import LinearRegression, SGDRegressor,Ridge
del_selection import train_test_split
from sklearn.preprocessing import StandardScaler
ics import mean_squared_error  # 回归⽅程性能评价均⽅误差API
def boston_linear():
'''线性回归预测波⼠顿房价'''
# 获取数据
bl = load_boston()
# 分割训练集和测试集
x_train, x_test, y_train, y_test = train_test_split(bl.data, bl.target, test_size=0.25)
# 进⾏标准化,特征值和⽬标值都需要进⾏标准化处理
# 特征值
std_x = StandardScaler()
x_train = std_x.fit_transform(x_train)
正则化最小二乘问题x_test = std_x.fit_transform(x_test)
# ⽬标值,shape(-1, 1)将⼀维数组转换成⼆维数组
std_y = StandardScaler()
y_train = std_y.fit_transform(shape(-1, 1))
y_test = std_y.fit_transform(shape(-1, 1))
# 预测
# 最⼩⼆乘法求解结果
lr = LinearRegression()
lr.fit(x_train, y_train)
# 系数
f_)
# 预测测试集的房⼦价格
lr_y_predict = std_y.inverse_transform(lr.predict(x_test))
print('最⼩⼆乘法测试集⾥⾯每个房⼦的价格', lr_y_predict)
# ⽤均⽅误差对⼀个回归模型来进⾏评价,越⼩越好,mean_squared_error第⼀个参数是测试集的真实值,第⼆个参数数测试集的预测值
print('最⼩⼆乘法的均⽅误差:', mean_squared_error(std_y.inverse_transform(y_test), lr_y_predict))
# 梯度下降
sgd = SGDRegressor()
sgd.fit(x_train, y_train)
# 系数
f_)
# 预测测试集的房⼦价格
sgd_y_predict = std_y.inverse_transform(sgd.predict(x_test))
print('梯度下降测试集⾥⾯每个房⼦的价格', sgd_y_predict)
# ⽤均⽅误差对⼀个回归模型来进⾏评价,越⼩越好,mean_squared_error第⼀个参数是测试集的真实值,第⼆个参数数测试集的预测值
print('梯度下降法的均⽅误差:', mean_squared_error(std_y.inverse_transform(y_test), sgd_y_predict))
# 岭回归进⾏房价预测,alpha正则化⼒度参数
rd = Ridge(alpha=1.0)
rd.fit(x_train, y_train)
# 系数
f_)
# 预测测试集的房⼦价格
rd_y_predict = std_y.inverse_transform(rd.predict(x_test))
print('岭回归测试集⾥⾯每个房⼦的价格', rd_y_predict)
# ⽤均⽅误差对⼀个回归模型来进⾏评价,越⼩越好,mean_squared_error第⼀个参数是测试集的真实值,第⼆个参数数测试集的预测值print('岭回归的均⽅误差:', mean_squared_error(std_y.inverse_transform(y_test), rd_y_predict))
if__name__ == "__main__":
boston_linear()

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。