吴裕雄数据挖掘与分析案例实战——岭回归与lasso回归模型

tszr tszr     2023-01-29     656

关键词:

# 导入第三方模块
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
from sklearn import model_selection
from sklearn.linear_model import Ridge,RidgeCV

# 读取糖尿病数据集
diabetes = pd.read_excel(r‘F:\\python_Data_analysis_and_mining\\08\\diabetes.xlsx‘, sep = ‘‘)
print(diabetes.shape)
print(diabetes.head())
# 构造自变量(剔除患者性别、年龄和因变量)
predictors = diabetes.columns[2:-1]
# 将数据集拆分为训练集和测试集
X_train, X_test, y_train, y_test = model_selection.train_test_split(diabetes[predictors], diabetes[‘Y‘],test_size = 0.2, random_state = 1234 )
# 构造不同的Lambda值
Lambdas = np.logspace(-5, 2, 200)
print(Lambdas.shape)
# 构造空列表,用于存储模型的偏回归系数
ridge_cofficients = []
# 循环迭代不同的Lambda值
for Lambda in Lambdas:
ridge = Ridge(alpha = Lambda, normalize=True)
ridge.fit(X_train, y_train)
ridge_cofficients.append(ridge.coef_)
print(np.shape(ridge_cofficients))
# 绘制Lambda与回归系数的关系
# 中文乱码和坐标轴负号的处理
plt.rcParams[‘font.sans-serif‘] = [‘Microsoft YaHei‘]
plt.rcParams[‘axes.unicode_minus‘] = False
# 设置绘图风格
plt.style.use(‘ggplot‘)
plt.plot(Lambdas, ridge_cofficients)
# 对x轴作对数变换
plt.xscale(‘log‘)
# 设置折线图x轴和y轴标签
plt.xlabel(‘Lambda‘)
plt.ylabel(‘Cofficients‘)
# 图形显示
plt.show()

技术分享图片

# 岭回归模型的交叉验证
# 设置交叉验证的参数,对于每一个Lambda值,都执行10重交叉验证
ridge_cv = RidgeCV(alphas = Lambdas, normalize=True, scoring=‘neg_mean_squared_error‘, cv = 10)
print(ridge_cv)
# 模型拟合
ridge_cv.fit(X_train, y_train)
# 返回最佳的lambda值
ridge_best_Lambda = ridge_cv.alpha_
print(ridge_best_Lambda)

技术分享图片

# 导入第三方包中的函数
from sklearn.metrics import mean_squared_error

# 基于最佳的Lambda值建模
ridge = Ridge(alpha = ridge_best_Lambda, normalize=True)
ridge.fit(X_train, y_train)
# 返回岭回归系数
pd.Series(index = [‘Intercept‘] + X_train.columns.tolist(),data = [ridge.intercept_] + ridge.coef_.tolist())
# 预测
ridge_predict = ridge.predict(X_test)
# 预测效果验证
RMSE = np.sqrt(mean_squared_error(y_test,ridge_predict))
print(RMSE)

技术分享图片

# 导入第三方模块中的函数
from sklearn.linear_model import Lasso,LassoCV

# 构造空列表,用于存储模型的偏回归系数
lasso_cofficients = []
for Lambda in Lambdas:
lasso = Lasso(alpha = Lambda, normalize=True, max_iter=10000)
lasso.fit(X_train, y_train)
lasso_cofficients.append(lasso.coef_)

# 绘制Lambda与回归系数的关系
plt.plot(Lambdas, lasso_cofficients)
# 对x轴作对数变换
plt.xscale(‘log‘)
# 设置折线图x轴和y轴标签
plt.xlabel(‘Lambda‘)
plt.ylabel(‘Cofficients‘)
# 显示图形
plt.show()

