Python编程实现线性回归和批量梯度下降法代码实例


Posted in Python onJanuary 04, 2018

通过学习斯坦福公开课的线性规划和梯度下降,参考他人代码自己做了测试,写了个类以后有时间再去扩展,代码注释以后再加,作业好多:

import numpy as np
import matplotlib.pyplot as plt
import random

class dataMinning:
  datasets = []
  labelsets = []
  
  addressD = '' #Data folder
  addressL = '' #Label folder
  
  npDatasets = np.zeros(1)
  npLabelsets = np.zeros(1)
  
  cost = []
  numIterations = 0
  alpha = 0
  theta = np.ones(2)
  #pCols = 0
  #dRows = 0
  def __init__(self,addressD,addressL,theta,numIterations,alpha,datasets=None):
    if datasets is None:
      self.datasets = []
    else:
      self.datasets = datasets
    self.addressD = addressD
    self.addressL = addressL
    self.theta = theta
    self.numIterations = numIterations
    self.alpha = alpha
    
  def readFrom(self):
    fd = open(self.addressD,'r')
    for line in fd:
      tmp = line[:-1].split()
      self.datasets.append([int(i) for i in tmp])
    fd.close()
    self.npDatasets = np.array(self.datasets)

    fl = open(self.addressL,'r')
    for line in fl:
      tmp = line[:-1].split()
      self.labelsets.append([int(i) for i in tmp])
    fl.close()
    
    tm = []
    for item in self.labelsets:
      tm = tm + item
    self.npLabelsets = np.array(tm)

  def genData(self,numPoints,bias,variance):
    self.genx = np.zeros(shape = (numPoints,2))
    self.geny = np.zeros(shape = numPoints)

    for i in range(0,numPoints):
      self.genx[i][0] = 1
      self.genx[i][1] = i
      self.geny[i] = (i + bias) + random.uniform(0,1) * variance

  def gradientDescent(self):
    xTrans = self.genx.transpose() #
    i = 0
    while i < self.numIterations:
      hypothesis = np.dot(self.genx,self.theta)
      loss = hypothesis - self.geny
      #record the cost
      self.cost.append(np.sum(loss ** 2))
      #calculate the gradient
      gradient = np.dot(xTrans,loss)
      #updata, gradientDescent
      self.theta = self.theta - self.alpha * gradient
      i = i + 1
      
  
  def show(self):
    print 'yes'
    
if __name__ == "__main__":
  c = dataMinning('c:\\city.txt','c:\\st.txt',np.ones(2),100000,0.000005)
  c.genData(100,25,10)
  c.gradientDescent()
  cx = range(len(c.cost))
  plt.figure(1)
  plt.plot(cx,c.cost)
  plt.ylim(0,25000)
  plt.figure(2)
  plt.plot(c.genx[:,1],c.geny,'b.')
  x = np.arange(0,100,0.1)
  y = x * c.theta[1] + c.theta[0]
  plt.plot(x,y)
  plt.margins(0.2)
  plt.show()

Python编程实现线性回归和批量梯度下降法代码实例

图1. 迭代过程中的误差cost

Python编程实现线性回归和批量梯度下降法代码实例

图2. 数据散点图和解直线

总结

以上就是本文关于Python编程实现线性回归和批量梯度下降法代码实例的全部内容,希望对大家有所帮助。感兴趣的朋友可以继续参阅本站:

Python编程实现粒子群算法(PSO)详解

如有不足之处,欢迎留言指出。感谢朋友们对本站的支持!

Python 相关文章推荐
python中global与nonlocal比较
Nov 21 Python
python使用PIL模块实现给图片打水印的方法
May 22 Python
Django与JS交互的示例代码
Aug 23 Python
在Python中执行系统命令的方法示例详解
Sep 14 Python
Python爬虫框架scrapy实现的文件下载功能示例
Aug 04 Python
Python实现的远程文件自动打包并下载功能示例
Jul 12 Python
Python列表list常用内建函数实例小结
Oct 22 Python
python函数局部变量、全局变量、递归知识点总结
Nov 15 Python
Django后端发送小程序微信模板消息示例(服务通知)
Dec 17 Python
pyspark 随机森林的实现
Apr 24 Python
Java byte数组操纵方式代码实例解析
Jul 22 Python
Pandas的数据过滤实现
Jan 15 Python
Python语言描述随机梯度下降法
Jan 04 #Python
微信小程序跳一跳游戏 python脚本跳一跳刷高分技巧
Jan 04 #Python
python使用xpath中遇到:到底是什么?
Jan 04 #Python
python使用itchat库实现微信机器人(好友聊天、群聊天)
Jan 04 #Python
python实现微信跳一跳辅助工具步骤详解
Jan 04 #Python
Python中实现最小二乘法思路及实现代码
Jan 04 #Python
Python找出最小的K个数实例代码
Jan 04 #Python
You might like
PHP合并两个数组的两种方式的异同
2012/09/14 PHP
探讨PHP中OO之静态关键字以及类常量的详解
2013/06/07 PHP
获取Javscript执行函数名称的方法
2006/12/22 Javascript
XML的代替者----JSON
2007/07/21 Javascript
jQuery UI-Draggable 参数集合
2010/01/10 Javascript
jQuery scroll事件实现监控滚动条分页示例
2014/04/04 Javascript
原生js和jquery分别实现横向导航菜单效果
2016/05/13 Javascript
jQuery监听文件上传实现进度条效果的方法
2016/10/16 Javascript
Angularjs的$http异步删除数据详解及实例
2017/07/27 Javascript
详解webpack3如何正确引用并使用jQuery库
2017/08/26 jQuery
解决vue2.0路由跳转未匹配相应用路由避免出现空白页面的问题
2018/08/24 Javascript
ES6 class的应用实例分析
2019/06/27 Javascript
详解vue-property-decorator使用手册
2019/07/29 Javascript
小程序分享链接onShareAppMessage的具体用法
2020/05/22 Javascript
vant实现购物车功能
2020/06/29 Javascript
javascript实现固定侧边栏
2021/02/09 Javascript
Python编程中的for循环语句学习教程
2015/10/14 Python
tensorflow学习教程之文本分类详析
2018/08/07 Python
influx+grafana自定义python采集数据和一些坑的总结
2018/09/17 Python
Python 最大概率法进行汉语切分的方法
2018/12/14 Python
Python for循环与range函数的使用详解
2019/03/23 Python
Django对数据库进行添加与更新的例子
2019/07/12 Python
Python类中方法getitem和getattr详解
2019/08/30 Python
pandas将多个dataframe以多个sheet的形式保存到一个excel文件中
2019/10/10 Python
Django框架创建项目的方法入门教程
2019/11/04 Python
python3 正则表达式基础廖雪峰
2020/03/25 Python
java字符串格式化输出实例讲解
2021/01/06 Python
Python字节单位转换(将字节转换为K M G T)
2021/03/02 Python
品质主管的岗位职责
2013/12/04 职场文书
内业资料员岗位职责
2014/01/04 职场文书
不假外出检讨书
2014/01/27 职场文书
区级文明单位申报材料
2014/05/15 职场文书
2015年共青团工作总结
2015/05/15 职场文书
上帝也疯狂观后感
2015/06/09 职场文书
nginx对http请求处理的各个阶段详析
2021/03/31 Servers
windows server2012 R2下安装PaddleOCR服务的的详细步骤
2022/09/23 Servers