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验证码识别
Jan 25 Python
python numpy函数中的linspace创建等差数列详解
Oct 13 Python
python实现简易内存监控
Jun 21 Python
解决Python下json.loads()中文字符出错的问题
Dec 19 Python
python批量获取html内body内容的实例
Jan 02 Python
python实现静态服务器
Sep 05 Python
opencv python如何实现图像二值化
Feb 03 Python
django为Form生成的label标签添加class方式
May 20 Python
使用python实现名片管理系统
Jun 18 Python
Python编写万花尺图案实例
Jan 03 Python
Python3 多线程(连接池)操作MySQL插入数据
Jun 09 Python
Django框架模板用法详解
Jun 10 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
Banner程序
2006/10/09 PHP
PHP的curl实现get,post和cookie(实例介绍)
2013/06/17 PHP
CI使用Tank Auth转移数据库导致密码用户错误的解决办法
2014/06/12 PHP
php 实现一个字符串加密解密的函数实例代码
2016/11/01 PHP
PHP+Ajax无刷新带进度条图片上传示例
2017/02/08 PHP
PHP实现Markdown文章上传到七牛图床的实例内容
2020/02/11 PHP
Laravel中如何轻松容易的输出完整的SQL语句
2020/07/26 PHP
Javascript YUI 读码日记之 YAHOO.util.Dom - Part.3
2008/03/22 Javascript
编写可维护面向对象的JavaScript代码[翻译]
2011/02/12 Javascript
$.getJSON在IE下失效的原因分析及解决方法
2013/06/16 Javascript
开发中可能会用到的jQuery小技巧
2014/03/07 Javascript
node.js中的fs.readlink方法使用说明
2014/12/17 Javascript
jQuery模拟新浪微博首页滚动效果的方法
2015/03/11 Javascript
jQuery使用removeClass方法删除元素指定Class的方法
2015/03/26 Javascript
Javascript aop(面向切面编程)之around(环绕)分析
2015/05/01 Javascript
整理Javascript数组学习笔记
2015/11/29 Javascript
js实现div在页面拖动效果
2016/05/04 Javascript
利用jquery实现下拉框的禁用与启用
2016/12/07 Javascript
基于Bootstrap table组件实现多层表头的实例代码
2017/09/07 Javascript
小程序scroll-view组件实现滚动的示例代码
2018/09/20 Javascript
使用Vue实现移动端左滑删除效果附源码
2019/05/16 Javascript
layui上传图片到服务器的非项目目录下的方法
2019/09/26 Javascript
使用Vue-cli3.0创建的项目 如何发布npm包
2019/10/10 Javascript
微信小程序实现滑动翻页效果(完整代码)
2019/12/06 Javascript
python BeautifulSoup使用方法详解
2013/11/21 Python
用十张图详解TensorFlow数据读取机制(附代码)
2018/02/06 Python
Python从函数参数类型引出元组实例分析
2019/05/28 Python
在PyCharm中遇到pip安装 失败问题及解决方案(pip失效时的解决方案)
2020/03/10 Python
阿拉伯世界最大的电子商务网站:Souq沙特阿拉伯
2016/10/28 全球购物
Algenist奥杰尼官网:微藻抗衰老护肤品牌
2017/07/15 全球购物
飞利浦法国官网:Philips法国
2019/07/10 全球购物
介绍一下UNIX启动过程
2013/11/14 面试题
思想政治教育专业个人求职信范文
2013/12/20 职场文书
保安队长职务说明书
2014/02/23 职场文书
Flutter Navigator 实现路由传递参数
2022/04/22 Java/Android
Valheim服务器 Mod修改安装教程 【ValheimPlus】
2022/12/24 Servers