# LASSO回归模型的交叉验证
lasso_cv = LassoCV(alphas = Lambdas, normalize=True, cv = 10, max_iter=10000)
lasso_cv.fit(X_train, y_train)
# 输出最佳的lambda值
lasso_best_alpha = lasso_cv.alpha_
print(lasso_best_alpha)
# 基于最佳的lambda值建模
lasso = Lasso(alpha = lasso_best_alpha, normalize=True, max_iter=10000)
lasso.fit(X_train, y_train)
# 返回LASSO回归的系数
pd.Series(index = [‘Intercept‘] + X_train.columns.tolist(),data = [lasso.intercept_] + lasso.coef_.tolist())

# 预测
lasso_predict = lasso.predict(X_test)
# 预测效果验证
RMSE = np.sqrt(mean_squared_error(y_test,lasso_predict))
print(RMSE)

技术分享图片

# 导入第三方模块
from statsmodels import api as sms

# 为自变量X添加常数列1,用于拟合截距项
X_train2 = sms.add_constant(X_train)
X_test2 = sms.add_constant(X_test)

# 构建多元线性回归模型
linear = sms.formula.OLS(y_train, X_train2).fit()
# 返回线性回归模型的系数
print(linear.params)

# 模型的预测
linear_predict = linear.predict(X_test2)
# 预测效果验证
RMSE = np.sqrt(mean_squared_error(y_test,linear_predict))
print(RMSE)

技术分享图片

 






























































































吴裕雄数据挖掘与分析案例实战(13)——gbdt模型的应用

#导入第三方包importpandasaspdimportmatplotlib.pyplotasplt#读入数据default=pd.read_excel(r‘F:\python_Data_analysis_and_mining\14\defaultofcreditcardclients.xls‘)print(default.shape)print(default.head())print( 查看详情

岭回归与lasso回归算法(代码片段)

模型压缩与正则化主要包含岭回归(Ridgeregression)和Lasso两种方法,二者的主要原理是将系数往等于0的方向压缩。岭回归lasso全称:Leastabsoluteshrinkageandselectionoperator最小绝对缩减和选择算子一、岭回归示例使用信... 查看详情

岭回归与lasso回归算法(代码片段)

模型压缩与正则化主要包含岭回归(Ridgeregression)和Lasso两种方法,二者的主要原理是将系数往等于0的方向压缩。岭回归lasso全称:Leastabsoluteshrinkageandselectionoperator最小绝对缩减和选择算子一、岭回归示例使用信... 查看详情

岭回归与lasso回归

线性回归的一般形式过拟合问题及其解决方法问题:以下面一张图片展示过拟合问题解决方法:(1):丢弃一些对我们最终预测结果影响不大的特征,具体哪些特征需要丢弃可以通过PCA算法来实现;(2):使用正则化技术,保留所有... 查看详情

用python实现岭回归算法与lasso回归算法并处理iris数据集(代码片段)

在介绍岭回归算法与Lasso回归算法之前,先要回顾一下线性回归算法。根据线性回归模型的参数估计公式可知可知,得到的前提是矩阵可逆。换句话说就是样本各个特征(自变量)之间线性无关。然而在实际问题中,常常会出现... 查看详情

笔记︱范数正则化l0l1l2-岭回归&lasso回归(稀疏与特征工程)

 笔记︱范数正则化L0、L1、L2-岭回归&Lasso回归(稀疏与特征工程)一、正则化背景 监督机器学习问题无非就是“minimizeyourerrorwhileregularizingyourparameters”,也就是在规则化参数的同时最小化误差。最小化误差是为了让我... 查看详情

岭回归lasso与lar的几何意义

https://blog.csdn.net/u013524655/article/details/40922303http://f.dataguru.cn/thread-598486-1-1.htmlhttp://www.360doc.com/content/11/0520/00/4910_118025769.shtml      &nb 查看详情

机器学习sklearn(77):算法实例(三十四)回归线性回归大家族多重共线性:岭回归与lasso岭回归(代码片段)

