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实现简单拆分PDF文件的方法
Jul 30 Python
pandas的object对象转时间对象的方法
Apr 11 Python
python按照多个条件排序的方法
Feb 08 Python
python+selenium实现自动化百度搜索关键词
Jun 03 Python
Python批量生成幻影坦克图片实例代码
Jun 04 Python
opencv3/C++实现视频读取、视频写入
Dec 11 Python
基于python爬取有道翻译过程图解
Mar 31 Python
Python自动重新加载模块详解(autoreload module)
Apr 01 Python
Python爬虫获取页面所有URL链接过程详解
Jun 04 Python
Python使用文件操作实现一个XX信息管理系统的示例
Jul 02 Python
如何教少儿学习Python编程
Jul 10 Python
Python爬虫基础讲解之请求
May 13 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
php5.3中连接sqlserver2000的两种方法(com与ODBC)
2012/12/29 PHP
关于file_get_contents返回为空或函数不可用的解决方案
2013/06/24 PHP
ThinkPHP CURD方法之order方法详解
2014/06/18 PHP
个人写的PHP验证码生成类分享
2014/08/21 PHP
PHP表单提交后引号前自动加反斜杠的原因及三种办法关闭php魔术引号
2015/09/30 PHP
Laravel 5.2 文档 数据库 ―― 起步介绍
2019/10/21 PHP
jquery 插件之仿“卓越亚马逊”首页弹出菜单效果
2008/12/25 Javascript
JavaScript开发Chrome浏览器扩展程序UI的教程
2016/05/16 Javascript
基于JavaScript FileReader上传图片显示本地链接
2016/05/27 Javascript
JavaSctit 利用FileReader和滤镜上传图片预览功能
2017/09/05 Javascript
node.js 核心http模块,起一个服务器,返回一个页面的实例
2017/09/11 Javascript
js中null与空字符串""的区别讲解
2019/01/17 Javascript
详解微信小程序实现仿微信聊天界面(各种细节处理)
2019/02/17 Javascript
JS实现滚动条触底加载更多
2019/09/19 Javascript
小程序跳转H5页面的方法步骤
2020/03/06 Javascript
JS脚本实现定时到网站上签到/签退功能
2020/04/22 Javascript
vue组件开发之tab切换组件使用详解
2020/08/21 Javascript
Python使用cx_Oracle模块操作Oracle数据库详解
2018/05/07 Python
matplotlib subplots 调整子图间矩的实例
2018/05/25 Python
使用python获取(宜宾市地震信息)地震信息
2019/06/20 Python
使用python+whoosh实现全文检索
2019/12/09 Python
keras .h5转移动端的.tflite文件实现方式
2020/05/25 Python
中科软笔试题和面试题
2014/10/07 面试题
综合办公室主任职责
2013/12/16 职场文书
音乐教育感言
2014/03/05 职场文书
捐资助学倡议书
2014/04/15 职场文书
《恐龙》教学反思
2014/04/27 职场文书
经济贸易系求职信
2014/08/04 职场文书
党员干部观看《周恩来四个昼夜》思想汇报
2014/09/10 职场文书
平面设计师岗位职责
2014/09/18 职场文书
2015少先队大队辅导员工作总结
2015/07/24 职场文书
计算机教师工作总结
2015/08/13 职场文书
2015年党风廉政建设个人总结
2015/08/18 职场文书
2016年基层党组织公开承诺书
2016/03/25 职场文书
Django中session进行权限管理的使用
2021/07/09 Python
PostgreSQL13基于流复制搭建后备服务器的方法
2022/01/18 PostgreSQL