python实现简单线性回归
之前推导了一元线性回归和多元线性回归,今天就用python来实现一下一元线性回归
先看下之前推导的结果
  , 
第一种是用循环迭代的计算方法。这里的x,y是numpy中的array类型
def sum(x):
sum1 = 0
for i in x:
sum1 += i
return sum1
def sub(x,y):
ret = []
for i in range(len(x)):
ret.append(x[i] - y)
return np.array(ret)
def mean(num):
sum = 0
for i in num:
sum += i
return sum / len(num)
def multiply(x,y):
ret = []
for i in range(len(x)):
ret.append(x[i]*y[i])
return np.array(ret)
def square(x):
ret = []
for i in range(len(x)):
ret.append (x[i] * x[i])
return np.array(ret)
def linearRegression(x,y):
length = len(x)
t1 = time()
x_mean1 = mean(x)
a = sum(multiply(y,sub(x,x_mean1))) / (sum(square(x)) - sum(x) ** 2 / length)
sum1 = 0
for i in range(length):
sum1 += (y[i] - a * x[i])
b = sum1 / length
第二种人是用vectorization的方法
def linearRegression_(x,y):
length = len(x)
x_mean = x.mean()
a = (y * (x - x_mean)).sum() / ((x ** 2).sum() - x.sum() ** 2 / length)
b = (y - a * x).sum() / length
为了比较二者的性能,这里我们随机生成10000条数据,分别统计两种方法运行的时间
x=np.random.randint(0,100,10000)
y=np.random.randint(0,100,10000) t1 = time()
linearRegression(x,y)
t2 = time()
print(t2 - t1) t1 = time()
linearRegression_(x,y)
t2 = time()
得到二者的结果
0.1349632740020752
0.0009996891021728516
上面的是循环计算所需的时间,下面的是vectorization所需得时间。很明显vectorization要优于循环计算
python实现简单线性回归的更多相关文章
- day-12 python实现简单线性回归和多元线性回归算法
		
1.问题引入 在统计学中,线性回归是利用称为线性回归方程的最小二乘函数对一个或多个自变量和因变量之间关系进行建模的一种回归分析.这种函数是一个或多个称为回归系数的模型参数的线性组合.一个带有一个自变 ...
 - Python回归分析五部曲(一)—简单线性回归
		
回归最初是遗传学中的一个名词,是由英国生物学家兼统计学家高尔顿首先提出来的,他在研究人类身高的时候发现:高个子回归人类的平均身高,而矮个子则从另一方向回归人类的平均身高: 回归分析整体逻辑 回归分析( ...
 - 简单线性回归(梯度下降法) python实现
		
grad_desc .caret, .dropup > .btn > .caret { border-top-color: #000 !important; } .label { bord ...
 - 简单线性回归(最小二乘法)python实现
		
简单线性回归(最小二乘法)¶ 0.引入依赖¶ In [7]: import numpy as np import matplotlib.pyplot as plt 1.导入数据¶ In [ ...
 - python实现多变量线性回归(Linear Regression with Multiple Variables)
		
本文介绍如何使用python实现多变量线性回归,文章参考NG的视频和黄海广博士的笔记 现在对房价模型增加更多的特征,例如房间数楼层等,构成一个含有多个变量的模型,模型中的特征为( x1,x2,..., ...
 - 机器学习(2):简单线性回归 | 一元回归 | 损失计算 | MSE
		
前文再续书接上一回,机器学习的主要目的,是根据特征进行预测.预测到的信息,叫标签. 从特征映射出标签的诸多算法中,有一个简单的算法,叫简单线性回归.本文介绍简单线性回归的概念. (1)什么是简单线性回 ...
 - 机器学习——Day 2 简单线性回归
		
写在开头 由于某些原因开始了机器学习,为了更好的理解和深入的思考(记录)所以开始写博客. 学习教程来源于github的Avik-Jain的100-Days-Of-MLCode 英文版:https:// ...
 - 教你用Python实现简单监督学习算法
		
教你用Python实现简单监督学习算法 监督学习作为运用最广泛的机器学习方法,一直以来都是从数据挖掘信息的重要手段.即便是在无监督学习兴起的近日,监督学习也依旧是入门机器学习的钥匙. 这篇监督学习教程 ...
 - Python爬虫简单实现CSDN博客文章标题列表
		
Python爬虫简单实现CSDN博客文章标题列表 操作步骤: 分析接口,怎么获取数据? 模拟接口,尝试提取数据 封装接口函数,实现函数调用. 1.分析接口 打开Chrome浏览器,开启开发者工具(F1 ...
 
随机推荐
- Python:numpy.newaxis
			
x1[:,np.newaxis]:增维,转置 从字面上是插入新的维度的意思 demo1: 针对一维的情况 >>> b = np.array([1, 2, 3, 4, 5, 6]) & ...
 - ZooKeeper分布式专题与Dubbo微服务入门
			
第1章 分布式系统概念与ZooKeeper简介对分布式系统以及ZooKeeper进行简介,使得大家对其有大致的了解1-1 zookeeper简介1-2 什么是分布式系统1-3 分布式系统的瓶颈以及zk ...
 - BurpSuite+SQLmap的一种另类扫描
			
过年之后就忙的团团转.三月开始可以轻松一些,抽空写写最近瞎折腾的东西,本文只是描述工具的一种使用方法,无技术含量.(PS:这种做法,网上也有很多教程,本文只为记录). 由于公司使用的电脑都是win10 ...
 - vlc源码分析(七) 调试学习HLS协议
			
HTTP Live Streaming(HLS)是苹果公司提出来的流媒体传输协议.与RTP协议不同的是,HLS可以穿透某些允许HTTP协议通过的防火墙. 一.HLS播放模式 (1) 点播模式(Vide ...
 - Hdu4952 - Number Transformation - 数论(2014 Multi-University Training Contest 8)
			
寻找1~k内i的倍数.则这个数能够看成i*x,则下一个数为(i+1)*y,(i+1)*y>=i*x,那么能够推出.y=x-x/(i+1); 那么当x<i+1时,y==x.之后的循环也不会改 ...
 - 【LeetCode43】 Multiply Strings
			
题目描述: 解题思路: java代码: public class LeetCode43 { public static void main(String[] args) { String num1=& ...
 - 笔记2:MYSQL 表操作
			
一.表约束 1.非空约束:not null 作用:定义表的某一列不能为空. >> alter table 表名 modify 列名 int not null; "添加非空约束&q ...
 - Ghostscript远程代码执行漏洞利用方法
			
昨天爆出来的Ghostscript远程代码执行漏洞,复现过程如下 1.确认系统是否安装了gs 执行命令 gs -q -sDEVICE=ppmraw -dSAFER -sOutputFile=/dev/ ...
 - SEO优化上首页之搜索引擎蜘蛛Spider原理
			
Spider,蜘蛛,又名网页网络爬虫.网络机器人,是按照一定策略不断抓取互联网网页的特定程序.蜘蛛抓回的页面创建索引后参与排名,等待用户检索.为了网站优化自然排名上首页,精灵儿工作室下面详细剖析Spi ...
 - 微信小程序页面传多个参数
			
在需要页面之间传递多个参数的时候,需要用&链接起来,上一页的正确跳转代码如下: var that = this; wx.navigateTo({ url: '../../pages/myLis ...