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 相关文章推荐
解决windows下Sublime Text 2 运行 PyQt 不显示的方法分享
Jun 18 Python
使用Python制作获取网站目录的图形化程序
May 04 Python
Python手机号码归属地查询代码
May 04 Python
在python中pandas读文件,有中文字符的方法
Dec 12 Python
利用python实现短信和电话提醒功能的例子
Aug 08 Python
Python程序控制语句用法实例分析
Jan 14 Python
python+adb命令实现自动刷视频脚本案例
Apr 23 Python
matplotlib图例legend语法及设置的方法
Jul 28 Python
python闭包与引用以及需要注意的陷阱
Sep 18 Python
python 利用Pyinstaller打包Web项目
Oct 23 Python
django项目中使用云片网发送短信验证码的实现
Jan 19 Python
Windows安装Anaconda3的方法及使用过程详解
Jun 11 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
Yii2针对游客、用户防范规则和限制的解决方法分析
2016/10/08 PHP
php技巧小结【推荐】
2017/01/19 PHP
yii框架结合charjs统计上一年与当前年数据的方法示例
2020/04/04 PHP
利用PHP计算有多少小于当前数字的数字方法示例
2020/08/26 PHP
ExtJs 3.1 XmlTreeLoader Example Error
2010/02/09 Javascript
对setInterval在火狐和chrome切换标签产生奇怪的效果之探索,与解决方案!
2011/10/29 Javascript
在新窗口打开超链接的方法小结
2013/04/14 Javascript
$.each遍历对象、数组的属性值并进行处理
2014/07/18 Javascript
js获取元素相对窗口位置的实现代码
2014/09/28 Javascript
jQuery实现指定内容滚动同时左侧或其它地方不滚动的方法
2015/08/08 Javascript
详解jQuery中的empty、remove和detach
2016/04/11 Javascript
JQuery用$.ajax或$.getJSON跨域获取JSON数据的实现代码
2017/09/23 jQuery
react-router browserHistory刷新页面404问题解决方法
2017/12/29 Javascript
vue组件文档(.md)中如何自动导入示例(.vue)详解
2019/01/25 Javascript
聊聊Vue中provide/inject的应用详解
2019/11/10 Javascript
[04:45]上海特级锦标赛主赛事第三日TOP10
2016/03/05 DOTA
python网络编程学习笔记(六):Web客户端访问
2014/06/09 Python
Python使用修饰器执行函数的参数检查功能示例
2017/09/26 Python
Python装饰器(decorator)定义与用法详解
2018/02/09 Python
python实现决策树ID3算法的示例代码
2018/05/30 Python
Python实现分段线性插值
2018/12/17 Python
详解python3安装pillow后报错没有pillow模块以及没有PIL模块问题解决
2019/04/17 Python
python实现支付宝转账接口
2019/05/07 Python
python实现图片插入文字
2019/11/26 Python
Python中url标签使用知识点总结
2020/01/16 Python
Django调用百度AI接口实现人脸注册登录代码实例
2020/04/23 Python
Pycharm连接gitlab实现过程图解
2020/09/01 Python
matplotlib阶梯图的实现(step())
2021/03/02 Python
纯css3实现的竖形无限级导航
2014/12/10 HTML / CSS
css3通过scale()、rotate()实现放大、旋转
2020/03/19 HTML / CSS
Vince官网:全球著名设计师品牌,休闲而优雅的服饰
2017/01/15 全球购物
美国珠宝店:Helzberg Diamonds
2018/10/24 全球购物
科颜氏印度官网:Kiehl’s印度
2021/02/20 全球购物
英语国培研修感言
2014/02/13 职场文书
圣诞节活动策划方案
2014/06/09 职场文书
宿舍管理制度范本
2015/08/07 职场文书