python实现Lasso回归

python实现Lasso回归Lasso原理Lasso与弹性拟合比较python实现importnumpyasnpimportmatplotlib.pyplotaspltfromsklearn.metricsimportr2_score#defmain():#产生一些稀疏数据np.random.seed(42)n_samples,n_features=50,200X=np…

大家好,又见面了,我是你们的朋友全栈君。

Lasso原理

在这里插入图片描述

Lasso与弹性拟合比较python实现

import numpy as np
import matplotlib.pyplot as plt
from sklearn.metrics import r2_score

#def main():
# 产生一些稀疏数据
np.random.seed(42)
n_samples, n_features = 50, 200
X = np.random.randn(n_samples, n_features) # randn(...)产生的是正态分布的数据
coef = 3 * np.random.randn(n_features)     # 每个特征对应一个系数
inds = np.arange(n_features)
np.random.shuffle(inds)
coef[inds[10:]] = 0  # 稀疏化系数--随机的把系数向量1x200的其中10个值变为0
y = np.dot(X, coef)  # 线性运算 -- y = X.*w
# 添加噪声:零均值,标准差为 0.01 的高斯噪声
y += 0.01 * np.random.normal(size=n_samples)

# 把数据划分成训练集和测试集
n_samples = X.shape[0]
X_train, y_train = X[:n_samples // 2], y[:n_samples // 2]
X_test, y_test = X[n_samples // 2:], y[n_samples // 2:]

# 训练 Lasso 模型
from sklearn.linear_model import Lasso
alpha = 0.1
lasso = Lasso(alpha=alpha)
y_pred_lasso = lasso.fit(X_train, y_train).predict(X_test)
r2_score_lasso = r2_score(y_test, y_pred_lasso)
print(lasso)
print("r^2 on test data : %f" % r2_score_lasso)

# 训练 ElasticNet 模型
from sklearn.linear_model import ElasticNet
enet = ElasticNet(alpha=alpha, l1_ratio=0.7)
y_pred_enet = enet.fit(X_train, y_train).predict(X_test)
r2_score_enet = r2_score(y_test, y_pred_enet)
print(enet)
print("r^2 on test data : %f" % r2_score_enet)

plt.plot(enet.coef_, color='lightgreen', linewidth=2,
         label='Elastic net coefficients')
plt.plot(lasso.coef_, color='gold', linewidth=2,
         label='Lasso coefficients')
plt.plot(coef, '--', color='navy', label='original coefficients')
plt.legend(loc='best')
plt.title("Lasso R^2: %f, Elastic Net R^2: %f"
          % (r2_score_lasso, r2_score_enet))
plt.show()

运行结果

在这里插入图片描述

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/133562.html原文链接:https://javaforall.net

赞 (0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 华三路由交换配置命令_H3C路由器常用基本配置命令「建议收藏」

    华三路由交换配置命令_H3C路由器常用基本配置命令「建议收藏」H3C路由器常用基本配置命令[Quidway]sysnamerouter_name命名路由器(或交换机)[Quidway]delete删除FlashROM中的配置[Quidway]save将配置写入FlashROM[Quidway]interfaceserial0进入接口配置模式[Quidway]quit退出接口模式到系统视图[Quidway]shutdown/undoshutdown…

    2022年10月17日
  • 跟我一起写Makefile(整理版)

    跟我一起写Makefile(整理版)跟我一起写Makefile陈皓(博客地址:http://blog.csdn.net/haoel/article/details/2886)整理的PDF文件:http://download.csdn.net/download/xiaoshuai537/102620891.makefile很重要什么是makefile?或许很多Winodws的程序员都不知道这个东西,因为那些Windows的IDE都为…

    2022年5月15日
  • Dataset之COCO数据集:COCO数据集的简介、下载、使用方法之详细攻略

    Dataset之COCO数据集:COCO数据集的简介、下载、使用方法之详细攻略Dataset之COCO数据集:COCO数据集的简介、安装、使用方法之详细攻略目录COCO数据集的简介0、COCO数据集的80个类别—YoloV3算法采用的数据集1、COCO数据集的意义2、COCO数据集的特点3、数据集的大小和版本COCO数据集的下载1、2014年数据集的下载2、2017的数据集的下载COCO数据集的使用方法1、基础用…

    2022年10月17日
  • 在Ubuntu上使用FreeFileSync同步文件

    在Ubuntu上使用FreeFileSync同步文件FreeFileSync可以在Windows,Linux,macOS上面运行。本文使用操作系统是Ubuntu18.04。安装FreeFileSync下载程序,并解压。$wgethttps://freefilesync.org/download/FreeFileSync_11.0_Linux.tar.gz$tarxvfFreeFileSync_11.0_Linux.tar.gz解压之后进入FreeFileSync文件夹,就可以双击运行程序了。我们可以创建一个启动器,这样我们可以从桌面运

    2022年5月16日
  • go 数据处理_2018毛概第十二章重点

    go 数据处理_2018毛概第十二章重点gocn_news_2018-12-311.Go入门简介:http://t.cn/EbjzeSt 2.GoGraphQL新手指南:https://tutorialedge.net/golang/go-graphql-beginners-tutorial/ 3.你需要Goweb框架吗:https://medium.com/@tusharsoni/do-you-need-a-web-framework-for-go-51171bb0ea8c 4.OpenEdge:开放的边缘计算平

    2022年9月18日
  • intellijidea激活码【最新永久激活】

    (intellijidea激活码)2021最新分享一个能用的的激活码出来,希望能帮到需要激活的朋友。目前这个是能用的,但是用的人多了之后也会失效,会不定时更新的,大家持续关注此网站~IntelliJ2021最新激活注册码,破解教程可免费永久激活,亲测有效,下面是详细链接哦~https://javaforall.net/100143.html…

    2022年3月28日

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号