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实现ftp客户端示例分享
Feb 17 Python
老生常谈python之鸭子类和多态
Jun 13 Python
详解python中的文件与目录操作
Jul 11 Python
Python3.5 创建文件的简单实例
Apr 26 Python
python解决js文件utf-8编码乱码问题(推荐)
May 02 Python
Flask之flask-session的具体使用
Jul 26 Python
Django后台admin的使用详解
Jul 08 Python
解决python中0x80072ee2错误的方法
Jul 19 Python
Pycharm及python安装详细教程(图解)
Jul 31 Python
Python __slots__的使用方法
Nov 15 Python
python Xpath语法的使用
Nov 26 Python
Python读取文件夹下的所有文件实例代码
Apr 02 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(视频)Http下载
2006/12/12 PHP
php桌面中心(三) 修改数据库
2007/03/11 PHP
php中mt_rand()随机数函数用法
2014/11/24 PHP
PHP简单生成缩略图相册的方法
2015/07/29 PHP
node.js中的fs.writeFile方法使用说明
2014/12/14 Javascript
Javascript基础教程之比较null和undefined值
2016/05/16 Javascript
js replace(a,b)之替换字符串中所有指定字符的方法
2016/08/17 Javascript
AngularJS 入门教程之事件处理器详解
2016/08/19 Javascript
JS表格组件BootstrapTable行内编辑解决方案x-editable
2016/09/01 Javascript
JS IOS/iPhone的Safari浏览器不兼容Javascript中的Date()问题如何解决
2016/11/11 Javascript
详解Webstorm 新建.vue文件支持高亮vue语法和es6语法
2017/10/26 Javascript
微信小程序录音与播放录音功能
2017/12/25 Javascript
Cookbook组件形式:优化 Vue 组件的运行时性能
2018/11/25 Javascript
Node爬取大批量文件的方法示例
2019/06/28 Javascript
Vue登录主页动态背景短视频制作
2019/09/21 Javascript
Vue Router 实现动态路由和常见问题及解决方法
2020/03/06 Javascript
python list语法学习(带例子)
2013/11/01 Python
python正则表达式re模块详细介绍
2014/05/29 Python
python简单验证码识别的实现方法
2019/05/10 Python
Django 在iframe里跳转顶层url的例子
2019/08/21 Python
Python 实现OpenCV格式和PIL.Image格式互转
2020/01/09 Python
python实现翻译word表格小程序
2020/02/27 Python
Python魔术方法专题
2020/06/19 Python
纯CSS3发光分享按钮的实现教程
2014/09/06 HTML / CSS
CSS3贝塞尔曲线示例:创建链接悬停动画效果
2020/11/19 HTML / CSS
Canvas实现贝赛尔曲线轨迹动画的示例代码
2019/04/25 HTML / CSS
工程地质勘察专业大学生求职信
2013/10/13 职场文书
综合办公室主任职责
2013/12/16 职场文书
《自然之道》教学反思
2014/02/11 职场文书
材料会计岗位职责
2014/03/06 职场文书
蛋糕店创业计划书
2014/05/06 职场文书
学校综治宣传月活动总结
2014/07/02 职场文书
调研汇报材料范文
2014/08/17 职场文书
教师查摆问题及整改措施
2014/10/11 职场文书
公司庆典主持词
2015/07/04 职场文书
CSS3实现的文字弹出特效
2021/04/16 HTML / CSS