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时间戳与时间字符串互相转换实例代码
Nov 28 Python
python日志记录模块实例及改进
Feb 12 Python
PyQt5每天必学之创建窗口居中效果
Apr 19 Python
python读文件保存到字典,修改字典并写入新文件的实例
Apr 23 Python
python网络爬虫 CrawlSpider使用详解
Sep 27 Python
keras获得某一层或者某层权重的输出实例
Jan 24 Python
python numpy矩阵信息说明,shape,size,dtype
May 22 Python
numpy的Fancy Indexing和array比较详解
Jun 11 Python
为什么python比较流行
Jun 19 Python
Keras预训练的ImageNet模型实现分类操作
Jul 07 Python
Python识别处理照片中的条形码
Nov 16 Python
Python开发工具Pycharm的安装以及使用步骤总结
Jun 24 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
最令PHP初学者头痛的十四个问题
2006/07/12 PHP
PHP计数器的实现代码
2013/06/08 PHP
php操作mysqli(示例代码)
2013/10/28 PHP
php自定义apk安装包实例
2014/10/20 PHP
微信接口生成带参数的二维码
2017/07/31 PHP
Textarea根据内容自适应高度
2013/10/28 Javascript
js中事件的处理与浏览器对象示例介绍
2013/11/29 Javascript
JavaScript参数个数可变的函数举例说明
2014/10/10 Javascript
JS实现跟随鼠标的链接文字提示框效果
2015/08/06 Javascript
jQuery针对input的class属性写了多个值情况下的选择方法
2016/06/03 Javascript
常用的js验证和数据处理总结
2016/08/02 Javascript
jQuery实现Select下拉列表进行状态选择功能
2017/03/30 jQuery
webpack实现热更新(实施同步刷新)
2017/07/28 Javascript
详解AngularJS跨页面传值(ui-router)
2017/08/23 Javascript
详解使用PM2管理nodejs进程
2017/10/24 NodeJs
基于React+Redux的SSR实现方法
2018/07/03 Javascript
Node.js+Express+Mysql 实现增删改查
2019/04/03 Javascript
在Vue中用canvas实现二维码和图片合成海报的方法
2019/06/10 Javascript
小程序角标的添加及绑定购物车数量进行实时更新的实现代码
2020/12/07 Javascript
Python读取stdin方法实例
2019/05/24 Python
在cmd中查看python的安装路径方法
2019/07/03 Python
Django Rest framework解析器和渲染器详解
2019/07/25 Python
pytorch:实现简单的GAN示例(MNIST数据集)
2020/01/10 Python
浅谈Keras中shuffle和validation_split的顺序
2020/06/19 Python
详解基于python的图像Gabor变换及特征提取
2020/10/26 Python
CSS3打造磨砂玻璃背景效果
2016/09/28 HTML / CSS
详解H5本地储存Web Storage
2017/07/03 HTML / CSS
LA MER海蓝之谜美国官网:传奇面霜
2016/08/27 全球购物
Perfumetrader荷兰:香水、化妆品和护肤品在线商店
2017/09/15 全球购物
俄罗斯极限运动网上商店:Board Shop №1
2020/12/18 全球购物
小学老师寄语大全
2014/04/04 职场文书
入团申请书格式
2019/06/20 职场文书
golang 比较浮点数的大小方式
2021/05/02 Golang
golang switch语句的灵活写法介绍
2021/05/06 Golang
MySQL系列之八 MySQL服务器变量
2021/07/02 MySQL
Java实现字符串转为驼峰格式的方法详解
2022/07/07 Java/Android