python实现机器学习之多元线性回归


Posted in Python onSeptember 06, 2018

总体思路与一元线性回归思想一样,现在将数据以矩阵形式进行运算,更加方便。
一元线性回归实现代码
下面是多元线性回归用Python实现的代码:

import numpy as np

def linearRegression(data_X,data_Y,learningRate,loopNum):
 W = np.zeros(shape=[1, data_X.shape[1]])
 # W的shape取决于特征个数,而x的行是样本个数,x的列是特征值个数
 # 所需要的W的形式为 行=特征个数,列=1 这样的矩阵。但也可以用1行,再进行转置:W.T
 # X.shape[0]取X的行数,X.shape[1]取X的列数
 b = 0

 #梯度下降
 for i in range(loopNum):
  W_derivative = np.zeros(shape=[1, data_X.shape[1]])
  b_derivative, cost = 0, 0

  WXPlusb = np.dot(data_X, W.T) + b # W.T:W的转置
  W_derivative += np.dot((WXPlusb - data_Y).T, data_X) # np.dot:矩阵乘法
  b_derivative += np.dot(np.ones(shape=[1, data_X.shape[0]]), WXPlusb - data_Y)
  cost += (WXPlusb - data_Y)*(WXPlusb - data_Y)
  W_derivative = W_derivative / data_X.shape[0] # data_X.shape[0]:data_X矩阵的行数,即样本个数
  b_derivative = b_derivative / data_X.shape[0]


  W = W - learningRate*W_derivative
  b = b - learningRate*b_derivative

  cost = cost/(2*data_X.shape[0])
  if i % 100 == 0:
   print(cost)
 print(W)
 print(b)

if __name__== "__main__":
 X = np.random.normal(0, 10, 100)
 noise = np.random.normal(0, 0.05, 20)
 W = np.array([[3, 5, 8, 2, 1]]) #设5个特征值
 X = X.reshape(20, 5)  #reshape成20行5列
 noise = noise.reshape(20, 1)
 Y = np.dot(X, W.T)+6 + noise
 linearRegression(X, Y, 0.003, 5000)

特别需要注意的是要弄清:矩阵的形状

在梯度下降的时候,计算两个偏导值,这里面的矩阵形状变化需要注意。

梯度下降数学式子:

python实现机器学习之多元线性回归 

以代码中为例,来分析一下梯度下降中的矩阵形状。
代码中设了5个特征。

python实现机器学习之多元线性回归

WXPlusb = np.dot(data_X, W.T) + b

W是一个1*5矩阵,data_X是一个20*5矩阵
WXPlusb矩阵形状=20*5矩阵乘上5*1(W的转置)的矩阵=20*1矩阵

W_derivative += np.dot((WXPlusb - data_Y).T, data_X)

W偏导矩阵形状=1*20矩阵乘上 20*5矩阵=1*5矩阵

b_derivative += np.dot(np.ones(shape=[1, data_X.shape[0]]), WXPlusb - data_Y)

b是一个数,用1*20的全1矩阵乘上20*1矩阵=一个数

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python多线程编程方式分析示例详解
Dec 06 Python
Python编程入门之Hello World的三种实现方式
Nov 13 Python
python使用arcpy.mapping模块批量出图
Mar 06 Python
Python中生成器和迭代器的区别详解
Feb 10 Python
在cmd中运行.py文件: python的操作步骤
May 12 Python
PyQt5实现QLineEdit添加clicked信号的方法
Jun 25 Python
使用 python pyautogui实现鼠标键盘控制功能
Aug 04 Python
关于python导入模块import与常见的模块详解
Aug 28 Python
python求绝对值的三种方法小结
Dec 04 Python
python如何实现不可变字典inmutabledict
Jan 08 Python
mac使用python识别图形验证码功能
Jan 10 Python
PyCharm安装PyQt5及其工具(Qt Designer、PyUIC、PyRcc)的步骤详解
Nov 02 Python
python实现机器学习之元线性回归
Sep 06 #Python
Python import与from import使用及区别介绍
Sep 06 #Python
用python实现k近邻算法的示例代码
Sep 06 #Python
python K近邻算法的kd树实现
Sep 06 #Python
pyqt5的QComboBox 使用模板的具体方法
Sep 06 #Python
Python多线程编程之多线程加锁操作示例
Sep 06 #Python
python中将\\uxxxx转换为Unicode字符串的方法
Sep 06 #Python
You might like
php+mysql事务rollback&commit示例
2010/02/08 PHP
php数组分页实现方法
2016/04/30 PHP
Yii框架Session与Cookie使用方法示例
2019/10/14 PHP
Javascript JSQL,SQL无处不在,
2010/05/05 Javascript
javascript window.confirm确认 取消对话框实现代码小结
2012/10/21 Javascript
jquery1.83 之前所有与异步列队相关的模块详细介绍
2012/11/13 Javascript
js获取class的所有元素
2013/03/28 Javascript
理运用命名空间让js不产生冲突避免全局变量的泛滥
2014/06/15 Javascript
Javascript字符串浏览器兼容问题分析
2014/12/01 Javascript
JS清除选择内容的方法
2015/01/29 Javascript
浅谈JavaScript中setInterval和setTimeout的使用问题
2015/08/01 Javascript
IScroll5 中文API参数说明和调用方法
2016/05/21 Javascript
JavaScript实现星级评分
2017/01/12 Javascript
JS中input表单隐藏域及其使用方法
2017/02/13 Javascript
Django1.7+JQuery+Ajax验证用户注册集成小例子
2017/04/08 jQuery
layui弹出框Tab选项卡的示例代码
2019/09/04 Javascript
Angular 多级路由实现登录页面跳转(小白教程)
2019/11/19 Javascript
js通过canvas生成图片缩略图
2020/10/02 Javascript
python实现逆波兰计算表达式实例详解
2015/05/06 Python
Python函数式编程指南(二):从函数开始
2015/06/24 Python
玩转python爬虫之爬取糗事百科段子
2016/02/17 Python
Pycharm学习教程(5) Python快捷键相关设置
2017/05/03 Python
Django中的Signal代码详解
2018/02/05 Python
如何在Python中实现goto语句的方法
2019/05/18 Python
django3.02模板中的超链接配置实例代码
2020/02/04 Python
python图形界面开发之wxPython树控件使用方法详解
2020/02/24 Python
西班牙自行车和跑步商店:Alltricks
2018/07/07 全球购物
Moss Bros官网:英国排名第一的西装店
2020/02/26 全球购物
美国饼干礼物和美食甜点购买网站:Cheryl’s
2020/05/28 全球购物
介绍一下JNDI的基本概念
2013/07/26 面试题
土木工程毕业生自荐信
2013/09/21 职场文书
营销与策划专业求职信
2014/06/20 职场文书
2015年秋季小学开学标语
2015/07/16 职场文书
一文读懂go中semaphore(信号量)源码
2021/04/03 Golang
MySQL中几种插入和批量语句实例详解
2021/09/14 MySQL
苹果发布了MagSafe固件更新,可以不外接电源实现最高7.5W充电
2022/04/21 数码科技