简单线性回归(Simple Linear Regression)和多元线性回归(Multiple Regression)学习笔记

简单线性回归(Simple Linear Regression)

0.前提介绍:
为什么需要统计量?
统计量:描述数据特征
0.1集中趋势衡量
0.1.1均值(平均数,平均值) (mean):(求和除以个数,Ex也可以表示x求均值)
在这里插入图片描述
0.1.2中位数(median) : 将数据中的各个数值按照大小顺序排列,居于中间位置的变量
0.1.2.1.给数据排序: 1,2,2,6,9
0.1.2.2.找出位置处于中间的变量: 2
当n为奇数的时候:直接取位置处于中间的变量
当n为偶数的时候,取中间两个量的平均值
0.1.2众数(mode) : 数据中出现次数最多的数
0.2.1.离散程度衡量
0.2.1.1方差(variance):
在这里插入图片描述
例如:{6, 2,9,1, 2}
(1)(6- 4)^2 + (2- 4)^2 + (9- 4)^2 +(1- 4)^2 + (2- 4)^2
=4+4+25+9+4= 46
(2) n-1=5-1=4
(3) 46/ 4 = 11.5
0.2.1.2标准差(standard deviation):方差开平方
在这里插入图片描述
S= sqrt(11.5) = 3.39
1.回归问题与分类问题区别:
回归(regression) :Y变量为连续数值型( continuous numerical variable)
如:房价,人数,降雨量
分类( Classification): Y变量为类别型(categorical variable)
如:颜色类别,电脑品牌,有无信誉

2.简单线性回归( Simple Linear Regression)
2.1很多做决定过过程通常是根据两个或者多个变量之间的关系
2.3回归分析(regression analysis)用来建立方程模拟两个或者多个变量之间如何关联
2.4被预测的变量叫做:因变量(dependent variable), y,即输出(output)
2.5被用来进行预测的变量叫做:自变量(independent variable), x,即输入(input)
3.简单线性回归介绍
3.1简单线性回归包含一个自变量(x)和一 个因变量(y)
3.2以上两个变量的关系用一条直线来模拟
3.3如果包含两个以上的自变量,则称作多元回归分析( multiple regression)
4.简单线性回归模型
4.1被用来描述因变量(y)和自变量(X)以及偏差(error)之间关系的方程叫做回归模型
4.2简单线性回归的模型是:
在这里插入图片描述
β为参数,X为自变量,ε为偏差
5.单线性回归方程:(ε满足正态分布,切均值为0)
E(y)=β0+β1x
这个方程对应的图像是一条直线, 称作回归线
其中,β0是回归线的截距
β1是回归线的斜率
E(y)是在一个给定x值下y的期望值(均值)
6.正向线性关系:
在这里插入图片描述
7.负向线性关系:
在这里插入图片描述
8.无关系:(斜率等于0)
在这里插入图片描述

9.估计的简单线性回归方程
在这里插入图片描述
b0为截距β0的估计值,b1是斜率β1的估计值
这个方程叫做估计线性方程( estimated regression line)
其中,bo是估计线性方程的纵截距
b是估计线性方程的斜率
y是在自变量x等于一个给定值的时候,y的估计值

10.线性回归分析流程:(ε的期望值(均值)为0,所以E(y)无ε)
在这里插入图片描述
11.关于偏差ε的假定
11.1是一个随机的变量,均值(或期望值)为0
11.2 ε的方差(variance)对于所有的自变量x是一样的
11.3 ε的值是独立的
11.4 ε满足正态分布
简单线性回归(Simple Linear Regression)下

简单线性回归模型举例:

汽车卖家做电视广告数量与卖出的汽车数里:
在这里插入图片描述

1.1如何练处适合简单线性回归模型的最佳回归线?
在这里插入图片描述
最佳回归线标准:(实际值y为红点,估计值y(hat)为线上的值)
在这里插入图片描述
使sum of squares(平方和)最小:

