资源简介

代码功能介绍在《初探 岭回归 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:
    :

评论

共有 条评论