1最熟悉的陌生人:多重共线性逆矩阵存在的充分必要条件 行列式不为0的充分必要条件              矩阵满秩的充分必要条件           查看详情

数学建模matlab应用实战系列(九十三)-岭回归应用案例(附matlab和python代码)

前言岭回归是一种专用于共线性数据分析的有偏估计回归方法,实质上是一种改良的最小二乘估计法,通过放弃最小二乘法的无偏性,以损失部分信息、降低精度为代价获得回归系数更为符合实际、更可靠的回归方法,对病态数... 查看详情

机器学习岭回归和lasso回归详解以及相关计算实例-加利福尼亚的房价数据集红酒数据集(代码片段)

...接的方法是手动移除共线性的变量:即先对数据进行相关分析,若两个特征的相关系数大于某特定值(一般为0.7),则手动移除其中一个特征,再继续做回归分析。这种做法会导致估计结果产生偏差,会引起遗漏变量问题。而且... 查看详情

岭回归和lasso回归(转)

回归和分类是机器学习算法所要解决的两个主要问题。分类大家都知道,模型的输出值是离散值,对应着相应的类别,通常的简单分类问题模型输出值是二值的,也就是二分类问题。但是回归就稍微复杂一些,回归模型的输出值... 查看详情

岭回归和lasso回归有啥区别?

岭回归是线性回归采用L2正则化的形式,Lasso回归是采用L1正则化的形式,Lasso回归易产生稀疏解参考技术A原文链接:http://tecdat.cn/?p=20379  假设我们期望因变量由潜在协变量子集的线性组合确定。然后,LARS算法提供了一种... 查看详情

机器学习sklearn(78):算法实例(三十五)回归线性回归大家族多重共线性:岭回归与lassolasso(代码片段)

3Lasso3.1Lasso与多重共线性      3.2Lasso的核心作用:特征选择  importnumpyasnpimportpandasaspdfromsklearn.linear_modelimportRidge,LinearRegression,Lassofromsklearn.model_selecti 查看详情

线性回归——lasso回归和岭回归(ridgeregression)

目录线性回归——最小二乘Lasso回归和岭回归为什么lasso更容易使部分权重变为0而ridge不行?References线性回归很简单,用线性函数拟合数据,用meansquareerror(mse)计算损失(cost),然后用梯度下降法找到一组使mse最小的权重。lasso... 查看详情

高维数据惩罚回归方法:主成分回归pcr岭回归lasso弹性网络elasticnet分析基因数据|附代码数据(代码片段)

全文链接:http://tecdat.cn/?p=23378最近我们被客户要求撰写关于高维数据惩罚回归方法的研究报告,包括一些图形和统计输出。在本文中,我们将使用基因表达数据。这个数据集包含120个样本的200个基因的基因表达数据。这些数据... 查看详情

机器学习-正则化(岭回归lasso)和前向逐步回归(代码片段)

...归、lasso)和前向逐步回归本文代码均来自于《机器学习实战》这三种要处理的是同样的问题,也就是数据的特征数量大于样本数量的情况。这个时候会出现矩阵不可逆的情况,为什么呢?矩阵可逆的条件是:1.方阵2.满秩X.t*X必... 查看详情

机器学习之线性回归岭回归lasso回归(代码片段)

...多特征)的,我们需要找出误差最小的超平面。4、误差分析(损失函数)损失函数定义为平方误差之和:5、求解回归系数求解回归系数通常有两种方法,一种是利用普通最小二乘法,另一种则是梯度下降法。普通最小二乘法:... 查看详情

吴裕雄python机器学习——集成学习adaboost算法回归模型(代码片段)

importnumpyasnpimportmatplotlib.pyplotaspltfromsklearnimportdatasets,ensemblefromsklearn.model_selectionimporttrain_test_splitdefload_data_classification():‘‘‘加载用于分类问题的数据集‘‘‘#使用scikit-learn自带的digits数据 查看详情