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文件和目录操作函数小结
Jul 11 Python
python实现超简单端口转发的方法
Mar 13 Python
python字符串str和字节数组相互转化方法
Mar 18 Python
对python 矩阵转置transpose的实例讲解
Apr 17 Python
对Python3中的input函数详解
Apr 22 Python
浅析python3中的os.path.dirname(__file__)的使用
Aug 30 Python
python实现机器学习之多元线性回归
Sep 06 Python
Python with标签使用方法解析
Jan 17 Python
Selenium Webdriver元素定位的八种常用方式(小结)
Jan 13 Python
python re模块常见用法例举
Mar 01 Python
Python基础之赋值,浅拷贝,深拷贝的区别
Apr 30 Python
Python中使用Opencv开发停车位计数器功能
Apr 04 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
在任意字符集下正常显示网页的方法二(续)
2007/04/01 PHP
PHP的反射类ReflectionClass、ReflectionMethod使用实例
2014/08/05 PHP
php中smarty模板条件判断用法实例
2015/06/11 PHP
PHP6连接SQLServer2005的三部曲
2016/04/15 PHP
PHP实现读取文件夹及批量重命名文件操作示例
2019/04/15 PHP
在浏览器中获取当前执行的脚本文件名的代码
2011/07/19 Javascript
js的2种继承方式详解
2014/03/04 Javascript
jquery鼠标放上去显示悬浮层即弹出定位的div层
2014/04/25 Javascript
Javascript的闭包详解
2014/12/26 Javascript
Linux下编译安装php libevent扩展实例
2015/02/14 Javascript
JavaScript数据库TaffyDB用法实例分析
2015/07/27 Javascript
jquery制作属于自己的select自定义样式
2015/11/23 Javascript
值得分享和收藏的Bootstrap学习教程
2016/05/12 Javascript
灵活使用数组制作图片切换js实现
2016/07/28 Javascript
半个小时学json(json传递示例)
2016/12/25 Javascript
vue实现动态数据绑定
2017/04/28 Javascript
11行JS代码制作二维码生成功能
2018/03/09 Javascript
vue项目webpack中Npm传递参数配置不同域名接口
2018/06/15 Javascript
React降级配置及Ant Design配置详解
2018/12/27 Javascript
微信小程序导航栏跟随滑动效果的实现代码
2019/05/14 Javascript
微信自定义分享链接信息(标题,图片和内容)实现过程详解
2019/09/04 Javascript
vue等两个接口都返回结果再执行下一步的实例
2020/09/08 Javascript
python递归打印某个目录的内容(实例讲解)
2017/08/30 Python
Python基于回溯法子集树模板解决取物搭配问题实例
2017/09/02 Python
python实现百度OCR图片识别过程解析
2020/01/17 Python
pytorch加载自己的图像数据集实例
2020/07/07 Python
Pytorch框架实现mnist手写库识别(与tensorflow对比)
2020/07/20 Python
AmazeUI中模态框的实现
2020/08/19 HTML / CSS
英国著名的小众美容品牌网站:Alyaka
2017/08/08 全球购物
J2SDK1.5与J2SDK5.0有什么区别
2012/09/19 面试题
路政管理专业个人自荐信范文
2013/11/30 职场文书
应届生求职自荐信范文
2014/04/07 职场文书
党的群众路线教育实践活动剖析材料
2014/09/30 职场文书
2014年售后服务工作总结
2014/11/18 职场文书
公司催款律师函
2015/05/27 职场文书
《给予树》教学反思
2016/03/03 职场文书