1.1.2最佳回归线计算
在这里插入图片描述
b0为截距β0的估计值,b1是斜率β1的估计值,(y ̅ 和x ̅ 都经过这条线,带入b1可求出b0)
分子= (1-2)(14-20)+(3-2)(24-20)+(2-2)(18-20)+(1-2)(17-20)+(3-2)(27-20)
=6+4+0+3+7
= 20
分母= (1-2) ^2 +(3-2)^2 +(2-2)2+(1-2)2+ (3-2)^2
=1+1+0+1+1
=4
b1 = 20/4 =5
b0=20-5*2=20- 10= 10
实例code:

import numpy as np
def fitSLR(x,y):n = len(x) #x,y长度一样,包含相同元素个数denominator = 0 #分母,计算完数据后不会为0,numeritor = 0 #分子for i in range(0,n):#实例有n组数numeritor += (x[i]-np.mean(x))*(y[i]-np.mean(y))denominator += (x[i]-np.mean(x))**2 print('numeritor:',numeritor)print('denominator:',denominator)b1 = numeritor/float(denominator)b0 = np.mean(y) - (b1*np.mean(x))return b0,b1
def predict(x,b0,b1): #这里x为要预测的实例的值y_test=b0+b1*xreturn y_testx = [1,3,2,1,3]
y = [14,24,18,17,27]
b0,b1 = fitSLR(x=x,y=y)   
print('intercept:',b0)
print('slope:',b1)x_test = 6
y_test = predict(x_test,b0,b1)
print('y_test:',y_test)

其中x_ given= 6(实例)
==Y_ hat=5*6+ 10 = 40 ==
运行结果如下:
numeritor: 20.0
denominator: 4.0
intercept: 10.0
slope: 5.0
y_test: 40.0

多元线性回归(Multiple Regression)上

多元回归分析( multipleregression)
1.与简单线性回归区别( simple linear regression):
MR有多个自变量(x)
2.多元回归模型
y=β0+β1 X1+β2X2+ … +βpXp+ε (多元的平面)
其中:β0(截面), β1, β2…βp是参数
ε是误差值
3.多元回归方程(等式左右同时取期望值,等式右边取期望值等于所有个体的期望值之和)
E(y)=β0+β1x1+B2X2+ … +βpXp
4.估计多元回归方程:
y_hat=b0+b1 x+b2x2+ … +bpXp
一个样本被用来计算β0, β1, β2… βp的点估计值分别为b0, b1, b2…,bp

5.估计流程(即预测过程,与简单线性回归类似一样)
在这里插入图片描述
Regression Model:y=β0+β1x+β2x+….βpx+ε,以下同理变化
Sample Data:现实中很多数据是难以统计完全的,所以用抽取的样本来计算.
6.估计方法
使sum of squares(平方和)最小:(多元曲面上估算值到实际值的差之和最小)
在这里插入图片描述
运算与简单线性回归类似,涉及到线性代数和矩阵的运算
7.例子(使用python计算)
一家快递公司送货 , X1 :运输里程(mile);X2 :运输次数;Y :总运输时间(h).
在这里插入图片描述
Time = b0+ b1Miles + b2Deliveries
计算结果:(下节课做详细运算)
Time = -0.869 + 0.0611 Miles + 0.923 Deliveries
8.描述参数含义
b0: 常数项
b1: 平均每多运送一英里,运输时间延长0.0611小时
b2:平均每多一次运输, 运输时间延长0.923小时

9.预测
如果一个运输任务是跑102英里,运输6次,预计多少小时?
Time = -0.869 +0.0611102+ 0.923 6=10.9 (小时)
10.如果自变量(x)中有分类型变量( categorical data) ,如何处理?
(regression与classfication的区别在于y是否连续)
答:x既可以使用连续性变量也可以使用分类型变量
在这里插入图片描述
0,1,2只是作为标签,与其本身大小无关

