一元线性回归(Linear Regression)
简介
在这节练习中,建立一个一元线性回归模型,以预测食品配送的利润。假设你是一家连锁餐厅的老板,正在考虑在不同的城市开设一家新的餐厅。这个连锁店在各个城市都可以配送,并且你有这个城市的利润和人口数据。
ex1data1.txt文件包含了线性回归问题的数据集。第一列是城市的人口数据,第二列是食品配送的利润,负值表示亏损。
绘制数据
对于这个数据集,可以使用散点图来可视化数据,因为它只有两个属性要绘制(利润和人口)。
# PLOTDATA Plots the data points x and y into a new figure
# PLOTDATA(x,y) plots the data points and gives the figure axes labels of
# population and profit.
from matplotlib import pyplot as plt
import numpy as npdef plotData(x, y):plt.title("Training data")plt.xlim(4, 24)plt.ylim(-5, 25)plt.xticks(np.arange(4, 25, 2))plt.yticks(np.arange(-5, 26, 5))plt.xlabel("Population of City in 10,000s")plt.ylabel("Profit in $10,000s")plt.scatter(x, y, s=100, c='r', marker='x')plt.show()
如图:
若要加上线性回归拟合直线,加上预测值y_即可:
def plotLinearFit(x, y, y_):plt.title("Linear Regression")plt.xlim(4, 24)plt.ylim(-5, 25)plt.xticks(np.arange(4, 25, 2))plt.yticks(np.arange(-5, 26, 5))plt.xlabel("Population of City in 10,000s")plt.ylabel("Profit in $10,000s")plt.scatter(x, y, s=100, c='r', marker='x')plt.plot(x, y_, linestyle='-')plt.legend(scatterpoints=1, labels=['Linear regression', 'Training data'], loc=4)plt.show()
梯度下降
这一部分使用梯度下降将线性回归参数θ拟合到数据集。
1.更新公式
线性回归的目标是最小化代价函数J(θ):
其中假设函数由线性模型给出:
模型的参数是,调整它来最小化代价函数J(θ),一种方法是采用批梯度下降算法,在批梯度下降中,每次迭代执行更新:
(同时更新所有的)
随着梯度下降的每一次迭代,参数会更接近最优值,达到最低代价J(θ)。
2.初始化
将初始参数初始化为0,学习速率alpha初始化为0.01。
3.计算代价函数J(θ)
在执行梯度下降以学习最小化代价函数J(θ)时,通过计算代价来监控收敛性是很有帮助的。这一部分实现一个计算J(θ)的函数,以便检查梯度下降实现的收敛性。
# COMPUTECOST Compute cost for linear regression
# J = COMPUTECOST(X, y, theta) computes the cost of using theta as the
# parameter for linear regression to fit the data points in X and ydef computeCost(X, y, theta):m = len(y)J = 0for i in range(m):J += (float(X[i].dot(theta)) - y[i])**2return J/(2*m)
4.梯度下降
# GRADIENTDESCENT Performs gradient descent to learn theta
# theta = GRADIENTDESCENT(X, y, theta, alpha, num_iters) updates theta by
# taking num_iters gradient steps with learning rate alpha
from computeCost import computeCost
import numpy as npdef gradientDescent(X, y, theta, alpha, num_iters):m = len(y) # number of training examplesJ_history = np.zeros(shape=(num_iters, 1))for i in range(num_iters):deriv_0 = 0deriv_1 = 0for j in range(m):deriv_0 += float(X[j].dot(theta))-y[j]deriv_1 += (float(X[j].dot(theta))-y[j])*X[j][1]theta[0] -= deriv_0*alpha/mtheta[1] -= deriv_1*alpha/m# Save the cost J in every iterationJ_history[i] = computeCost(X, y, theta)if i % 300 == 0:print("After %d steps, the cost function:" % i, J_history[i])print("the gradient:", theta)return theta
线性回归拟合数据得到的结果如图:
可视化代价函数J(θ)
为了更好地理解代价函数J(θ),在和值的二维网格上绘制三维代价函数曲线图。
具体代码参考:https://github.com/hanmy1021/MachineLearning
一元线性回归(Linear Regression)相关推荐
- Coursera公开课笔记: 斯坦福大学机器学习第四课“多变量线性回归(Linear Regression with Multiple Variables)”
Coursera公开课笔记: 斯坦福大学机器学习第四课"多变量线性回归(Linear Regression with Multiple Variables)" 斯坦福大学机器学习第 ...
- Coursera公开课笔记: 斯坦福大学机器学习第二课“单变量线性回归(Linear regression with one variable)”
Coursera公开课笔记: 斯坦福大学机器学习第二课"单变量线性回归(Linear regression with one variable)" 发表于 2012年05月6号 由 ...
- Ng第二课:单变量线性回归(Linear Regression with One Variable)
二.单变量线性回归(Linear Regression with One Variable) 2.1 模型表示 2.2 代价函数 2.3 代价函数的直观理解 2.4 梯度下降 2.5 梯度下 ...
- Stanford机器学习---第二讲. 多变量线性回归 Linear Regression with multiple variable
本栏目(Machine learning)包括单参数的线性回归.多参数的线性回归.Octave Tutorial.Logistic Regression.Regularization.神经网络.机器学 ...
- 机器学习方法:回归(一):线性回归Linear regression
欢迎转载,转载请注明:本文出自Bin的专栏blog.csdn.net/xbinworld. 开一个机器学习方法科普系列:做基础回顾之用,学而时习之:也拿出来与大家分享.数学水平有限,只求易懂,学习与工 ...
- 复盘:手推LR(逻辑回归logistics regression),它和线性回归linear regression的区别是啥
复盘:手推LR(逻辑回归logistics regression),它和线性回归linear regression的区别是啥? 提示:系列被面试官问的问题,我自己当时不会,所以下来自己复盘一下,认真学 ...
- 线性回归 Linear Regression 与逻辑回归 Logistic Regression
1 线性回归 Linear Regression 理论 线性回归模型研究多个变量x与y之间的关系,通过回归模型预测位置样本的数据. 假设函数 损失函数 损失函数寻优,最小二乘法 即: 注:最小二乘法需 ...
- 西瓜书+实战+吴恩达机器学习(四)监督学习之线性回归 Linear Regression
文章目录 0. 前言 1. 线性回归参数求解方法 2. 线性回归正则化 2.1. 岭回归 2.2. LASSO 3. 局部加权线性回归 4. 广义线性模型 如果这篇文章对你有一点小小的帮助,请给个关注 ...
- 多元线性回归算法: 线性回归Linear Regression、岭回归Ridge regression、Lasso回归、主成分回归PCR、偏最小二乘PLS
0. 问题描述 输入数据:X=(x1,x2,....,xm)\mathbf{X} = (x_1, x_2,...., x_m)X=(x1,x2,....,xm), 相应标签 Y=(y1,y2,. ...
- 线性回归 linear regression
回归一词,指的是我们根据已有的数据,预测出一个准确的输出值. 假设函数 一元线性回归的假设函数模型: hθ(x)=θ0+θ1∗xh_{θ}(x) = θ_0 + θ_1 * xhθ(x)=θ0+θ ...
最新文章
- Linux设置程序开机启动-tomcat开机启动
- Java实用教程笔记 类与对象
- maven 导入数据库
- jquery.cookie.js 使用方法
- 促使整个团队改善的首要驱动力一定来自技术领域
- ad采样做按键开关_电池应用中的电流采样电阻设计
- 电脑投屏软件哪个好_无线投屏器和软件投屏的区别是什么,哪个更好用?
- .net工具类 获取枚举类型的描述
- paip.java 注解的详细使用代码
- android viewflipper 动态加载,Android开发之ViewFlipper自动播放图片功能实现方法示例...
- DB2 SQLCODE 异常大全编辑(一)
- 人肉搜索、人肉语言及人肉程序设计
- SpCL阅读笔记:Self-paced Contrastive Learning with Hybrid Memory for Domain Adaptive Object Re-ID
- php 爬取股票数据库,【实例】--股票数据定向爬取
- Office 2010 中受保护的视图
- 关于ARM的内核架构
- pycharm pep8 代码格式化
- MVC与MVVM区别
- linux所说的挂载是什么意思
- (hiho一下第三周)#1015 KMP算法 【模版】