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 GAE、Django导出Excel的方法
Nov 24 Python
Python的collections模块中的OrderedDict有序字典
Jul 07 Python
详解python的webrtc库实现语音端点检测
May 31 Python
matplotlib简介,安装和简单实例代码
Dec 26 Python
Python读取MRI并显示为灰度图像实例代码
Jan 03 Python
高效使用Python字典的清单
Apr 04 Python
Python实现的读取/更改/写入xml文件操作示例
Aug 30 Python
python用fsolve、leastsq对非线性方程组求解
Dec 15 Python
对python for 文件指定行读写操作详解
Dec 29 Python
利用Python实现斐波那契数列的方法实例
Jul 26 Python
5款实用的python 工具推荐
Oct 13 Python
关于python3.9安装wordcloud出错的问题及解决办法
Nov 02 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
初学CAKEPHP 基础教程
2009/11/02 PHP
php变量作用域的深入解析
2013/06/03 PHP
PHP实现的随机IP函数【国内IP段】
2016/07/20 PHP
PHP实现在windows下配置sendmail并通过mail()函数发送邮件的方法
2017/06/20 PHP
Laravel中为什么不使用blpop取队列详析
2018/08/01 PHP
javascript 获取图片颜色
2009/04/05 Javascript
JS事件Event元素(兼容IE,Firefox,Chorme)
2012/11/01 Javascript
js控制href内容的连接内容的变化示例
2014/04/30 Javascript
jQuery动态修改超链接地址的方法
2015/02/13 Javascript
JS中this上下文对象使用方式
2016/10/09 Javascript
详解Jquery 遍历数组之$().each方法与$.each()方法介绍
2017/01/09 Javascript
javascript判断元素存在和判断元素存在于实时的dom中的方法
2017/01/17 Javascript
JavaScript箭头函数_动力节点Java学院整理
2017/06/28 Javascript
jQuery中.attr()和.data()的区别分析
2017/09/03 jQuery
初探Vue3.0 中的一大亮点Proxy的使用
2018/12/06 Javascript
ES6知识点整理之函数数组参数的默认值及其解构应用示例
2019/04/17 Javascript
Python实现爬取知乎神回复简单爬虫代码分享
2015/01/04 Python
Python实现屏幕截图的代码及函数详解
2016/10/01 Python
Python用户推荐系统曼哈顿算法实现完整代码
2017/12/01 Python
浅析python实现scrapy定时执行爬虫
2018/03/04 Python
Python3实现购物车功能
2018/04/18 Python
Python实现的朴素贝叶斯算法经典示例【测试可用】
2018/06/13 Python
详解Python列表赋值复制深拷贝及5种浅拷贝
2019/05/15 Python
windows下安装Python虚拟环境virtualenvwrapper-win
2019/06/14 Python
pandas 空数据处理方法详解
2019/11/02 Python
python实现12306登录并保存cookie的方法示例
2019/12/17 Python
Python openpyxl 插入折线图实例
2020/04/17 Python
pandas按条件筛选数据的实现
2021/02/20 Python
HTML5实现可缩放时钟代码
2017/08/28 HTML / CSS
荷兰睡眠专家:Beter Bed
2020/11/23 全球购物
建筑设计学生的自我评价
2014/01/16 职场文书
党员干部群众路线个人整改措施
2014/09/18 职场文书
征用土地赔偿协议书
2014/09/26 职场文书
家装业务员岗位职责
2015/04/03 职场文书
2015年学校教务处工作总结
2015/05/11 职场文书
Logback 使用TurboFilter实现日志级别等内容的动态修改操作
2021/08/30 Java/Android