Lasso回归——基于R语言实现

今天给大家分享的主题依旧是Lasso回归,昨天的实战是基于python编程语言,今天的回归实战基于R语言进行,数据集依旧是采用Kaggle的数据集,如果说大家对Lasso回归相关的理论知识比较感兴趣的话,可以阅读Lasso回归——基于Kaggle数据集实战操作这篇文章,实战使用到的数据集,大家可以关注公众号“明天科技屋”回复关键词获得。

R语言在数据分析和机器学习方面目前也使用得比较多,很多前沿论文以及实战也是采用R语言进行,因此,对于R语言的学习也有一定的必要,今天给大家展示R语言是如何实现Lasso回归以及分析一下python和R语言在回归时的差别和注意点,并且相关代码也会同步上传到公众号,大家前往公众号获得。

首先,我们先导入R语言所需要的包文件,使用到的核心包为"glmnet"包,如果大家没有安装,可以先安装该包文件,安装命令也会在代码中附上,安装完之后添加包依赖,如果已经安装,直接添加包依赖即可。

# 安装包文件
install.packages('glmnet')
# 加载包依赖
library(glmnet)

接下来,我们将会进行数据导入和处理,该数据还是使用的上一篇Lasso回归的数据,数据读取的代码如下

setwd('C:\\Rdata')
data <- read.csv('heart.csv',header = TRUE)
data
str(data)

数据的详细信息和数据结构都查看了一下,如图所示

大家可以从图书数据看出,数据中包含数值型变量和分类变量,分类变量已经被处理成数值型数据,因此我们不用再进行独热编码处理,只需要对数值型数据标准化处理即可,标准化处理代码如下:

data_cate <- data[,c('age','trtbps','chol','thalachh','oldpeak')]
normalize_data <- as.data.frame(scale(data_cate))
data[,c('age','trtbps','chol','thalachh','oldpeak')] <- normalize_data
data

标准化之后的数据如下:

在完成以上数据处理之后,我们就开始使用交叉验证来对Lasso回归模型进行训练调优,使用R语言画出Lasso回归的路径图,并在图中使用红色虚线表示最优参数位置,在这个过程中,需要注意的是,传入的特征参数必须是一个matrix数据格式,而不是一个数据框,因此在传入数据之前需要对数据进行转换,这一点和python中实现有一些差距,在模型中有一个参数alpha,该参数是用来对回归的类型进行判别的,alpha=1代表Lasso回归,alpha=0代表岭回归,0-1之间代表弹性网络,具体实现代码如下:

train_matrix = as.matrix(data[,1:ncol(data)-1])
cvfit <- cv.glmnet(x=train_matrix ,y=data[,ncol(data)],alpha=1)
png('Lasso.png',width=800,height=600)
plot(cvfit,xvar='lambda',label=TRUE)
best_lambda <- cvfit$lambda.min
abline(v=log(best_lambda),col='red',lty=2)
dev.off()

实现效果如图所示

接下来,在正常情况下,特征变量的系数变化图我们也是需要的,所以,我们也用代码实现了特征变量系数变化折线图的绘制,在R语言中,绘制特征变量系数变化图,使用的训练模型是原始的Lasso回归模型,也就是模型中没有设置最优的惩罚系数绘制出来的折现图,在python中如果想要绘制折线图,必须使用交叉验证出来的最优参数训练的模型绘制,而R中不能使用最优参数模型来绘制变化图,否则会出错,大家可以看见模型中并没有设置最优惩罚系数,直接使用的正常模型进行训练绘制,具体代码如下:

lasso_model = glmnet(x=train_matrix,y=data[,ncol(data)],alpha=1)
png('Lasso_Cofficient.png',width=800,height=600)
plot(lasso_model, xvar="lambda")
dev.off()

绘制效果如图所示:

特征变量系数变化图出来之后,我们还需要看看最终选择的特征变量是哪些?在这种情况下,我们将使用交叉验证得出的最优参数训练的模型来得到特征变量信息,大家可以看见这次训练的模型中添加了最优的惩罚参数,具体代码如下:

lasso_model_best <- glmnet(x=train_matrix,y=data[,ncol(data)],alpha=1,lambda = best_lambda)
non_zero_coef <- predict(lasso_model_best,type='nonzero')
selected_features <- colnames(data[,1:ncol(data)-1])[non_zero_coef[,1]]
selected_features

得到的结果如下:

以上就是R语言实现Lasso回归进行特征选择的全部内容,代码文件和博文会同步更新到“明天科技屋”公众号,大家在公众号里面回复关键词领取,希望大家多多关注,点点赞!

  • 8
    点赞
  • 30
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
多元线性回归是一种用于预测房屋价格的常用方法。它基于多个自变量与因变量之间的线性关系建立回归模型。在Python中,可以使用sklearn库的LinearRegression类来实现多元线性回归。 岭回归是对多元线性回归的一种正则化方法。它通过引入一个正则化项,可以在模型训练过程中对自变量的系数进行约束,从而避免过拟合的问题。在Python中,可以使用sklearn库的Ridge类来实现回归Lasso回归也是对多元线性回归的一种正则化方法,与岭回归类似,但它使用的是L1正则化。Lasso回归不仅可以约束自变量的系数,还可以用于特征选择,将不重要的特征的系数推向零。在Python中,可以使用sklearn库的Lasso类来实现Lasso回归。 使用这些方法进行房屋价格预测的步骤大致相同。首先,将房屋的特征作为自变量,房屋价格作为因变量,构建多元回归模型。然后,根据数据集中的房屋特征和对应的价格,利用模型进行训练。最后,可以使用训练好的模型对新的房屋特征进行预测,得到对应的价格。 需要注意的是,为了得到准确的预测结果,应该对数据进行适当的预处理,例如特征缩放、数据清洗和特征选择等。此外,还应该通过交叉验证等方法,选择适当的模型超参数,以避免过拟合或欠拟合的问题。 总的来说,多元回归、岭回归lasso回归都是常用的预测房屋价格的方法,使用Python中的相应库可以方便地实现这些方法。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

不一样的邓先生

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值