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读取word文档的方法
May 09 Python
Python获取暗黑破坏神3战网前1000命位玩家的英雄技能统计
Jul 04 Python
Python中使用bidict模块双向字典结构的奇技淫巧
Jul 12 Python
Python之os操作方法(详解)
Jun 15 Python
Python 比较两个数组的元素的异同方法
Aug 17 Python
python生成二维码的实例详解
Oct 29 Python
Python用imghdr模块识别图片格式实例解析
Jan 11 Python
python实现堆和索引堆的代码示例
Mar 19 Python
python pandas dataframe 按列或者按行合并的方法
Apr 12 Python
python 实现仿微信聊天时间格式化显示的代码
Apr 17 Python
Python使用cn2an实现中文数字与阿拉伯数字的相互转换
Mar 02 Python
Pandas数据类型之category的用法
Jun 28 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字符串截取问题
2006/11/28 PHP
实现 win2003 下 mysql 数据库每天自动备份
2006/12/06 PHP
PHP获取表单textarea数据中的换行问题
2010/09/10 PHP
探讨php中header的用法详解
2013/06/07 PHP
自定义session存储机制避免会话保持问题
2014/10/08 PHP
初识通用数据库操作类――前端easyui-datagrid,form(php)
2015/07/31 PHP
php等比例缩放图片及剪切图片代码分享
2016/02/13 PHP
php处理单文件、多文件上传代码分享
2016/08/24 PHP
PHP生成word文档的三种实现方式
2016/11/14 PHP
PHP获取当前执行php文件名的代码
2017/03/02 PHP
PHP日志LOG类定义与用法示例
2018/09/06 PHP
javascript 面向对象编程基础:封装
2009/08/21 Javascript
JS中toFixed()方法引起的问题如何解决
2012/11/20 Javascript
使用jquery+CSS实现控制打印样式
2014/12/31 Javascript
jQuery中slice()方法用法实例
2015/01/07 Javascript
纯javascript实现分页(两种方法)
2015/08/26 Javascript
JS实现的网页背景闪电闪烁效果代码
2015/10/17 Javascript
ie下js不执行的几种可能
2017/02/28 Javascript
React Native实现地址挑选器功能
2017/10/24 Javascript
CSS3结合jQuery实现动画效果及回调函数的实例
2017/12/27 jQuery
vue-cli安装使用流程步骤详解
2018/11/08 Javascript
JavaScript实现美化滑块效果
2019/05/17 Javascript
[09:31]2016国际邀请赛中国区预选赛Yao赛后采访 答题送礼
2016/06/27 DOTA
用Python制作简单的钢琴程序的教程
2015/04/01 Python
Python的Bottle框架中返回静态文件和JSON对象的方法
2015/04/30 Python
Python中使用urllib2模块编写爬虫的简单上手示例
2016/01/20 Python
pandas 数据索引与选取的实现方法
2019/06/21 Python
Django中使用session保持用户登陆连接的例子
2019/08/06 Python
python selenium爬取斗鱼所有直播房间信息过程详解
2019/08/09 Python
python实现图片二值化及灰度处理方式
2019/12/07 Python
菲律宾优惠券网站:MetroDeal
2019/04/12 全球购物
捷克母婴用品购物网站:Feedo.cz
2020/12/28 全球购物
党的群众路线教育实践活动个人对照检查材料(教师)
2014/11/04 职场文书
2015年双拥工作总结
2015/04/08 职场文书
城南旧事电影观后感
2015/06/16 职场文书
Win10加载疑难解答时出错发生意外错误的解决方法
2022/07/07 数码科技