python+sklearn实现岭回归

本文所用文件的链接

链接:https://pan.baidu.com/s/1RWNVHuXMQleOrEi5vig_bQ
提取码:p57s

岭回归

  普通的线性回归模型使用基于梯度下降的最小二乘法, 在最小化损失函数的前提下, 寻找最优模型参数. 在此过程中, 包括少数的异常样本在内的全部训练数据都会对最终的模型参数造成相等程度的影响, 并且异常值对模型所带来的影响无法在训练过程中被识别出来. 为此, 岭回归在模型迭代过程中增加了正则项, 用来限制模型参数对异常样本的匹配程度, 进而提高模型面对大多数正常样本的拟合精度.

import sklearn.linear_model as lm
model = lm.Ridge(
    正则强度, 
    fit_intercept=是否训练截距, 
	max_iter=最大迭代次数
)
model.fit(输入,输出)
预测输出 = model.predict(输入)

  该案例利用线性回归和领回归分别训练了同一组数据,很明显,岭回归能够不受异常数据的影响,训练的直线更符合大多数数据的变换规律。而线性回归则明显受到了异常数据的影响,这个问题在机器学习中称为过拟合,后续的复杂模型中会有各种方式来避免过拟合,而岭回归就是防止线性回归过拟合的一种方式。

"""
岭回归
"""
import numpy as np
import sklearn.linear_model as lm
import matplotlib.pyplot as mp
import sklearn.metrics as sm

x ,y = np.loadtxt('ml_data/abnormal.txt', 
	delimiter=',', usecols=(0,1), 
	unpack=True)
# 把x改为n行1列  这样才可以作为输入交给模型训练
x = x.reshape(-1, 1)
mp.figure('Ridge Regression', facecolor='lightgray')
mp.title('Ridge Regression', fontsize=18)
mp.xlabel('X', fontsize=16)
mp.ylabel('Y', fontsize=16)
mp.tick_params(labelsize=12)
mp.grid(linestyle=':')
mp.scatter(x, y, s=60, c='dodgerblue', 
	label='Points')

# 使用线性回归, 绘制回归线
model = lm.LinearRegression()
model.fit(x, y)
pred_y = model.predict(x)
mp.plot(x, pred_y, c='orangered', 
		label='Linear Regression Line')

# 使用岭回归, 绘制回归线
model = lm.Ridge(150, fit_intercept=True, 
	    max_iter=1000)
model.fit(x, y)
pred_y = model.predict(x)
mp.plot(x, pred_y, c='limegreen', 
		label='Ridge Regression Line')


mp.legend()
mp.show()

在这里插入图片描述

  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值