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获得时间的实例说明
Mar 25 Python
python连接mysql调用存储过程示例
Mar 05 Python
Python中不同进制互相转换(二进制、八进制、十进制和十六进制)
Apr 05 Python
python实现的简单窗口倒计时界面实例
May 05 Python
对numpy中轴与维度的理解
Apr 18 Python
Python随机生成身份证号码及校验功能
Dec 04 Python
Python基于百度云文字识别API
Dec 13 Python
使用python opencv对目录下图片进行去重的方法
Jan 12 Python
详解python的argpare和click模块小结
Mar 31 Python
python调用摄像头拍摄数据集
Jun 01 Python
详解基于python的多张不同宽高图片拼接成大图
Sep 26 Python
python 读取二进制 显示图片案例
Apr 24 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
Youku 视频绝对地址获取的方法详解
2013/06/26 PHP
浅析Mysql 数据回滚错误的解决方法
2013/08/05 PHP
自编函数解决pathinfo()函数处理中文问题
2014/11/03 PHP
基于thinkPHP实现的微信自定义分享功能示例
2016/09/23 PHP
JS 文字符串转换unicode编码函数
2009/05/30 Javascript
来自国外的30个基于jquery的Web下拉菜单
2012/06/22 Javascript
Js中获取frames中的元素示例代码
2013/07/30 Javascript
基于JQuery的列表拖动排序实现代码
2013/10/01 Javascript
基于jquery css3实现点击动画弹出表单源码特效
2015/08/31 Javascript
js带点自动图片轮播幻灯片特效代码分享
2015/09/07 Javascript
轻松学习jQuery插件EasyUI EasyUI实现树形网络基本操作(2)
2015/11/30 Javascript
jQuery加密密码到cookie的实现代码
2017/04/18 jQuery
Vue 中的compile操作方法
2018/02/26 Javascript
Vue.js进阶知识点总结
2018/04/01 Javascript
Flutter实现仿微信底部菜单栏功能
2019/09/18 Javascript
Node.js Domain 模块实例详解
2020/03/18 Javascript
[04:45]DOTA2上海特级锦标赛主赛事第四日RECAP
2016/03/06 DOTA
[01:06:25]Secret vs Liquid 2018国际邀请赛淘汰赛BO3 第一场 8.25
2018/08/29 DOTA
python字符串连接方式汇总
2014/08/21 Python
深入解析Python设计模式编程中建造者模式的使用
2016/03/02 Python
python中私有函数调用方法解密
2016/04/29 Python
Anaconda下配置python+opencv+contribx的实例讲解
2018/08/06 Python
使用Python批量修改文件名的代码实例
2019/01/24 Python
Python在cmd上打印彩色文字实现过程详解
2019/08/07 Python
wxpython多线程防假死与线程间传递消息实例详解
2019/12/13 Python
python pillow库的基础使用教程
2021/01/13 Python
CSS3的颜色渐变效果的示例代码
2017/09/29 HTML / CSS
美国在线自行车商店:Jenson USA
2018/05/22 全球购物
人力资源部门的主要职能
2014/02/22 职场文书
学校春季防火方案
2014/06/08 职场文书
党员目标管理责任书
2014/07/25 职场文书
通知的写法
2015/04/23 职场文书
环境保护宣传标语大全!
2019/06/28 职场文书
MySQL Router的安装部署
2021/04/24 MySQL
HashMap实现保存两个key相同的数据
2021/06/30 Java/Android
Python实现照片卡通化
2021/12/06 Python