python实现梯度下降法


Posted in Python onMarch 24, 2020

本文实例为大家分享了python实现梯度下降法的具体代码,供大家参考,具体内容如下

使用工具:Python(x,y) 2.6.6
运行环境:Windows10

问题:求解y=2*x1+x2+3,即使用梯度下降法求解y=a*x1+b*x2+c中参数a,b,c的最优值(监督学习)

训练数据:

x_train=[1, 2], [2, 1],[2, 3], [3, 5], [1,3], [4, 2], [7, 3], [4, 5], [11, 3], [8, 7]

y_train=[7, 8, 10, 14, 8, 13, 20, 16, 28,26]

测试数据:

x_test = [1, 4],[2, 2],[2, 5],[5, 3],[1,5],[4, 1]

# -*- coding: utf-8 -*-
"""
Created on Wed Nov 16 09:37:03 2016
@author: Jason
"""
 
import numpy as np
import matplotlib.pyplot as plt
 
# y=2 * (x1) + (x2) + 3 
 
rate = 0.001
x_train = np.array([[1, 2], [2, 1],[2, 3], [3, 5], [1, 3], [4, 2], [7, 3], [4, 5], [11, 3], [8, 7] ])
y_train = np.array([7, 8, 10, 14, 8, 13, 20, 16, 28, 26])
x_test = np.array([[1, 4],[2, 2],[2, 5],[5, 3],[1, 5],[4, 1]])
 
a = np.random.normal()
b = np.random.normal()
c = np.random.normal()
 
def h(x):
 return a*x[0]+b*x[1]+c
 
for i in range(100):
 sum_a=0
 sum_b=0
 sum_c=0
 
 for x, y in zip(x_train, y_train):  
  for xi in x:
   sum_a = sum_a+ rate*(y-h(x))*xi
   sum_b = sum_b+ rate*(y-h(x))*xi
   #sum_c = sum_c + rate*(y-h(x)) *1   
   
   a = a + sum_a
   b = b + sum_b
   c = c + sum_c
   plt.plot([h(xi) for xi in x_test])
 
 
print(a)
print(b)
print(c)
 
result=[h(xi) for xi in x_train]
print(result)
 
result=[h(xi) for xi in x_test]
print(result)
 
plt.show()

运行结果:

python实现梯度下降法

结论:线段是在逐渐逼近的,训练数据越多,迭代次数越多就越逼近真实值。

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

Python 相关文章推荐
python抓取网页中的图片示例
Feb 28 Python
Python中的作用域规则详解
Jan 30 Python
利用Python爬取微博数据生成词云图片实例代码
Aug 31 Python
利用Python循环(包括while&for)各种打印九九乘法表的实例
Nov 06 Python
python 实时得到cpu和内存的使用情况方法
Jun 11 Python
python+opencv实现阈值分割
Dec 26 Python
Django数据库连接丢失问题的解决方法
Dec 29 Python
python使用pymongo操作mongo的完整步骤
Apr 13 Python
django使用F方法更新一个对象多个对象字段的实现
Mar 28 Python
浅谈python 调用open()打开文件时路径出错的原因
Jun 05 Python
Python如何使用27行代码绘制星星图
Jul 20 Python
python 利用PyAutoGUI快速构建自动化操作脚本
May 31 Python
pycharm下配置pyqt5的教程(anaconda虚拟环境下+tensorflow)
Mar 25 #Python
pycharm通过anaconda安装pyqt5的教程
Mar 24 #Python
详解PyQt5信号与槽的几种高级玩法
Mar 24 #Python
Windows10+anacond+GPU+pytorch安装详细过程
Mar 24 #Python
Python多进程multiprocessing、进程池用法实例分析
Mar 24 #Python
PyCharm Anaconda配置PyQt5开发环境及创建项目的教程详解
Mar 24 #Python
Python多线程通信queue队列用法实例分析
Mar 24 #Python
You might like
PHP的array_diff()函数在处理大数组时的效率问题
2011/11/27 PHP
php 验证码(倾斜,正弦干扰线,黏贴,旋转)
2013/06/29 PHP
PHP中exec与system用法区别分析
2014/09/22 PHP
学习php设计模式 php实现门面模式(Facade)
2015/12/07 PHP
jquery 图片截取工具jquery.imagecropper.js
2010/04/09 Javascript
输入自动提示搜索提示功能的javascript:sugggestion.js
2013/09/02 Javascript
jQuery 属性选择器element[herf*='value']使用示例
2013/10/20 Javascript
js字符串转换成数字与数字转换成字符串的实现方法
2014/01/08 Javascript
网页广告中JS代码的信息监听示例
2014/04/02 Javascript
学习JavaScript设计模式(策略模式)
2015/11/26 Javascript
Vue.js每天必学之组件与组件间的通信
2016/09/08 Javascript
微信小程序 实例应用(记账)详解
2016/09/28 Javascript
使用 jQuery 实现表单验证功能
2017/07/05 jQuery
使用JavaScript实现一个小程序之99乘法表
2017/09/21 Javascript
解决IE11 vue +webpack 项目中数据更新后页面没有刷新的问题
2018/09/25 Javascript
node.js中module模块的功能理解与用法实例分析
2020/02/14 Javascript
vue实现全屏滚动效果(非fullpage.js)
2020/03/07 Javascript
js 将多个对象合并成一个对象 assign方法的实现
2020/09/24 Javascript
[43:58]DOTA2上海特级锦标赛C组败者赛 Newbee VS Archon第二局
2016/02/27 DOTA
[01:02:46]VGJ.S vs NB 2018国际邀请赛小组赛BO2 第二场 8.18
2018/08/19 DOTA
Python实现的生成自我描述脚本分享(很有意思的程序)
2014/07/18 Python
Python原始字符串与Unicode字符串操作符用法实例分析
2017/07/22 Python
将tensorflow模型打包成PB文件及PB文件读取方式
2020/01/23 Python
python+selenium 脚本实现每天自动登记的思路详解
2020/03/11 Python
PYcharm 激活方法(推荐)
2020/03/23 Python
中外合拍动画首获奥斯卡提名,“上海出品”《飞奔去月球》能否拿下最终大奖?
2021/03/16 国漫
英国户外装备和冒险服装零售商:alloutdoor
2018/01/30 全球购物
MYSQL基础面试题
2012/05/13 面试题
工程业务员岗位职责
2013/12/31 职场文书
铁路工务反思材料
2014/02/07 职场文书
安全横幅标语
2014/06/09 职场文书
停车位租赁协议书
2014/09/24 职场文书
2014年学校工作总结
2014/11/20 职场文书
爱心捐书倡议书
2015/04/27 职场文书
2019年中,最受大众欢迎的6本新书
2019/08/07 职场文书
2019入党申请书范文3篇
2019/08/21 职场文书