[Machine Learning] 线性回归
1、线性回归综述
在统计学中,线性回归是利用称为线性回归方程的最小二乘函数对一个或多个自变量和因变量之间关系进行建模的一种回归分析。这种函数是一个或多个称为回归系数的模型参数的线性组合。一个带有一个自变量的线性回归方程代表一条直线。我们需要对线性回归结果进行统计分析。
例如,假设我们已知一些学生年纪和游戏时间的数据,可以建立一个回归方程,输入一个新的年纪时,预测该学生的游戏时间。自变量为学生年纪,因变量为游戏时间。当只有一个因变量时,我们称该类问题为简单线性回归。当游戏时间与学生年纪和学生性别有关,因变量有多个时,我们称该类问题为多元线性回归。
在研究该问题之前,首先了解下编程中用到的常见的统计量:
2、简单线性回归实例及编程实现
研究一个自变量(X)和一个因变量(y)的关系
简单线性回归模型定义:
简单线性回归方程:
其中:
为回归线的截距
为回归线的斜率
通过训练数据,求取出估计参数建立的直线方程:
实际编程时,主要是根据已知训练数据,估计出和的值和
以下面实例为例,第一列表示每月投放广告的次数,第二列表示汽车向量,通过Python编程求取线性回归方程:
投放广告数 |
汽车销量 |
1 |
14 |
3 |
24 |
2 |
18 |
1 |
17 |
3 |
27 |
编程关键在于如何求取b0和b1的值,我们引入一个方程(sum of square):
当上述方程的值最小时,我们认为求取到线程回归方程参数的值,对该方程求最小值可以进一步转化为求导和求极值的问题,求导过程省略,最后结论如下:
实现代码:
import numpy as np
from matplotlib import pylab as pl# 定义训练数据
x = np.array([1,3,2,1,3])
y = np.array([14,24,18,17,27])# 回归方程求取函数
def fit(x,y):if len(x) != len(y):returnnumerator = 0.0denominator = 0.0x_mean = np.mean(x)y_mean = np.mean(y)for i in range(len(x)):numerator += (x[i]-x_mean)*(y[i]-y_mean)denominator += np.square((x[i]-x_mean))print('numerator:',numerator,'denominator:', denominator)b0 = numerator/denominatorb1 = y_mean - b0*x_meanreturn b0,b1# 定义预测函数
def predit(x,b0,b1):return b0*x + b1# 求取回归方程
b0,b1 = fit(x,y)
print('Line is:y = %2.0fx + %2.0f'%(b0,b1))# 预测
x_test = np.array([0.5,1.5,2.5,3,4])
y_test = np.zeros((1,len(x_test)))
for i in range(len(x_test)):y_test[0][i] = predit(x_test[i],b0,b1)# 绘制图像
xx = np.linspace(0, 5)
yy = b0*xx + b1
pl.plot(xx,yy,'k-')
pl.scatter(x,y,cmap=pl.cm.Paired)
pl.scatter(x_test,y_test[0],cmap=pl.cm.Paired)
pl.show()
拟合结果:
蓝色表示测试数据,橙色表示预测数据。
3、多元线性回归实例及编程实现
多元线性回归方程和简单线性回归方程类似,不同的是由于因变量个数的增加,求取参数的个数也相应增加,推导和求取过程也不一样。
y=β0+β1x1+β2x2+ ... +βpxp+ε
对于b0、b1、…、bn的推导和求取过程,引用一个第三方库进行计算。以如下数据为例,对运输里程、运输次数与运输总时间的关系,建立多元线性回归模型:
运输里程 |
运输次数 |
运输总时间 |
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.0 |
90 |
3 |
7.6 |
90 |
2 |
6.1 |
实现:
import numpy as np
from sklearn import linear_model# 定义训练数据
x = np.array([[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]])print(x)
X = x[:-1,:2]
# X = x[:,:-1]
Y = x[:-1,-1]
print(X,Y)# 训练数据
regr = linear_model.LinearRegression()
regr.fit(X,Y)
print('coefficients(b1,b2...):',regr.coef_)
print('intercept(b0):',regr.intercept_)# 预测
x_test = np.array([[102,6],[100,4]])
y_test = regr.predict(x_test)
print(y_test)
预测结果
[Machine Learning] 线性回归相关推荐
- Machine Learning | (9) 回归算法-线性回归
Machine Learning | 机器学习简介 Machine Learning | (1) Scikit-learn与特征工程 Machine Learning | (2) sklearn数据集 ...
- Re:从零开始的机器学习 - Machine Learning(一) 线性回归
从我对整个职业生涯的规划出发,我不仅想做一些高质量的应用(软件工程的角度),还想做一些激动人心的应用,所以我希望能在机器学习的方向走,尽管我在大学粗浅的学了些皮毛,但如果要把机器学习作为职业发展的话这 ...
- 机器学习 Machine Learning中一元线性回归的学习笔记~
1 前言 今天在做 Machine Learning的作业~ 2 一元线性回归 2.1 loss函数 带有规范化的loss函数: J(θ)=12m∑i=1m(hθ(x(i))−y(i))2+λ2m∑j ...
- 机器学习 Machine Learning中多元线性回归的学习笔记~
1 前言 今天在做 Machine Learning中多元线性回归的作业~ 2 Machine Learning中多元线性回归 2.1 Feature Scaling和 Mean Normalizat ...
- Machine Learning笔记(三) 多变量线性回归
2019独角兽企业重金招聘Python工程师标准>>> Machine Learning笔记(三) 多变量线性回归 注:本文内容资源来自 Andrew Ng 在 Coursera上的 ...
- Machine Learning(吴恩达<一>线性回归与逻辑回归)
目录 一.机器学习(ML)简介 1. 人工智能.机器学习.深度学习的关系 2. 机器学习与深度学习的比较 2.1.应用场景 2.2.所需数据量 2.3.执行时间 2.4.解决问题的方法 3. 监督学习 ...
- 吴恩达《Machine Learning》Jupyter Notebook 版笔记发布!图解、公式、习题都有了
在我很早之前写过的文章<机器学习如何入门>中,就首推过吴恩达在 Coursera 上开设的<Machine Learning>课程.这门课最大的特点就是基本没有复杂的数学理论和 ...
- Machine Learning | (12) 非监督学习-k-means
Machine Learning | 机器学习简介 Machine Learning | (1) Scikit-learn与特征工程 Machine Learning | (2) sklearn数据集 ...
- Machine Learning | (11) 回归性能评估与欠拟合、过拟合
Machine Learning | 机器学习简介 Machine Learning | (1) Scikit-learn与特征工程 Machine Learning | (2) sklearn数据集 ...
最新文章
- solr/solrj原子更新
- opencv 设置视频帧的分辨率“无效”
- node --- 创建一个Socket服务器
- 程序员35岁不转型就退休,是真的吗?
- C#用IrisSkin4.dll 美化Winform窗体
- 网页上的摄影展:等高响应布局实现
- SpringBoot-视图解析与模板引擎
- ios Image裁剪成圆形的方法
- 【Flink】error while closing Kafka consumer NullPointerException InterruptedException
- 微课|中学生可以这样学Python(8.4节):递归算法例题讲解1
- 原来 Kylin 的增量构建,大有学问! | 原力计划
- java批量实现1对1关系的自动匹配_杂谈Java内存Webshell的攻与防
- Eclipse、VBA、IE开发者工具 Debug快捷键
- php城市 省份,怎么获取省份和城市?
- 知识图谱(关系网络)概念及常用算法
- Android ActionBar 更改返回图标
- ios运行html时黑屏,原神ios黑屏打不开怎么办?原神ios闪退解决方法
- 第二章 Android内核和驱动程序(转)
- 一个view事件分发,面试官6连问直击灵魂,我被虐的体无完肤
- Golang高性能日志库zap + lumberjack 日志切割组件详解