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 相关文章推荐
Python3遍历目录树实现方法
May 22 Python
Python OS模块常用函数说明
May 23 Python
python实现批量监控网站
Sep 09 Python
Python下载网络文本数据到本地内存的四种实现方法示例
Feb 05 Python
用python写扫雷游戏实例代码分享
May 27 Python
python获取本机所有IP地址的方法
Dec 26 Python
python读取各种文件数据方法解析
Dec 29 Python
PyQt5多线程刷新界面防假死示例
Dec 13 Python
使用python修改文件并立即写回到原始位置操作(inplace读写)
Jun 28 Python
Python调用JavaScript代码的方法
Oct 27 Python
python实现socket简单通信的示例代码
Apr 13 Python
Python生成九宫格图片的示例代码
Apr 14 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
ext 同步和异步示例代码
2009/09/18 Javascript
jQuery图片预加载 等比缩放实现代码
2011/10/04 Javascript
jquery ajax方式直接提交整个表单核心代码
2013/08/15 Javascript
jquery中插件实现自动添加用户的具体代码
2013/11/15 Javascript
实用jquery操作表单元素的简单代码
2016/07/04 Javascript
使用BootStrapValidator完成前端输入验证
2016/09/28 Javascript
详解微信小程序——自定义圆形进度条
2016/12/29 Javascript
使用DeviceOne实现微信小程序功能
2016/12/29 Javascript
jQuery中ztree 点击文本框弹出下拉框的实例代码
2017/02/05 Javascript
js时间戳格式化成日期格式的多种方法介绍
2017/02/16 Javascript
js 数字、字符串、布尔值的转换方法(必看)
2017/04/07 Javascript
微信小程序获取用户openId的实现方法
2017/05/23 Javascript
详解React native fetch遇到的坑
2018/08/30 Javascript
JS调用安卓手机摄像头扫描二维码
2018/10/16 Javascript
vue权限管理系统的实现代码
2019/01/17 Javascript
原生JS使用Canvas实现拖拽式绘图功能
2019/06/05 Javascript
jQuery 实现DOM元素拖拽交换位置的实例代码
2020/07/14 jQuery
解决element-ui的下拉框有值却无法选中的情况
2020/11/07 Javascript
vue 避免变量赋值后双向绑定的操作
2020/11/07 Javascript
使用Vant完成DatetimePicker 日期的选择器操作
2020/11/12 Javascript
[01:59]游戏“zheng”当时试玩会
2019/08/21 DOTA
python使用reportlab画图示例(含中文汉字)
2013/12/03 Python
Python标准库之多进程(multiprocessing包)介绍
2014/11/25 Python
python的常用模块之collections模块详解
2018/12/06 Python
Python判断对象是否为文件对象(file object)的三种方法示例
2019/04/26 Python
使用Pycharm分段执行代码
2020/04/15 Python
python plt可视化——打印特殊符号和制作图例代码
2020/04/17 Python
python golang中grpc 使用示例代码详解
2020/06/03 Python
CSS3教程(7):CSS3嵌入字体
2009/04/02 HTML / CSS
HTML5网页录音和上传到服务器支持PC、Android,支持IOS微信功能
2019/04/26 HTML / CSS
印尼美容产品购物网站:PerfectBeauty.id
2017/12/01 全球购物
Supersmart英国:欧洲市场首批食品补充剂供应商之一
2018/05/05 全球购物
Boden澳大利亚官网:英国在线服装公司
2018/08/05 全球购物
反腐倡廉警示教育活动总结
2014/05/05 职场文书
法院授权委托书范文
2014/08/02 职场文书
SQL Server删除表中的重复数据
2022/05/25 SQL Server