11.关于误差的分布
误差ε是一个随机变量,均值为0
ε的方差对于所有的自变量来说相等
所有ε的值是独立的
ε满足正态分布,并且通过β0+ β1 x1+β2x2+ … +βpxp反映y的期望值

多元线性回归(Multiple Regression)下

一家快递公司送货 , X1 :运输里程(mile);X2 :运输次数;Y :总运输时间(h).
在这里插入图片描述
目的,求出b0, b1,…bp:
Y_ hat=b0+b1X1+b2X2+ … +bpXp.

多元线性回归code实例:

from numpy import genfromtxt #将csv文件的数据转换成np的array形式
import numpy as np
from sklearn import datasets,linear_model#1.导入数据
dataPath = r'C:\Users\Administrator.Bili-2019LEMOKD\Desktop\新建文件夹\Delivery.csv'
DeliveryData = genfromtxt(dataPath,delimiter=',') #genfromtxt将数据转换成矩阵形式;csv文件每个cell以逗号为分隔符,所以分隔符为","
print(DeliveryData) #会自动将文件中的数据读取并转换为矩阵形式,并放到文件的第一行第一列开始
X = DeliveryData[:, :-1]#取所有维度第一(0)列和第二(1)列的数作为x(取左不取右,所以不含倒数第一列)
# print(X)
Y = DeliveryData[:,-1]
# print(Y)#2.建模
regr = linear_model.LinearRegression()
regr.fit(X,Y)
print('coefficient:',regr.coef_)   #x的系数(b1~bp)
print('intercept',regr.intercept_) #截距(面)#3.预测
xSample = np.array([[102,6]]) #array!!
yPred = regr.predict(xSample)
print('predicted y:',yPred)

运行结果如下:
[[100. 4. 9.3]
[ 50. 3. 4.8]
[100. 4. 8.9]
[100. 2. 6.5]
[ 50. 2. 4.2]
[ 80. 2. 6.2]
[ 75. 3. 7.4]
[ 65. 4. 6. ]
[ 90. 3. 7.6]
[ 90. 2. 6.1]]
coefficient: [0.0611346 0.92342537]
intercept -0.868701466781709
predicted y: [10.90757981]

如果自变量中有分类型变量(categorical data) :
将车型Dummy Varible转换成0和1:

同样可以用上面的代码执行:

from numpy import genfromtxt #将csv文件的数据转换成np的array形式
import numpy as np
from sklearn import datasets,linear_model#1.导入数据
dataPath = r'C:\Users\Administrator.Bili-2019LEMOKD\Desktop\新建文件夹\DeliveryDummy.csv'
eliveryData = genfromtxt(dataPath,delimiter=',')
print(DeliveryData) 
'''打印出结果如果莫名多出几行(-1或nan),可能是复制数据到csv文件时有空数据,进入csv删除那几行即可'''
X = DeliveryData[:, :-1]
print('X:',X)
Y = DeliveryData[:,-1]
print('Y:',Y)#2.建模
regr = linear_model.LinearRegression()
regr.fit(X,Y)
print('coefficient:',regr.coef_)   #x的系数(5个x,b1~b5)
print('intercept',regr.intercept_) #截距(面)#3.预测
xSample = np.array([[102,6,0,1,0]]) #array!!
yPred = regr.predict(xSample)
print('predicted y:',yPred)

运行结果如下:
[100. 4. 0. 1. 0. 9.3]
[ 50. 3. 1. 0. 0. 4.8]
[100. 4. 0. 1. 0. 8.9]
[100. 2. 0. 0. 1. 6.5]
[ 50. 2. 0. 0. 1. 4.2]
[ 80. 2. 0. 1. 0. 6.2]
[ 75. 3. 0. 1. 0. 7.4]
[ 65. 4. 1. 0. 0. 6. ]
[ 90. 3. 1. 0. 0. 7.6]]
X: [[100. 4. 0. 1. 0.]
[ 50. 3. 1. 0. 0.]
[100. 4. 0. 1. 0.]
[100. 2. 0. 0. 1.]
[ 50. 2. 0. 0. 1.]
[ 80. 2. 0. 1. 0.]
[ 75. 3. 0. 1. 0.]
[ 65. 4. 1. 0. 0.]
[ 90. 3. 1. 0. 0.]]
Y: [9.3 4.8 8.9 6.5 4.2 6.2 7.4 6. 7.6]
coefficient: [ 0.05553544 0.69257631 -0.17013278 0.57040007 -0.40026729]
intercept 0.1999568891188126
predicted y: [10.59042938]

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/469700.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

