解析python实现Lasso回归

来源:脚本之家  责任编辑:小易  

线性回归介绍 线性回归是利用数理统计中回归分析,来确定两种或两种以上变量间相互依赖的定量关系的一种统计分析方法,运用十分广泛。其表达形式为y = w'x+e,e为误

Lasso原理

glmnet和lars一样都可以得到整个path,glmnet里面用的是CV选择的最优lambda,本身可以直接求解lasso估计,BIC直接根据其definition formula编写一个小的function来计算

在这里插入图片描述

Lasso与弹性拟合比较python实现

import getopt #python scriptname.py -f 'hello' --directory-prefix=/home -t --form at 'a' 'b' shortargs = 'f:t' longargs = ['directory-prefix=', 'format', '--f_long='] opts, args = getopt.

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()

建议用stata

运行结果

在这里插入图片描述

总结

以上所述是小编给大家介绍的python实现Lasso回归,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对脚本之家网站的支持!

如果是我做,会使用python把模型训练出来后存入文件,用java写对应的predict函数,之后导入python训练的模型,用过java里写好的predict函数计算预测结果。如果有其

如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!

首先,请宝哥的粉丝们一定要控制好自己的情绪,因为宋小宝暂退娱乐圈了,千万别哭,短暂的离别,是为了更好的相聚。大家一定想知道宋小宝暂退娱乐圈的原因吧。网友有传他惹上绯闻,不得已,只好隐退一年,避避风声。也有说他不想在娱乐圈混,想跨界搞其他行业。今天要说的是,上面都不是原因,这些只是一些人的无端猜测,毫无根据可言。其实,宋小宝退出娱乐圈,只是因为赵本山的一句话。赵本山曾对宝哥说了一句话:再不注意身体,会没命的!其实,宋小宝确实算得上一个卖力、敬业的娱乐搞笑明星,这几年,特别是今年以来,他工作不断,录制了近20个节目,每天都是满负荷工作,长期高强度的工作,压得气都喘不过来。最致命的是在今年的欢乐喜剧

扩展阅读,根据您访问的内容系统为您准备了以下内容,希望对您有帮助。

如何用python实现Adaptive Lasso

建议找sklearn工具包。里面有Lasso算法。也有adaptive 算法。

python中sklearn中lasso怎么设置交叉验证

1、概述在实验数据分析中,有些算法需要用现有的数据构建模型,如卷积神经网络(CNN),这类算法称为监督学习(Supervisied Learning)。构建模型需要的数据称为训练数据。模型构建完后,需要利用数据验证模型的正确性,这部分数据称为测试数据。测试数据不能用于构建模型中,只能用于最后检验模型的准确性。有时候模型的构建的过程中,也需要检验模型,辅助模型构建。所以会将训练数据分为两个部分,1)训练数据;2)验证数据。 将数据分类就要采用交叉验证的方法,个人写的交叉验证算法不可避免有一定缺陷,考虑使用强大sklearn包可以实现交叉验证算法。2、python实现请注意:以下的方法实现根据最新的sklearn版本实现,老版本的函数很多已经过期。2.1 K次交叉检验(K-Fold Cross Validation)K次交叉检验的大致思想是将数据大致分为K个子样本,每次取一个样本作为验证数据,取余下的K-1个样本作为训练数据。from sklearn.model_selection import KFoldimport numpy as npX = np.array([[1, 2], [3, 4], [1, 2], [3, 4]])y = np.array([1, 2, 3, 4])kf = KFold(n_splits=2)for train_index, test_index in kf.split(X):print("TRAIN:", train_index, "TEST:", test_index)X_train, X_test = X[train_index], X[test_index]y_train, y_test = y[train_index], y[test_index]123456789102.2 Stratified k-foldStratifiedKFold()这个函数较常用,比KFold的优势在于将k折数据按照百分比划分数据集,每个类别百分比在训练集和测试集中都是一样,这样能保证不会有某个类别的数据在训练集中而测试集中没有这种情况,同样不会在训练集中没有全在测试集中,这样会导致结果糟糕透顶。from sklearn.model_selection import StratifiedKFoldimport numpy as npX = np.array([[1, 2], [3, 4], [1, 2], [3, 4]])y = np.array([0, 0, 1, 1])skf = StratifiedKFold(n_splits=2)for train_index, test_index in skf.split(X, y):print("TRAIN:", train_index, "TEST:", test_index)X_train, X_test = X[train_index], X[test_index]y_train, y_test = y[train_index], y[test_index]123456789102.3 train_test_split随机根据比例分配训练集和测试集。这个函数可以调整随机种子。import numpy as npfrom sklearn.model_selection import train_test_splitX, y = np.arange(10).reshape((5, 2)), range(5)X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.33, random_state=42)1234563、总结sklearn功能非常强大提供的交叉验证函数也非常多,如:'BaseCrossValidator',           'GridSearchCV',           'TimeSeriesSplit',           'KFold',           'GroupKFold',           'GroupShuffleSplit',           'LeaveOneGroupOut',           'LeaveOneOut',           'LeavePGroupsOut',           'LeavePOut',           'ParameterGrid',           'ParameterSampler',           'PredefinedSplit',           'RandomizedSearchCV',           'ShuffleSplit',           'StratifiedKFold',           'StratifiedShuffleSplit',           'check_cv',           'cross_val_predict',           'cross_val_score',           'fit_grid_point',           'learning_curve',           'permutation_test_score',           'train_test_split',           'validation_curve'12345678910111213141516171819202122232425感兴趣的可以查看sklearn源码。

