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将xml xsl文件生成html文件存储示例讲解
Dec 03 Python
Python中每次处理一个字符的5种方法
May 21 Python
Python开启线程,在函数中开线程的实例
Feb 22 Python
在Python运行时动态查看进程内部信息的方法
Feb 22 Python
Python Django框架单元测试之文件上传测试示例
May 17 Python
Django 1.10以上版本 url 配置注意事项详解
Aug 05 Python
python3 enum模块的应用实例详解
Aug 12 Python
使用 Python 处理3万多条数据只要几秒钟
Jan 19 Python
python2 对excel表格操作完整示例
Feb 23 Python
python实现井字棋小游戏
Mar 04 Python
TensorFlow实现模型断点训练,checkpoint模型载入方式
May 26 Python
Django微信小程序后台开发教程的实现
Jun 03 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
PHPCrawl爬虫库实现抓取酷狗歌单的方法示例
2017/12/21 PHP
多广告投放代码 推荐
2006/11/13 Javascript
关于__defineGetter__ 和__defineSetter__的说明
2007/05/12 Javascript
将Datatable转化成json发送前台实现思路
2013/09/06 Javascript
JQuery创建DOM节点的方法
2015/06/11 Javascript
js实现仿Discuz文本框弹出层效果
2015/08/13 Javascript
常见的javascript跨域通信方法
2015/12/31 Javascript
JavaScript表单验证实例之验证表单项是否为空
2016/01/10 Javascript
详解Angularjs中的依赖注入
2016/03/11 Javascript
js数组的五种迭代方法及两种归并方法(推荐)
2016/06/14 Javascript
javascript运算符——逻辑运算符全面解析
2016/06/27 Javascript
JavaScript中匿名函数的递归调用
2017/01/22 Javascript
微信小程序实现图片轮播及文件上传
2017/04/07 Javascript
webpack构建换肤功能的思路详解
2017/11/27 Javascript
使用Vue自定义指令实现Select组件
2018/05/24 Javascript
微信小程序实现弹框效果
2020/05/26 Javascript
[41:08]2014 DOTA2国际邀请赛中国区预选赛 HGT VS NE
2014/05/22 DOTA
[02:03]DOTA2亚洲邀请赛 HGT战队出场宣传片
2015/02/07 DOTA
Python下的常用下载安装工具pip的安装方法
2015/11/13 Python
pandas.dataframe按行索引表达式选取方法
2018/10/30 Python
python 中的[:-1]和[::-1]的具体使用
2020/02/13 Python
Python文本文件的合并操作方法代码实例
2020/03/31 Python
Opencv图像处理:如何判断图片里某个颜色值占的比例
2020/06/03 Python
澳大利亚制造的蜡烛和扩散器:Glasshouse Fragrances
2018/05/20 全球购物
TheFork葡萄牙:欧洲领先的在线餐厅预订平台
2019/05/27 全球购物
C#公司笔试题
2014/03/28 面试题
顶碗少年教学反思
2014/02/21 职场文书
人事专员岗位职责范本
2014/03/04 职场文书
网络优化专员求职信
2014/05/04 职场文书
2014年信息中心工作总结
2014/12/17 职场文书
2016年“我们的节日·清明节”活动总结
2016/04/01 职场文书
什么是创业计划书?什么是商业计划书?这里一一解答
2019/07/12 职场文书
python 办公自动化——基于pyqt5和openpyxl统计符合要求的名单
2021/05/25 Python
配置nginx 重定向到系统维护页面
2021/06/08 Servers
详解Oracle块修改跟踪功能
2021/11/07 Oracle
Oracle配置dblink访问PostgreSQL的操作方法
2022/03/21 PostgreSQL