线性回归、岭回归、Lasso回归

  • 前言
  • 1.线性回归
  • 2. 岭回归
  • 3. Lasso回归
  • 4. tensorflow利用梯度下降实现的线性回归

前言

本章主要介绍线性回归、岭回归、Lasso回归,tensorflow实现的线性回归的简单例子代码。
原理篇看这里
[机器学习-原理篇]学习之线性回归、岭回归、Lasso回归

1.线性回归

from sklearn import linear_model
def test_linearRegression(X, y):clf = linear_model.LinearRegression()clf.fit(X, y)print('linearRegression coef:',clf.coef_)print('linearRegression intercept:',clf.intercept_)
if __name__ == '__main__':X = [[0, 0], [1, 1], [2, 2.]]y = [[0], [1], [2.]]test_linearRegression(X, y)
linearRegression coef: [[0.5 0.5]]
linearRegression intercept: [1.11022302e-16]

2. 岭回归

from sklearn import linear_model
def test_ridge(X, y):clf = linear_model.Ridge(alpha=.1)clf.fit(X, y)print('ridge coef:',clf.coef_)print('ridge intercept',clf.intercept_)
if __name__ == '__main__':X = [[0, 0], [1, 1], [2, 2.]]y = [[0], [1], [2.]]test_ridge(X, y)
ridge coef: [[0.48780488 0.48780488]]
ridge intercept [0.02439024]

3. Lasso回归

from sklearn import linear_model
def test_lasso(X, y):clf = linear_model.Lasso(alpha=0.1)clf.fit(X, y)print('lasso coef:',clf.coef_)print('lasso intercept: ',clf.intercept_)
if __name__ == '__main__':X = [[0, 0], [1, 1], [2, 2.]]y = [[0], [1], [2.]]test_lasso(X, y)

从这个例子看出,第二特征的权重直接是0, 由此可以进一步得出结论
lasso 可以用来做 feature selection,而 ridge 不行。或者说,lasso 更容易使得权重变为 0,而 ridge 更容易使得权重接近 0。

lasso coef: [0.85 0.  ]
lasso intercept:  [0.15]

4. tensorflow利用梯度下降实现的线性回归

import tensorflow as tf
TRAIN_STEPS = 10
def test_tensorflow1(X, y):w = tf.Variable(initial_value=[[1.0],[1.0]])#w2 = tf.Variable(initial_value=1.0)b = tf.Variable(initial_value=0.)optimizer = tf.keras.optimizers.SGD(0.1)mse = tf.keras.losses.MeanSquaredError()for i in range(TRAIN_STEPS):#print("epoch:", i)#print("w1:", w.numpy())#print("b:", b.numpy())with tf.GradientTape(persistent=True,watch_accessed_variables=True) as g:logit = tf.matmul(X, w) + bloss = mse(y, logit)#loss = (y - logit)*(y - logit)gradients = g.gradient(target=loss, sources=[w, b]) # 计算梯度#print(gradients)optimizer.apply_gradients(zip(gradients, [w, b]))  # 更新梯度print("test_tensorflow1 w1:", w.numpy())print("test_tensorflow1 b:", b.numpy())def test_tensorflow2(X, y):w = tf.Variable(initial_value=[[1.0],[1.0]])#w2 = tf.Variable(initial_value=1.0)b = tf.Variable(initial_value=0.)optimizer = tf.keras.optimizers.SGD(0.1)mse = tf.keras.losses.MeanSquaredError()for i in range(TRAIN_STEPS):#print("epoch:", i)#print("w1:", w.numpy())#print("b:", b.numpy())with tf.GradientTape(persistent=True,watch_accessed_variables=True) as g:logit = tf.matmul(X, w) + bloss = tf.square((y - logit))loss = tf.reduce_sum(loss)/3gradients = g.gradient(target=loss, sources=[w, b]) # 计算梯度#print(gradients)optimizer.apply_gradients(zip(gradients, [w, b]))  # 更新梯度print("test_tensorflow2 w1:", w.numpy())print("test_tensorflow2 b:", b.numpy())if __name__ == '__main__':X = [[0, 0], [1, 1], [2, 2.]]#X = [[0], [1], [2]]y = [[0], [1], [2.]]test_linearRegression(X, y)test_lasso(X, y)test_ridge(X, y)test_tensorflow1(X, y)test_tensorflow2(X, y)
test_tensorflow1 w1: [[0.5456011][0.5456011]]
test_tensorflow1 b: -0.13680318
test_tensorflow2 w1: [[0.5456011][0.5456011]]
test_tensorflow2 b: -0.13680318

