Python机器学习课程:线性回归算法
本文的文字及图片来源于网络,仅供学习、交流使用,不具有任何商业用途,如有问题请及时联系我们以作处理
最基本的机器学习算法必须是具有单个变量的线性回归算法。如今,可用的高级机器学习算法,库和技术如此之多,以至于线性回归似乎并不重要。但是,学习基础知识总是一个好主意。这样,您将非常清楚地理解这些概念。在本文中,我将逐步解释线性回归算法。
想法和公式
线性回归使用非常基本的预测思想。公式如下:
Y = C + BX
我们在学校都学过这个公式。提醒您,这是一条直线方程。在此,Y是因变量,B是斜率,C是截距。通常,对于线性回归,
它写为:
在这里," h"是假设或预测的因变量,X是输入特征,theta0和theta1是系数。Theta值从头开始随机初始化。然后使用梯度下降,我们将更新theta值以最小化成本函数。这是成本函数和梯度下降的解释。
成本函数和梯度下降
成本函数确定预测与原始因变量的距离。这是公式
任何机器学习算法的想法都是最小化成本函数,以使假设接近于原始因变量。为此,我们需要优化theta值。如果我们分别基于theta0和theta1取成本函数的偏导数,则会得到梯度下降。要更新theta值,我们需要从相应的theta值中减去梯度下降:
经过偏导数后,以上公式将变为:
此处,m是训练数据的数量,而alpha是学习率。我正在谈论一种变量线性回归。这就是为什么我只有两个theta值的原因。如果有很多变量,则每个变量都有theta值。
工作实例
我将要使用的数据集来自安德鲁·伍(Andrew Ng)的Coursera机器学习课程。这是在Python中逐步实现线性回归的过程。
(1) 导入包和数据集。
import numpy as np
import pandas as pd
df = pd.read_csv('ex1data1.txt', header = None)
df.head()
在此数据集中,列零是输入要素,列1是输出变量或因变量。我们将使用列0使用上面的直线公式预测列1。
(2) 将第1列与第0列相对应。
输入变量和输出变量之间的关系是线性的。当关系为线性时,线性回归效果最佳。
(3) 初始化theta值。我正在将theta值初始化为零。但是任何其他值也应该起作用。
theta = [0,0]
(4) 根据前面讨论的公式定义假设和成本函数。
def hypothesis(theta, X):
return theta[0] + theta[1]*X
def cost_calc(theta, X, y):
return (1/2*m) * np.sum((hypothesis(theta, X) - y)**2)
(5) 计算训练数据的数量作为DataFrame的长度。然后定义梯度下降函数。在此函数中,我们将更新theta值,直到cost函数达到最小值为止。可能需要任何数量的迭代。在每次迭代中,它将更新theta值,并使用每个更新的theta值来计算成本以跟踪成本。
m = len(df)
def gradient_descent(theta, X, y, epoch, alpha):
cost = []
i = 0
while i < epoch:
hx = hypothesis(theta, X)
theta[0] -= alpha*(sum(hx-y)/m)
theta[1] -= (alpha * np.sum((hx - y) * X))/m
cost.append(cost_calc(theta, X, y))
i += 1
return theta, cost
(6) 最后,定义预测函数。它将从梯度下降函数获得更新的theta并预测假设或预测的输出变量。
def predict(theta, X, y, epoch, alpha):
theta, cost = gradient_descent(theta, X, y, epoch, alpha)
return hypothesis(theta, X), cost, theta
(7) 使用预测函数,找到假设,成本和更新的theta值。我选择学习率为0.01,然后将这个算法运行2000个时期或迭代。
y_predict, cost, theta = predict(theta, df[0], df[1], 2000, 0.01)
最终theta值为-3.79和1.18。
(8) 在同一图中绘制原始y和假设或预测y。
%matplotlib inline
import matplotlib.pyplot as plt
plt.figure()
plt.scatter(df[0], df[1], label = 'Original y')
plt.scatter(df[0], y_predict, label = 'predicted y')
plt.legend(loc = "upper left")
plt.xlabel("input feature")
plt.ylabel("Original and Predicted Output")
plt.show()
假设图是公式中所预期的一条直线,并且该直线正在最佳位置通过。
(9) 记住,我们在每次迭代中都跟踪成本函数。让我们绘制成本函数。
plt.figure()
plt.scatter(range(0, len(cost)), cost)
plt.show()
如前所述,我们的目的是优化theta值以最小化成本。从该图可以看出,成本从一开始就急剧下降,然后稳定下来。这意味着theta值已按照我们的预期正确优化。
想要获取更多Python学习资料可以加
QQ:2955637827私聊
或加Q群630390733
大家一起来学习讨论吧!
Python机器学习课程:线性回归算法的更多相关文章
- 通过机器学习的线性回归算法预测股票走势(用Python实现)
在本人的新书里,将通过股票案例讲述Python知识点,让大家在学习Python的同时还能掌握相关的股票知识,所谓一举两得.这里给出以线性回归算法预测股票的案例,以此讲述通过Python的sklearn ...
- 机器学习---用python实现最小二乘线性回归算法并用随机梯度下降法求解 (Machine Learning Least Squares Linear Regression Application SGD)
在<机器学习---线性回归(Machine Learning Linear Regression)>一文中,我们主要介绍了最小二乘线性回归算法以及简单地介绍了梯度下降法.现在,让我们来实践 ...
- python机器学习的常用算法
Python机器学习 学习意味着通过学习或经验获得知识或技能.基于此,我们可以定义机器学习(ML)如下 - 它可以被定义为计算机科学领域,更具体地说是人工智能的应用,其为计算机系统提供了学习数据和从经 ...
- python机器学习实现线性回归
线性回归 关注公众号"轻松学编程"了解更多. [关键词]最小二乘法,线性 一.普通线性回归 1.原理 分类的目标变量是标称型数据,而回归将会对连续型的数据做出预测. 应当怎样从一大 ...
- python 机器学习 K-近邻算法
本人想边写文章,边学习,用的是 网上最火的<机器学习实战>machine learning in action 来做一次实践. 希望在过程中理顺思路之余,也有分享自己的一些理解,学习.加油 ...
- 吴裕雄 python 机器学习——支持向量机线性回归SVR模型
import numpy as np import matplotlib.pyplot as plt from sklearn import datasets, linear_model,svm fr ...
- 李宏毅机器学习课程笔记-2.5线性回归Python实战
本文为作者学习李宏毅机器学习课程时参照样例完成homework1的记录. 任务描述(Task Description) 现在有某地空气质量的观测数据,请使用线性回归拟合数据,预测PM2.5. 数据集描 ...
- 机器学习|线性回归算法详解 (Python 语言描述)
原文地址 ? 传送门 线性回归 线性回归是一种较为简单,但十分重要的机器学习方法.掌握线性的原理及求解方法,是深入了解线性回归的基本要求.除此之外,线性回归也是监督学习回归部分的基石. 线性回归介绍 ...
- [机器学习Lesson 2]代价函数之线性回归算法
本章内容主要是介绍:单变量线性回归算法(Linear regression with one variable) 1. 线性回归算法(linear regression) 1.1 预测房屋价格 该问题 ...
随机推荐
- python3 Failed to establish a new connection: [WinError 10061] 由于目标计算机积极拒绝,无法连接
报错源代码from selenium import webdriverimport unittestimport timefrom HTMLTestRunner import HTMLTestRunn ...
- Spring与Web环境集成
1. Spring与Web环境集成 1.1 ApplicationContext应用上下文获取方式 应用上下文对象是通过new ClasspathXmlApplicationContext(sprin ...
- Alpha冲刺-第五次冲刺笔记
Alpha冲刺-冲刺笔记 这个作业属于哪个课程 https://edu.cnblogs.com/campus/fzzcxy/2018SE2 这个作业要求在哪里 https://edu.cnblogs. ...
- 题解 洛谷 P3396 【哈希冲突】(根号分治)
根号分治 前言 本题是一道讲解根号分治思想的论文题(然鹅我并没有找到论文),正 如论文中所说,根号算法--不仅是分块,根号分治利用的思想和分块像 似却又不同,某一篇洛谷日报中说过,分块算法实质上是一种 ...
- linux离线安装docker + docker-compose
1 准备阶段(docker) 1.1 卸载旧版本 如果电脑上已经存在docker,需要先卸载可能存在的旧版本: 1. 删除某软件,及其安装时自动安装的所有包 sudo apt-get autoremo ...
- 老猿学5G:3GPP 5G规范中的URI资源概念
☞ ░ 前往老猿Python博文目录 ░ 说明: 本文参考3GPP29.501<Principles and Guidelines for Services Definition>结合笔者 ...
- moviepy音视频剪辑:moviepy中的剪辑基类Clip详解
专栏:Python基础教程目录 专栏:使用PyQt开发图形界面Python应用 专栏:PyQt+moviepy音视频剪辑实战 专栏:PyQt入门学习 老猿Python博文目录 老猿学5G博文目录 一. ...
- 第11.16节 Python正则元字符“()”(小括号)与组(group)匹配模式
一. 什么是组 关于组匹配模式,Python官网上说得比较简单,也没有这个名词,只有组这个名词,老猿查了比较多的资料和做了相关测试之后才理解. 组匹配模式,就是在匹配的正则表达式中使用小括号" ...
- ADF 第一篇:Azure Data Factory介绍
Azure Data Factory(简写 ADF)是Azure的云ETL服务,简单的说,就是云上的SSIS.ADF是基于云的ETL,用于数据集成和数据转换,不需要代码,直接通过UI(code-fre ...
- Gitlab勾选Remove Source Branch后本地仍然能够看到该分支
现象: Gitlab合并Merge Request时,勾选了Remove Source Branch,但是本地仍然能够看到该分支(git branch -a),而远程仓库中该分支已经不存在. 解决: ...