智慧交通day02-车流量检测实现10:多目标追踪实现

在这里我们主要实现了一个多目标跟踪器,管理多个卡尔曼滤波器对象,主要包括以下内容: 初始化:最大检测数,目标未被检测的最大帧数 目标跟踪结果的更新,即跟踪成功和失败的目标的更新 初始化 def __init_…

智慧交通day02-车流量检测实现11:yoloV3模型

yoloV3以V1,V2为基础进行的改进,主要有:利用多尺度特征进行目标检测;先验框更丰富;调整了网络结构;对象分类使用logistic代替了softmax,更适用于多标签分类任务。 1.算法简介 YOLOv3是YOLO (You Only Loo…

bzoj1992鬼谷子的钱袋(二分乱搞 二进制)

1192: [HNOI2006]鬼谷子的钱袋 Time Limit: 10 Sec Memory Limit: 162 MBSubmit: 3223 Solved: 2333Descriptio 鬼谷子非常聪明,正因为这样,他非常繁忙,经常有各诸侯车的特派员前来向他咨询时政。有一天,他在咸阳游历的时候&…

聚类(Clustering): K-means算法

聚类(Clustering): K-means算法 1.归类: 聚类(clustering)属于非监督学习(unsupervised learning) 无类别标记( class label) 3. K-means 算法: 3.1 Clustering 中的经典算法,数据挖掘十大经典算法之一 3.2 算法接受参数 k ;然后将事先输入…

智慧交通day02-车流量检测实现12:基于yoloV3的目标检测

在本章节代码编写中,发现之前的代码所处的环境是python3,因此导致了cv2.dnn.readNetFromDarknet()在代码运行中导致了i[0]的获值失败,故总结如下: cv2.dnn.readNetFromDarknet()在python3上遇到的问题_李大狗的读研日记-CSDN博客…

cv2.dnn.readNetFromDarknet()在python3上遇到的问题

问题描述: 代码如下 net cv2.dnn.readNetFromDarknet(configPath,weightsPath) #获取YOLO每一层的名称 #getLayerNames():获取网络所有层的名称。 ln net.getLayerNames() # 获取输出层的名称: [yolo-82,yolo-94,yolo-106] # …

智慧交通day02-车流量检测实现13:基于虚拟线圈法的车辆统计+视频中的车流量统计原理解析

1.基于虚拟线圈法的车辆统计 基于虚拟线圈的车流量统计算法原理与交通道路上的常见的传统的物理线圈类似,由于物理线圈需要埋设在路面之下,因此会有安装、维护费用高,造成路面破坏等问题,而采用基于视频的虚拟线圈的车辆计数方法…

ubuntu 12.04 eclipse 安装

方法二:(优点是安装内容清爽,缺点是配置麻烦) 1、安装JDK,参考 Ubuntu 12.04 下安装 JDK 7 2、下载 Eclipse 从 http://www.eclipse.org/downloads/index-developer.php下载合适版本,如:Eclipse IDE for C/C Develope…

智慧交通day02-车流量检测实现14:代码汇总+问题修正

代码权重文件资源https://download.csdn.net/download/qq_39237205/43072746https://download.csdn.net/download/qq_39237205/43072746 环境要求:python2.7 环境配置:见文末requirements.txt 1.YOLO.py # encoding:utf-8 import imutils import tim…

从资源池和管理的角度理解物理内存

早就想搞一下内存问题了!这次正趁着搞bigmemory内核,可以写一篇文章了。本文旨在记录,不包含细节,细节的话,google,百度均可,很多人已经写了不少了。我只是按照自己的理解记录一下内存的点点滴滴…

从头开始学一个android activity

一、类层次结构: 二、什么是Activity,如何理解Activity 1、 用户与应用程序的交互的接口 2、 控件的容器,我们要把控件摆放在这个容器中 三、如何创建一个Activity 新建一个类: 1、 继承Activity类 [java] view plaincopyprint…

python3 numpy中矩阵np.dot(a,b)乘法运算

python np.dot(a,b)乘法运算 首先我们知道矩阵运算是不满足交换律的,np.dot(a, b)与np.dot(b, a)是不一样的 另外np.dot(a,b)和a.dot(b)果是一样的 1.numpy中数组(矩阵)相乘np.dot(a,b)运算: 对于两数组a和b : 示例…

ML Backpropagation算法的计算过程举例

Backpropagation计算过程举例 初始权重(initialize weights)是随机产生的(如-1~1之间) 初始化可以选择均值为0,方差为1/n_in的正态分布,n_in为输入的实例个数,Python中可使用np.random.normal函数来初始化权重: np.random.normal…

Python基础知识__字符串

字符串介绍 一. 认识字符串 字符串是 Python 中最常用的数据类型。我们一般使用引号来创建字符串。创建字符串很简单&#xff0c;只要为变量分配一个值即可。 a hello world b "abcdefg" print(type(a)) print(type(b)) 注意&#xff1a;控制台显示结果为<cl…

智慧交通day03-车道线检测实现01:车道线检测概述

项目简介 汽车的日益普及在给人们带来极大便利的同时&#xff0c;也导致了拥堵的交通路况&#xff0c;以及更为频发的交通事故。而自动驾驶技术的出现可以有效的缓解了此类问题&#xff0c;减少交通事故&#xff0c;提升出行效率。 国内外检测车道线的方法主要有两类&#xf…

vsphere平台windows虚拟机克隆的小插曲(无法登陆系统)

问题&#xff1a; 1、克隆完windows虚拟化后输入法乱码。 2、开启远程的情况下远程登录输入正确的密码也无法登录。 解决&#xff1a; 1、更改管理员用户密码&#xff08;不输入原win7密码更改win7密码&#xff09;。 2、重新启用管理员。 3、重启系统 不输入当前密码改win密码…

智慧交通day03-车道线检测实现02-1:相机校正

1. 相机标定的意义 我们所处的世界是三维的&#xff0c;而照片是二维的&#xff0c;我们可以把相机认为是一个函数&#xff0c;输入量是一个场景&#xff0c;输出量是一幅灰度图。这个从三维到二维的过程的函数是不可逆的。 相机标定的一个目的是要找一个合适的数学模型&#…

把输入字符的小写转换成大写并输出

#include <stdio.h> #include <stdlib.h> #include <string.h> /******************************* *把小写字母转成大写字母 ********************************/ int main(void) { char *srcNULL;unsigned char i0;char *new_1NULL;char *new_2NULL;char *dN…

nginx服务无法启动,启动时报错1067以外终止

解决方法&#xff1a; 首先cmd命令打开&#xff0c;输入nginx -t测试配置文件是否能运行OK&#xff0c;如果报错bind() to 0.0.0.0:80 failed (10013: An attempt was made to access a …) 则说明配置文件中的端口0.0.0.0:80被占用 可使用下面两种方法解决&#xff1a; cmd输…

智慧交通day03-车道线检测实现02-2:张氏标定法+双目标定

6.张氏标定法 张氏标定法是张正友博士在1999年发表在国际顶级会议ICCV上的论文《Flexible Camera Calibration By Viewing a Plane From Unknown Orientations》中&#xff0c;提出的一种利用平面棋盘格进行相机标定的实用方法。 该方法介于传统标定法和自标定法之间&#xff…