基本概念

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()"

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

  1. Scrapy网络爬虫框架实际案例讲解,Python爬虫原来如此简单!

    创建项目 Scrapy爬虫框架提供一个工具来创建项目,生成的项目中预置了一些文件,用户需要在这些文件中添加python代码.最后,如果你的时间不是很紧张,并且又想快速的提高,最重要的是不怕吃苦,建议你 ...

  2. 【机器学习】快速入门简单线性回归 (SLR)

    简单线性回归图(青色散点为实际值,红线为预测值) statsmodels.api.statsmodels.formula.api 和 scikit-learn 的 Python 中的 SLR 今天云朵 ...

  3. CPDA案例:基于EXCEL的一元线性回归案例《广告与销量》

    基于EXCEL的一元线性回归案例:广告与销量 CPDA案例:基于EXCEL的一元线性回归案例<广告与销量> 业务分析 一元线性回归步骤 业务解读 CPDA案例:基于EXCEL的一元线性回归 ...

  4. 线性回归原理----简单线性回归、多元线性回归

    回归分析是用来评估变量之间关系的统计过程.用来解释自变量X与因变量Y的关系.即当自变量X发生改变时,因变量Y会如何发生改变. 线性回归是回归分析的一种,评估的自变量X与因变量Y之间是一种线性关系,当只 ...

  5. 简单线性回归截距假设检验_第10章 简单线性回归分析思考与练习参考答案

    第10章 简单线性回归分析 思考与练习参考答案 一.最佳选择题 1.如果两样本的相关系数r1?r2,样本量n1?n2,那么( D ). A. 回归系数b1?b2 B.回归系数b1?b2 C. 回归系数 ...

  6. TensorFlow实现简单线性回归

    文章目录 实验主题-TensorFlow实现简单线性回归 案例实现 实验效果 逻辑回归或线性回归是用于对离散类别进行分类的监督机器学习方法.在本章中的目标是构建一个模型,用户可以通过该模型预测预测变量 ...

  7. 简单线性回归截距假设检验_第10章 简单线性回归分析思考与练习参考答案.doc...

    简单线性回归分析 思考与练习参考答案 最佳选择题 1.如果两样本的相关系数,样本量,那么( D ). A. 回归系数 B.回归系数 C. 回归系数 D.统计量 E. 以上均错 2.如果相关系数=1,则 ...

  8. python大数据分析入门实例-Python大数据分析与机器学习商业案例实战

    大数据分析与机器学习技术已成为各行各业实现数字化变革的关键驱动力.本书以功能强大且较易上手的Python语言为编程环境,全面讲解了大数据分析与机器学习技术的商业应用实战.全书共16章,讲解了线性回归模 ...

  9. Python机器学习经典案例实战-韦玮-专题视频课程

    Python机器学习经典案例实战-3710人已学习 课程介绍         Python在机器学习领域应用是非常广泛的,比如,我们可以使用机器学习进行验证码识别,使用机器学习实现计算机视觉项目,或者 ...

最新文章

  1. 软件测试培训分享:软件测试的职业发展方向有哪些
  2. 【 English 】与个人品质有关的英语词汇
  3. 在Oracle中exception关键字,Oracle表字段有Oracle关键字出现异常解决方案
  4. Android开发--详解SAX解析XML文件
  5. SQL视频总结(2)
  6. C# 控件开发中常用属性整理
  7. Mysql InnoDB索引分析
  8. C++描述的位运算总结
  9. 欧拉降幂(Euler_Power_Formula)
  10. 黑顶帽—lhMorpBlackTopHat
  11. php算法学习,php算法学习之动态规划
  12. IntelliJ IDEA普通的Java项目如何转成Maven Web项目
  13. mysql(6)-mysql的视图功能和存储过程
  14. 小学多媒体计算机室管理计划,多媒体教室管理工作计划
  15. 花生壳:域名诊断—客户端离线
  16. matlab实现对图像的简单幻方置乱
  17. 基于rrweb框架对web 页面录制与回放
  18. Error500错误的解决方法(俩种解决方法)
  19. android 限制后台进程,Android O Preview 相关-后台执行限制
  20. 2022Android春招面试,实战分析

热门文章

  1. php 判断浏览器是ie,js判断是否是ie浏览器
  2. 辽宁大学计算机专业接收调剂,目前有计算机专业调剂通知的学校,不断更新—3月26日更新,新增辽宁大学等...
  3. MSP430F5529 DriverLib 库函数学习笔记(一)时钟配置和闪烁LED
  4. gulp+PC前端静态页面项目开发
  5. 安卓USB开发教程 五 安卓 AOA 1.0
  6. [react] 说说你对声明式编程的理解?
  7. 前端学习(2967):表单验证
  8. [html] input元素size属性和width 的区别是什么?
  9. [html] HTML5如何使用音频和视频?
  10. [css] 用css3实现文字发光的效果