资源简介
代码功能介绍在《初探 岭回归 LASSO回归 (python 实现)》中有详细的介绍,文章中若有不正确的,也希望能够不吝赐教,相互学习。
代码片段和文件信息
# -*- coding:utf-8 -*-
# @FileName :Ridge&Lasso.py
# @Time :2020/9/26 20:55
# @Author :ChuYali
import numpy as np
import matplotlib.pyplot as plt
from sklearn.linear_model import RidgeRidgeCVLassoLassoCV
from sklearn.metrics import mean_squared_error
#
# 实现岭回归和Lasso回归,并进行对比
# 问题描述:模型 y=x*b+a 。给定x,y预测b。
# 整体思路:
# 0. 初始化,设置全局参数:n为数据总量,dim为维度
# 1。随机生成n*dim维的x,dim*1维的系数b和a,求出y值
# 2. 随机生成模型参数Lambda,确定回归模型,得到模型系数B和Lambda的图像
# 3. 通过验证,确定最优回归模型的Lambda值
# 4. 基于最优的Lamma建模,并给定xy 确定系数_B
# 5. 评估真实系数b和模型系数B的MSE
#
seed = np.random.seed(1) # random seed
def ini_data(ndim):
‘‘‘
初始化数据
:param n: 数据总量
:param dim: 参数维度
:return: x,y,b(系数)
‘‘‘
x = np.random.uniform(-100100(ndim))
b = np.random.rand(dim)
a = np.random.rand(n)
y=np.matmul(xb)+a
return xyb
def reg_model_Ridge(xyalphasdim):
‘‘‘
;岭回归估计
:param x:
:param y:
:param alphas: 随机生成多个模型参数Lambda
:param dim:维度
:return: ridge_B 最优模型的系数
‘‘‘
model_coff=[]
for alpha in alphas:
ridge = Ridge(alpha=alphanormalize=True)
ridge.fit(xy)
model_coff.append(ridge.coef_)
# if dim<=10:
plot_data(alphas model_coff ‘Log Alpha‘ ‘Cofficients‘ ‘alpha系数与岭回归系数的关系 dim=‘+str(dim))
# 交叉验证,找到模型最优的Lambda值
ridge_cv= RidgeCV(alphas=alphasnormalize=Truescoring=“neg_mean_absolute_error“ cv=5)
ridge_cv.fit(xy)
ridge_best_lambda = ridge_cv.alpha_
# 建立最优模型
ridge = Ridge(alpha=ridge_best_lambdanormalize=True)
ridge.fit(xy)
# 得到最优模型的系数
ridge_B = ridge.coef_
return ridge_B
def reg_model_LASSO(xyalphasdim):
‘‘‘
;LASSO 回归
:param x:
:param y:
:
- 上一篇:python简单神经网络
- 下一篇:python大作业 五子棋 人人对战
评论
共有 条评论