[机器学习-实践篇]学习之线性回归、岭回归、Lasso回归,tensorflow实现的线性回归相关推荐

  1. 机器学习(七)线性回归与岭回归Lasso回归与弹性网络与正则化

    机器学习(七) 线性回归 最小二乘法(Least Squares Method,简记为LSE)是一个比较古老的方法,源于天文学和测地学上的应用需要.在早期数理统计方法的发展中,这两门科学起了很大的作用 ...

  2. 普通线性回归/岭回归/lasso回归[x.T/np.dot/lrg.coef_/lrg.intercept_/Xw = y/r2_score]

    基础运算 导包 import numpy as np 随机产生数据集 a = np.random.randint(0,10,size = (2,3)) a Out: array([[2, 8, 2], ...

  3. 岭回归Lasso回归

    转自:https://blog.csdn.net/dang_boy/article/details/78504258 https://www.cnblogs.com/Belter/p/8536939. ...

  4. 笔记︱范数正则化L0、L1、L2-岭回归Lasso回归(稀疏与特征工程)

    机器学习中的范数规则化之(一)L0.L1与L2范数 博客的学习笔记,对一些要点进行摘录.规则化也有其他名称,比如统计学术中比较多的叫做增加惩罚项:还有现在比较多的正则化. -------------- ...

  5. [机器学习-原理篇]学习之线性回归、岭回归、Lasso回归

    线性回归.岭回归.Lasso回归 前言 一,线性回归--最小二乘 二,Lasso回归 三,岭回归 四, Lasso回归和岭回归的同和异 五, 为什么 lasso 更容易使部分权重变为 0 而 ridg ...

  6. 【机器学习】正则化的线性回归 —— 岭回归与Lasso回归

    python风控评分卡建模和风控常识(博客主亲自录制视频教程) https://study.163.com/course/introduction.htm?courseId=1005214003&am ...

  7. [机器学习] - 岭回归与Lasso回归

    注:在学习机器学习中回归算法时,随时都会接触最小二乘法原理和求解过程,最小二乘法可能对于理工科的学生低头不见抬头见的知识点,特点是在我学习<数值分析>课程中,老师讲了些最小二乘法的历史[- ...

  8. 线性回归、lasso回归、岭回归以及弹性网络的系统解释

    线性回归.lasso回归.岭回归以及弹性网络的系统解释 声明 背景介绍 概述 线性回归模型函数及损失函数 线性回归算法 多项式回归(线性回归的推广) 广义线性回归(线性回归的推广) 岭回归(Ridge ...

  9. 多元线性回归算法: 线性回归Linear Regression、岭回归Ridge regression、Lasso回归、主成分回归PCR、偏最小二乘PLS

    0. 问题描述 输入数据:X=(x1,x2,....,xm)\mathbf{X} = (x_1, x_2,...., x_m)X=(x1​,x2​,....,xm​), 相应标签 Y=(y1,y2,. ...

最新文章

  1. 数据库连接查询 变量 运算符
  2. 灯光插件_Light Kit Pro 3灯光插件
  3. 我擦!没想到你们都是这样 “劝退” 员工的!
  4. java类验证和装载顺序_Java类的加载顺序
  5. 急用物料怎么办???
  6. P2651 添加括号III(python3实现)
  7. 大型网站技术架构(三)--架构核心要素(转)
  8. android 国际区号注册手机号编码 以及常用城市列表
  9. 3D图库框架范围与示例
  10. CSS3的动画与变形
  11. 智能聊天机器人之图灵机器人
  12. Linux上杀毒软件有哪些?
  13. iOS偏好设置的存储注意事项
  14. 一个小台灯 之 微信小程序开发日志
  15. linux蓝牙储备,储备 linux tty pty 虚拟终端
  16. 饥荒怎么解锁机器人_饥荒怎么解锁机器人(WX-78)_饥荒机器人(WX-78)介绍及解锁方法...
  17. 新型钓鱼攻击竟然开始利用摩斯密码来隐藏URL
  18. 微型计算机折旧费,折旧费的范围、计算方法、收取条件有哪些?
  19. COMSOL列管反应器模拟(包括多孔介质催化剂、化学反应、对流扩散、传热和对流换热)
  20. Efficient Zero-Knowledge Argument for Correctness of a Shuffle学习笔记(3)

热门文章

  1. fdisk自动进行分区
  2. FI常用T-CODE
  3. 【思维智慧】007.利用贪婪的人身上的破绽
  4. 拥抱 Elasticsearch:给 TiDB 插上全文检索的翅膀
  5. Linux下查看物理CPU、逻辑CPU和CPU核数
  6. Nginx限制连接数和下载速度
  7. JavaScript数组拼接、对象拼接
  8. SSR -- 服务端渲染基础
  9. C#LeetCode刷题之#507-完美数(Perfect Number)
  10. C#设计模式之13-职责链模式