机器学习线性回归案例讲解_09机器学习实战之简单线性回归

基本概念

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 简单线性回归的模型是:

其中:   参数                   偏差

5. 简单线性回归方程

E(y) = β0+β1x

这个方程对应的图像是一条直线,称作回归线

其中,β0是回归线的截距

β1是回归线的斜率

E(y)是在一个给定x值下y的期望值(均值)

ε服从标准正太分布,均值为0

6. 正向线性关系

7. 负向线性关系

8. 无关系

9. 估计的简单线性回归方程

ŷ=b0+b1x

这个方程叫做估计线性方程(estimated regression line)

其中,b0是估计线性方程的纵截距

b1是估计线性方程的斜率

ŷ是在自变量x等于一个给定值的时候,y的估计值

10. 线性回归分析流程

11. 关于偏差ε的假定

11.1 是一个随机的变量,均值为0

11.2 ε的方差(variance)对于所有的自变量x是一样的

11.3 ε的值是独立的

11.4 ε满足正态分布

例子

简单线性回归模型举例:

汽车卖家做电视广告数量与卖出的汽车数量:

第一步:如何练处适合简单线性回归模型的最佳回归线?

使sum of squares最小

第二步:计算

分子 = (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

推导过程

代码实现

In [3]:

import numpy as np

import matplotlib.pyplot as plt

In [4]:

x = np.array([1, 2, 3, 4, 5])

y = np.array([1, 3, 2, 3, 5])

In [10]:

plt.scatter(x, y)

plt.axis([0, 6, 0, 6])

plt.show()

In [11]:

x_mean = np.mean(x)

y_mean = np.mean(y)

In [12]:

numerator = 0.0 # 分子

denominator = 0.0 # 分母

In [13]:

for x_i, y_i in zip(x, y):

numerator += (x_i - x_mean) * (y_i - y_mean)

denominator += (x_i - x_mean) ** 2

In [14]:

a = numerator / denominator

b = y_mean - a * x_mean

In [15]:

a

Out[15]:

0.8

In [16]:

b

Out[16]:

0.39999999999999947

In [17]:

y_hat = a * x + b

In [19]:

plt.scatter(x, y)

plt.plot(x, y_hat, color='r')

plt.axis([0, 6, 0, 6])

plt.show()

In [20]:

x_predict = 6

y_predict = a * x_predict + b

y_predict

Out[20]:

5.2

In [28]:

from ml09simpleLinearRegression1 import SimpleLinearRegression1

In [29]:

reg1 = SimpleLinearRegression1()

reg1.fit(x, y)

Out[29]:

SimpleLinearRegression()

In [30]:

reg1.predict(np.array([x_predict]))

Out[30]:

array([5.2])

In [31]:

reg1.a_

Out[31]:

0.8

In [32]:

reg1.b_

Out[32]:

0.39999999999999947

In [33]:

y_hat1 = reg1.predict(x)

In [34]:

plt.scatter(x, y)

plt.plot(x, y_hat1, color='r')

plt.axis([0, 6, 0, 6])

plt.show()

importnumpy as npclassSimpleLinearRegression1:def __init__(self):"""初始化Simple Linear Regression模型"""self.a_=None

self.b_=Nonedeffit(self, x_train, y_train):"""根据训练数据集x_train, y_train训练Simple Linear Regression模型"""

assert x_train.ndim == 1, \"Simple Linear Regressor can only solve single feature training data."

assert len(x_train) ==len(y_train), \"the size of x_train must be equal to the size of y_train"x_mean=np.mean(x_train)

y_mean=np.mean(y_train)#numerator = 0.0 # 分子

#denominator = 0.0 # 分母

#for x_i, y_i in zip(x_train, y_train):

#numerator += (x_i - x_mean) * (y_i - y_mean)

#denominator += (x_i - x_mean) ** 2

#self.a_ = numerator / denominator

#self.b_ = y_mean - self.a_ * x_mean

"""使用向量点积,代替上面的for循环"""self.a_= (x_train - x_mean).dot(y_train - y_mean) / (x_train - x_mean).dot(x_train -x_mean)

self.b_= y_mean - self.a_ *x_meanreturnselfdefpredict(self, x_predict):"""给定待预测数据集x_predict,返回表示x_predict的结果向量"""

assert x_predict.ndim == 1, \"Simple Linear Regressor can only solve single feature training data."

assert self.a_ is not None and self.b_ is notNone, \"must fit before predict!"

return np.array([self._predict(x) for x inx_predict])def_predict(self, x_single):"""给定单个待预测数据x,返回x的预测结果值"""

return self.a_ * x_single +self.b_def __repr__(self):return "SimpleLinearRegression()"

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

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

相关文章

silverlight Image Source URI : 一个反斜杠引发的血案

silverlight Image Source URI : 一个反斜杠引发的血案 Silverlight2 现在支持的Image格式有jpg和png&#xff0c;部分png编码也不支持&#xff0c;同时有些png在xaml的design预览中不可见&#xff0c;但运行时可见。请看XAML markup中两行代码的异同&#xff1a; <StackPan…

python编码和解码_Python中的编码与解码(转)

Python中的字符编码与解码困扰了我很久了&#xff0c;一直没有认真整理过&#xff0c;这次下静下心来整理了一下我对方面知识的理解。 文章中对有些知识没有做深入的探讨&#xff0c;一是我自己也没有去深入的了解&#xff0c;例如各种编码方案的实现方式等&#xff1b;二是我觉…

[html] 怎样使用iframe刷新父级页面

[html] 怎样使用iframe刷新父级页面 //在父页面中window.addEventListener("message",function(e){if(e.data.reload){winodw.location.reload()}}, false);//在子页面中window.parent.postMessage({reload:true})个人简介 我是歌谣&#xff0c;欢迎和大家一起交流前…

Nginx编译安装和平滑升级

一、Nginx的编译安装 1、安装依赖包gcc&#xff0c;gcc-c&#xff0c;pcre&#xff0c;openssl-devel 命令&#xff1a;yum -y install gcc gcc-c pcre-devel openssl-devel 2、下载Nginx源码包 Nginx下载地址&#xff1a;http://nginx.org/download/nginx-1.12.2.tar.gz …

python 调用shell 不阻塞_遇到问题---python调用shell脚本时subprocess.check_call不阻塞

遇到的问题使用命令subprocess.check_call(cmd, shellTrue, stdoutsubprocess.PIPE, stderrsubprocess.STDOUT)在ubuntu系统中python中使用subprocess.check_call调用shell命令。发现subprocess.check_call的阻塞无效&#xff0c;导致下面的命令缺失信息。但是同样的代码在cent…

android ListView详解

在android开发中ListView是比较常用的组件&#xff0c;它以列表的形式展示具体内容&#xff0c;并且能够根据数据的长度自适应显示。抽空把对ListView的使用做了整理&#xff0c;并写了个小例子&#xff0c;如下图。 列表的显示需要三个元素&#xff1a;1&#xff0e;ListVeiw …

[html] iframe在更改了src之后,不出现后退或者前进按钮怎么解决?

[html] iframe在更改了src之后&#xff0c;不出现后退或者前进按钮怎么解决&#xff1f; 更改src时可以先删除旧的iframe后&#xff0c;新建一个iframe设置好src添加进去个人简介 我是歌谣&#xff0c;欢迎和大家一起交流前后端知识。放弃很容易&#xff0c; 但坚持一定很酷。…

python一次性输入3个数_python实现输入数字的连续加减方法

不用库&#xff0c;写了很久&#xff0c;一直出bug&#xff0c;到网上一搜&#xff0c;可以直接输入之后&#xff0c;eval(str)即可得到结果&#xff01; eval程序如下&#xff1a; sinput("请输入要运算的数字") print("The result is{}".format(eval(s))…

gd动态曲线 php_php中用GD绘制折线图

1 ClassChart{2 private $image; //定义图像3 private $title; //定义标题4 private $ydata; //定义Y轴数据5 private $xdata; //定义X轴数据6 private $seriesName; //定义每个系列数据的名称7 private $color; //定义条形图颜色8 private $bgcolor; //定义图片背景颜色9 priv…

Nginx网站用户认证

一、Nginx网站用户认证 用户认证&#xff1a;用户访问网页时需要输入一个用户名和密码才能打开网页。 nginx的默认网页时安装目录下的html/index.html&#xff0c;配置文件在安装目录下的conf目录中的nginx.conf 无用户认证网页 修改配置文件/usr/local/nginx/conf/nginx.conf(…

STL源码剖析学习二:空间配置器(allocator)

STL源码剖析学习二&#xff1a;空间配置器&#xff08;allocator&#xff09; 标准接口&#xff1a;vlaue_typepointerconst_pointerreferenceconst_referencesize_typedifference_typerebindallocator()--default constructorallocator(const allocator<U>&--copy c…

[html] iframe如何自动调整高度?

[html] iframe如何自动调整高度&#xff1f; 未跨域时&#xff0c;在iframe中利用他的父窗口对象将本页面的滚动高度设置给iframe的height 跨域时&#xff0c;在iframe中将自己的的滚动高设置在本页面内的一个隐藏于父页面不跨域的iframe的hash值&#xff0c; 在隐藏的iframe中…

python selenium 处理弹窗_python+selenium 抓取弹出对话框信息

抓取弹出对话框信息&#xff0c;困挠了我很久&#xff0c;我百度了很久&#xff0c;一直没有找到我想要的内容。最近学习到了。 有两种方法&#xff1a; 1、driver.switch_to.alert.text 2、result EC.alert_is_present()(driver).text 这个要导入from selenium.webdriver.sup…

Nginx基于域名的虚拟主机

一、基于域名的虚拟主机 修改配置文件/usr/local/nginx/conf/nginx.conf 创建新的虚拟主机的根目录和默认网页index.html 重新加载nginx的配置文件 查看两个虚拟主机 因为这两个域名是随便写的&#xff0c;所以需要修改windows系统的hosts文件&#xff0c;让电脑能够解析www.a.…

【100题】第三十四 实现一个队列

一&#xff0c;题目&#xff1a; 生产者消费者线程演示 一个生产者线程将int类型的数入列&#xff0c;一个消费者线程将int类型的数出列 二&#xff0c;分析&#xff1a; 这一个&#xff0c;为操作系统上的一个经典例子&#xff0c;以下是july给出的解答 …

[html] 如何禁止web端的页面缩放?

[html] 如何禁止web端的页面缩放&#xff1f; <meta name"viewport" content"widthdevice-width, initial-scale1,user-scalable0">个人简介 我是歌谣&#xff0c;欢迎和大家一起交流前后端知识。放弃很容易&#xff0c; 但坚持一定很酷。欢迎大家…

centos安装后两个启动项、_Windows安装Centos7双系统后Windows启动项消失

方法一&#xff1a;在Centos7下root登陆编辑 /boot/grub2/grub.cfgvim /boot/grub2/grub.cfg在第一行添加menuentry "Windows10" {insmod ntfsset root(hd0,)chainloader }其中(hd0, 1)的1代表你的windows10安装所在的盘修改完毕后保存并退出然后设置Windows10为默认…

如何给定两个gps坐标 算出航向角_机器人开发如何配置ROS中的TF变换关系?

当我们进行机器人开发时&#xff0c;常常需要面对TF坐标转换&#xff0c;本文以 Autolabor Pro1 与思岚激光雷达为例&#xff0c;介绍ROS TF的使用。Autolabor Pro1是什么&#xff1f;Autolabor Pro1是一款室内外通用机器人移动底盘。该平台上可集成激光雷达、摄像头、GPS等传感…

Tomcat架构与原理

Tomcat架构与原理 架构图 原理 ①、用户点击网页内容&#xff0c;请求被发送到本机端口8080&#xff0c;被在那里监听的Coyote HTTP/1.1 Connector获得。 ②、Connector把该请求交给它所在的Service的Engine来处理&#xff0c;并等待Engine的回应。 ③、Engine获得请求localhos…

[html] 微软雅黑是有版权的,在页面中使用font-family:Microsoft YaHei会不会有版权问题呢?

[html] 微软雅黑是有版权的&#xff0c;在页面中使用font-family:Microsoft YaHei会不会有版权问题呢&#xff1f; font-family: Microsoft YaHei的写法&#xff0c;个人、商用都不会有版权问题&#xff0c;可以放心使用&#xff01;但是如果是通过font-face引用微软雅黑的话&…