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中argparse模块用法实例详解
Jun 03 Python
python获得一个月有多少天的方法
Jun 04 Python
python比较两个列表大小的方法
Jul 11 Python
在Django的session中使用User对象的方法
Jul 23 Python
Python、PyCharm安装及使用方法(Mac版)详解
Apr 28 Python
python 重命名轴索引的方法
Nov 10 Python
python 判断文件还是文件夹的简单实例
Jun 10 Python
python如何爬取网页中的文字
Jul 28 Python
Python Sqlalchemy如何实现select for update
Oct 12 Python
python的数学算法函数及公式用法
Nov 18 Python
Python超简单容易上手的画图工具库推荐
May 10 Python
Python中的xlrd模块使用整理
Jun 15 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
ADODB的数据库封包程序库
2006/12/31 PHP
php与mysql建立连接并执行SQL语句的代码
2011/07/04 PHP
使用PHP备份MYSQL数据的多种方法
2014/01/15 PHP
详解php中serialize()和unserialize()函数
2017/07/08 PHP
php使用redis的几种常见操作方式和用法示例
2020/02/20 PHP
Jquery知识点一 Jquery的ready和Dom的onload的区别
2011/01/15 Javascript
js计算时间差代码【包括计算,天,时,分,秒】
2016/04/26 Javascript
浅析Bootstrap表格的使用
2016/06/23 Javascript
ui组件之input多选下拉实现方法(带有搜索功能)
2016/07/14 Javascript
JavaScript中localStorage对象存储方式实例分析
2017/01/12 Javascript
基于vue组件实现猜数字游戏
2020/05/28 Javascript
利用vue + koa2 + mockjs模拟数据的方法教程
2017/11/22 Javascript
Vue三层嵌套路由的示例代码
2018/05/05 Javascript
浅谈webpack 构建性能优化策略小结
2018/06/13 Javascript
详解如何制作并发布一个vue的组件的npm包
2018/11/10 Javascript
webpack中如何使用雪碧图的示例代码
2018/11/11 Javascript
详解async/await 异步应用的常用场景
2019/05/13 Javascript
Nautil 中使用双向数据绑定的实现
2019/10/02 Javascript
[56:46]2018DOTA2亚洲邀请赛 3.31 小组赛 B组 VP vs Effect
2018/04/01 DOTA
在Python程序中操作MySQL的基本方法
2015/07/29 Python
Python使用QRCode模块生成二维码实例详解
2017/06/14 Python
python django框架中使用FastDFS分布式文件系统的安装方法
2019/06/10 Python
对python3 Serial 串口助手的接收读取数据方法详解
2019/06/12 Python
在Python函数中输入任意数量参数的实例
2019/07/16 Python
如何在VSCode上轻松舒适的配置Python的方法步骤
2019/10/28 Python
python如何利用Mitmproxy抓包
2020/10/10 Python
如何删除一个表里面的重复行
2013/07/13 面试题
前台接待的工作职责
2013/11/21 职场文书
哈理工毕业生的求职信
2013/12/22 职场文书
经济管理专业自荐信
2013/12/30 职场文书
学校工作推荐信范文
2014/07/11 职场文书
高速铁道技术专业求职信
2014/08/09 职场文书
教师三严三实学习心得体会
2014/10/11 职场文书
2015秋季开学典礼主持词
2015/07/16 职场文书
Python+tkinter实现高清图片保存
2022/03/13 Python
uniapp 微信小程序 自定义tabBar 导航
2022/04/22 Javascript