请教怎样用Python做stepwise回归

用StatsModels里面的mixed_linear_model可以做 .看郭志刚的那本专著,spss版有下的。

最小角回归怎么解lasso回归

Linear least squares,Lasso,ridge regression三者是有本质区别的。一、最小二乘法(Linear least squares)。最小二乘法(又称最小平方法)是一种数学优化技术。它通过最小化误差的平方和寻找数据的最佳函数匹配。利用最小二乘法可以简便地求得未知的数据,并使得这些求得的数据与实际数据之间误差的平方和为最小。最小二乘法还可用于曲线拟合。其他一些优化问题也可通过最小化能量或最大化熵用最小二乘法来表达。二、套索工具(Lasso)算法。套索工具源于Photoshop,在Photoshop CS6中,需要自由绘制出形状不规则的选区时,可以使用套索工具。选择使用套索工具后,在图像上拖拽鼠标指针绘制选区边界,松开鼠标左键时,选区将会进行自动闭合。套索工具算法,通过构造一个惩罚函数获得一个精炼的模型;通过最终确定一些指标的系数为零,套索工具算法实现了指标集合精简的目的。这是一种处理具有复共线性数据的有偏估计。套索工具的基本思想是在回归系数的绝对值之和小于一个常数的约束条件下,使残差平方和最小化,从而能够产生某些严格等于0的回归系数,得到解释力较强的模型。R统计的Lars算法的包提供了套索工具算法。根据模型改进的需要,数据挖掘工作者可以借助于套索工具算法,利用AIC准则和BIC准则精炼简化统计模型的变量集合,达到降维的目的。因此,套索工具算法是可以应用到数据挖掘中的实用算法。三、岭回归算法(ridge regression)。在回归分析中,用一种方法改进回归系数的最小二乘估计后所得的回归称为岭回归算法。在多元回归方程中,用最小二乘估计求得的回归系数值尽管是其真值β=(β0,β1,···βp)1的无偏估计,但若将与β分别看成p+1维空间中两个点的话,它们之间的平均距离E(—β)1(-β)(称为均方差)仍可能很大,为减小此均方差,用(k)=(X′X+KI)-1X′Y去代替2,称(K)为β的岭回归估计。其中X为各变量的观测值所构成的一个n×(p+1)阶矩阵,Y是随机变量的观测值组成的n维向量,I为p+1阶单位阵,K是与未知参数有关的参数,选择它使E{[(K)-β]1[(K)-β]}达到最小。

如何用Python进行线性回归以及误差分析

线性回归:设x,y分别为一组数据,代码如下import matplotlib.pyplot as pltimport numpy as npro=np.polyfit(x,y,deg=1)  #deg为拟合的多项式的次数(线性回归就选1)ry=np.polyval(ro,x)        #忘记x和ro哪个在前哪个在后了。。。print ro             #输出的第一个数是斜率k,第二个数是纵截距bplt.scatter(x,y)plt.plot(x,ry)

  • 本文相关:
  • python实现的逻辑回归算法示例【附测试csv文件下载】
  • python实现的简单线性回归算法实例分析
  • python实现简单的单变量线性回归方法
  • python实现机器学习之多元线性回归
  • python数据分析之双色球基于线性回归算法预测下期中奖结果示例
  • python线性回归实战分析
  • python数据拟合与广义线性回归算法学习
  • python决策树之cart分类回归树详解
  • python编程实现使用线性回归预测数据
  • python编程线性回归代码示例
  • python实现逻辑回归的方法示例
  • python 线程的暂停, 恢复, 退出详解及实例
  • python多线程下信号处理程序示例
  • 在python中,使用scatter绘制散点图的实例
  • python skimage 连通性区域检测方法
  • python使用scipy模块实现一维卷积运算示例
  • python 多线程不加锁分块读取文件的方法
  • django rest framework 数据的查找、过滤、排序的示例
  • python使用 request 发送表单数据操作示例
  • python算法应用实战之队列详解
  • 详解python locals()的陷阱
  • 如何用python实现Adaptive Lasso
  • python中sklearn中lasso怎么设置交叉验证
  • 请教怎样用Python做stepwise回归
  • 最小角回归怎么解lasso回归
  • 如何用Python进行线性回归以及误差分析
  • python多远回归分析源码
  • 如何在r进行自适应lasso回归
  • python怎么实现输入命令行解析lint命令
  • python有什么对面板数据进行回归分析的命令吗
  • python 怎么获得机器学习模型回归参数
  • 免责声明 - 关于我们 - 联系我们 - 广告联系 - 友情链接 - 帮助中心 - 频道导航
    Copyright © 2017 www.zgxue.com All Rights Reserved