回归 ----一元线性回归
目录
回归分析
代价函数 (损失函数)
梯度下降法 ---一元线性回归
sklearn ---一元线性回归
回归分析
用来建立方程模拟两个或者多个变量之间如何关联
被预测的变量叫做:因变量,输出
被用来进行预测的变量叫做:自变量,输入
一元线性回归包含一个自变量一个因变量
两个变量的关系用一条直线来模拟
如果包含两个以上的自变量,则称作多元回归分析
hθ(x) = θ0 + θ1x 这条直线称为回归线 θ1为回归线斜率 θ0为回归线截距
代价函数 (损失函数)
方法:最小二乘法
真实值 y 预测值hθ(x) 则误差平法为(y - hθ(x))^2
找到合适的参数,使误差平方和:最小。
梯度下降法 ---一元线性回归
用代码来模拟一元线性回归:
首先先把需要用到的库导入
import numpy as np
import matplotlib.pyplot as plt
%matplotlib inline
然后载入data.scv,这是一个描述很多点坐标的一个文件,显示出点的分布
# 载入数据
data = np.genfromtxt("data.csv",delimiter=",")
x_data = data[:,0]
y_data = data[:,1]
plt.scatter(x_data,y_data)
plt.show()
接下来实现最小二乘法函数以及梯度下降法的函数,更新回归线的斜率以及截距,使误差更小
#学习率
lr = 0.0001
#截距
b = 0
#斜率
k = 0
#最大迭代次数
epochs = 50#最小二乘法
def minimum_squares(x_data,y_data,b,k):totalError = 0for i in range(0,len(x_data)):totalError += (y_data[i] - (k*x_data[i] + b)) ** 2return totalError / float(len(data)) / 2.0def gradient_descent_runner(x_data,y_data,b,k,lr,epochs):#计算总数据量m = float(len(x_data))#循环epochs次for i in range (epochs):b_grad = 0k_grad = 0#计算梯度的总和再求平均for j in range(0,len(x_data)):b_grad += (1/m) *(((k*x_data[j]) +b) - y_data[j])k_grad += (1/m) *(((k*x_data[j]) +b) - y_data[j]) * x_data[j]#更新b和kb = b - (lr * b_grad)k = k - (lr * k_grad)#每迭代5次,输出一次图像if i % 5 == 0:print("epochs:",i)plt.plot(x_data,y_data,'b.')plt.plot(x_data,k*x_data+b,'r')plt.show()return b,k
print("Staring b ={0},k = {1}, error = {2}" .format(b,k,minimum_squares(x_data,y_data,b,k)))
print("Running.....")
b,k = gradient_descent_runner(x_data,y_data,b,k,lr,epochs)
print("After {0} iterations b = {1},k={2},error = {3}" .format(epochs,b,k,minimum_squares(x_data,y_data,b,k)))#画图
plt.plot(x_data,y_data,'b.')
plt.plot(x_data,k*x_data+b, 'r')
plt.show()
代码中使用了迭代50次,每5次输出一次图像 结果如下:
从上图中我们可以很清楚的看到了,红色线段的误差越来越小。
sklearn ---一元线性回归
其实,我们要实现一元线性回归,我们可以直接调用库来完成,但是由于我们使初学者,对于实现的过程以及思想还是弄清楚最好,对于有些比较麻烦的思想,我们可以直接调用来实现。
实现代码如下:
先导入需要的库
from sklearn.linear_model import LinearRegression
import numpy as np
import matplotlib.pyplot as plt
%matplotlib inline
再载入数据
#载入数据
data = np.genfromtxt("data.csv",delimiter = ',')
x_data = data[:,0]
y_data = data[:,1]
plt.scatter(x_data,y_data) #scatter 画三散点图
plt.show()
print(x_data.shape) #shape 查看矩阵或者数组的维数
如图:
x_data = data[:,0,np.newaxis]
y_data = data[:,1,np.newaxis]
model = LinearRegression()
model.fit(x_data,y_data)
上边代码的处理过程只是因为我们fit函数使用时,它的参数有要求,对于这个问题,我们可以自己搜fit函数的使用方法。
plt.plot(x_data,y_data,'b.')
plt.plot(x_data,model.predict(x_data),'r')
plt.show()
上边代码就是我们实现一元线性回归调用的函数,结果如图:
这个图最终的结果和我们自己编写出来代码实现的结果是一样的。
回归 ----一元线性回归相关推荐
- 回归——一元线性回归
一元线性回归 基本概念 分类与回归 一元线性回归 代价函数 相关系数 梯度下降法 推导 代码实现 梯度下降法Python代码实现 从0开始 借助python库 matlab代码实现 参考文章链接 基本 ...
- 机器学习——回归——一元线性回归
目录 理论部分 1.1 回归问题 1.2 回归问题分类 1.3 线性回归 1.4 一元线性回归 1.4.1 基本形式 1.4.2 损失函数 1.4.3 训练集与测试集 1.4.4 学习目标 1.4.5 ...
- UA MATH 571B 回归 QE练习题 一元线性回归理论
UA MATH 571B 回归 QE练习题 一元线性回归理论 2015/1/5 2015/5/5 2016/5/6 2017/1/5 2017/5/6 这是2015年1月第五题,2015年5月第五题, ...
- [机器学习-回归算法]一元线性回归用最小二乘法的推导过程
一元线性回归用最小二乘法的推导过程 在数据的统计分析中,数据之间即变量x与Y之间的相关性研究非常重要,通过在直角坐标系中做散点图的方式我们会发现很多统计数据近似一条直线,它们之间或者正相关或者负相关. ...
- 【机器学习】监督学习--(回归)一元线性回归
注:数据集在文章末尾. (1)梯度下降法 - - 一元线性回归 import numpy as np import matplotlib.pyplot as plt# 载入数据 data = np.g ...
- 机器学习公开课笔记(1):机器学习简介及一元线性回归
初步介绍 监督式学习: 给定数据集并且知道其正确的输出应该是怎么样的,即有反馈(feedback),分为 回归 (Regressioin): map输入到连续的输出值. 分类 (Classificat ...
- UA MATH571A 一元线性回归II 统计推断2
UA MATH571A 一元线性回归II 统计推断2 β0\beta_0β0的分布 拟合与预测 拟合值的区间估计 预测值的区间估计 数值例子:女性肌肉量与年龄的关系 β0\beta_0β0的分布 ...
- UA MATH571A 一元线性回归IV 模型诊断
UA MATH571A 一元线性回归IV 模型诊断 解释变量 解释变量的可视化 残差 残差的性质 Semistudentized Residual 残差的可视化 残差关于解释变量的图 残差关于拟合值的 ...
- UA MATH571A 一元线性回归III 方差分析与相关性分析
UA MATH571A 一元线性回归III 方差分析与相关性分析 ANOVA Table F检验 回归系数的F检验 F检验与t检验等价 广义线性检验方法 R2R^2R2 数值例子:女性肌肉量与年龄的关 ...
- UA MATH571A 一元线性回归I 模型设定与估计
UA MATH571A 一元线性回归I 模型设定与估计 模型设定 最小二乘法(Method of Least Square) Coefficients Mean Response and Residu ...
最新文章
- 手机算通用计算机还是,电脑手机通用的便签是哪个?有人知道吗
- boost::mp11::mp_any_of_q相关用法的测试程序
- caffe编译出现 libcudart.so.8.0 cannot open shared object file: No such file or directory的错去
- STN可以增强CNN网络
- 用计算机解决自动驾驶,自动驾驶汽车很美好,但这3个逻辑解决不了,依然是人类驾驶汽车...
- 安卓“新皇”来了!华为Mate 40确定10月22日发布
- 记一次Ubuntu安装nodeJs过程
- 【图像提取】基于matlab形态学矩阵块+线段提取【含Matlab源码 1014期】
- acwing蓝桥杯刷题
- 24V电压TVS二极管选型
- rdkit 化学反应ReactionFromSmarts
- 转《牵一只蜗牛去散步》
- vs2017 html插件推荐,收藏!推荐12个超实用的Visual Studio插件
- cl 编译器环境配置问题
- 博学谷python_博学谷 python
- 【opencv初学者】2、视频的读取
- matlab模糊集合及其运算,模糊数学-Matlab案例版.pdf
- 分享5款同类软件中的翘楚,属于是WIN10必备良品
- 道路工程、交通工程与道路交通工程
- FIFO学习:FIFO深度的计算、通过Verilog实现FIFO以及利用SRAM设计FIFO