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的即时标记项目练习笔记
Sep 18 Python
python用来获得图片exif信息的库实例分析
Mar 16 Python
python 调用HBase的简单实例
Dec 18 Python
windows下python连接oracle数据库
Jun 07 Python
Python实现的文本编辑器功能示例
Jun 30 Python
Python简单实现自动删除目录下空文件夹的方法
Aug 29 Python
Python模块搜索路径代码详解
Jan 29 Python
Python3 中把txt数据文件读入到矩阵中的方法
Apr 27 Python
django的csrf实现过程详解
Jul 26 Python
如何用 Python 制作一个迷宫游戏
Feb 25 Python
正确的理解和使用Django信号(Signals)
Apr 14 Python
python_tkinter弹出对话框创建
Mar 20 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
MySQL连接数超过限制的解决方法
2011/07/17 PHP
基于MySQL体系结构的分析
2013/05/02 PHP
PHP之APC缓存详细介绍 apc模块安装
2014/01/13 PHP
PHP获取网页所有连接的方法(附demo源码下载)
2016/03/30 PHP
JavaScipt基本教程之JavaScript语言的基础
2008/01/16 Javascript
返回对象在当前级别中是第几个元素的实现代码
2011/01/20 Javascript
JS 实现图片直接下载示例代码
2013/07/22 Javascript
jquery选择器之基本过滤选择器详解
2014/01/27 Javascript
jQuery中noconflict函数的实现原理分解
2015/02/03 Javascript
Sort()函数的多种用法
2016/03/20 Javascript
jquery if条件语句的写法
2016/05/19 Javascript
基于gulp合并压缩Seajs模块的方式说明
2016/06/14 Javascript
微信小程序中单位rpx和rem的使用
2016/12/06 Javascript
angularjs之$timeout指令详解
2017/06/13 Javascript
Vue.JS项目中5个经典Vuex插件
2017/11/28 Javascript
js实现类似iphone的网页滑屏解锁功能示例【附源码下载】
2019/06/10 Javascript
Vue-cli3.X使用px2 rem遇到的问题及解决方法
2019/08/08 Javascript
vue在路由中验证token是否存在的简单实现
2019/11/11 Javascript
python批量下载图片的三种方法
2013/04/22 Python
python基于socket实现网络广播的方法
2015/04/29 Python
Python正则表达式匹配中文用法示例
2017/01/17 Python
tensorflow创建变量以及根据名称查找变量
2018/03/10 Python
Python线程同步的实现代码
2018/10/03 Python
python使用pandas抽样训练数据中某个类别实例
2020/02/28 Python
python3 使用traceback定位异常实例
2020/03/09 Python
Python Selenium库的基本使用教程
2021/01/04 Python
selenium携带cookies模拟登陆CSDN的实现
2021/01/19 Python
教师的实习鉴定
2013/12/15 职场文书
高中生职业规划范文
2014/03/09 职场文书
技校毕业生自荐信
2014/06/03 职场文书
公司委托书格式
2014/08/01 职场文书
摄影专业毕业生求职信
2014/08/05 职场文书
初中生旷课检讨书范文
2014/10/06 职场文书
应届毕业生求职信范文
2015/03/19 职场文书
爱国主义影片观后感
2015/06/18 职场文书
素质教育培训心得体会
2016/01/19 职场文书