python做线性回归_利用python实现简单的线性回归

Python部落(python.freelycode.com)组织翻译,禁止转载,欢迎转发。

Python部落(python.freelycode.com)组织翻译,禁止转载,欢迎转发。

Simple-Linear-Regression.jpg?w=600

用python实现简单的线性回归

利用python实现简单的线性回归

今天,我们将纯粹使用python来实现最流行和最直接的回归技术-简单的线性回归。当我说纯粹使用python。它指的是没有使用任何python机器学习库。

当我说简单的线性回归,你在想什么?让我猜猜:实现简单的线性回归这么简单?

理解简单的线性回归比线性回归更容易

时间复杂度水平,简单的线性回归将花费更少的时间来处理?

当我说简单线性回归的时候,也许我以上的分析你都猜测过,也许上述假设在技术上是合理的。但有一个特别的理由称之为简单的线性回归。首先,让我们来了解为什么我们称之为简单的线性回归。然后我们可以开始我最喜欢的部分,在python中编写简单的线性回归。

构建简单的线性回归,而不使用任何Python机器学习库

什么是简单线性回归?

在线性回归分析文章中,我们主要集中在解释线性回归的概念。我们在描述线性回归通用方程时使用下面的方程:

latex.php?latex=%5Chat%7By%7D+%3D+%7Bw%7D_%7B0%7D+%2B+%7Bw%7D_%7B1%7D+%2A+%7Bx%7D&bg=ffffff&fg=000&s=0

上述方程更可能是直线方程。

latex.php?latex=%5Ctextrm%7B+y+%3D+m%2Ax+%2B+c+%7D&bg=ffffff&fg=000&s=0

其中m是直线的斜率,c是常数值。如果我们比较上述两个方程,我们可以感知这两个方程的相似程度。他们只是在写的方式不同,其他都是相同的。

在线性回归中,m(

latex.php?latex=%7Bw%7D_%7B1%7D&bg=ffffff&fg=000&s=0)值称为回归系数,c(

latex.php?latex=%7Bw%7D_%7B0%7D&bg=ffffff&fg=000&s=0)值称为常数。在上面的方程中,我们只有一个因变量,一个自变量。这就是我们只有一个系数的原因。

从属变量 - > y或

latex.php?latex=%5Chat%7By%7D&bg=ffffff&fg=000&s=0

自变量 - > x或

latex.php?latex=%7Bx%7D&bg=ffffff&fg=000&s=0

如果我们有k个自变量。我们将得到k个系数值。如果我们有多个独立变量来预测依赖值,那么它被称为线性回归算法。当我们只有一个自变量来预测依赖值时,那么它是简单的线性回归问题。

让我给更多的例子认识线性回归和简单的线性回归问题之间的区别。

简单的线性回归示例使用房间的特征数来预测房价。房间数是自变量,价格是因变量。

考虑学生学习的时间,学生将得到预测分数百分比。时间数是自变量,分数百分比是因变量。

给定时间来预测房间外的温度。时间是自变量,温度是因变量。

线性回归示例使用像房间数,使用年限,花园空间大小预测房价。房间数,使用年限,花园面积是自变量,房价是因变量

通过考虑学生在英语,数学,物理上花费的时间,可以预测学生将获得分百分比。学生在英语,数学和物理学上花费的时间是自变量,学生得分百分比是因变量。

给定时间,气候细节预测房间外的温度。时间和气候细节是自变量,温度是因变量。

有了上述解释,我希望我解决简单线性回归和线性回归之间的差异。

简言之:

简单线性回归:有一个自变量来预测因变量。

线性回归:具有多个自变量以预测因变量。

现在让我们在python中构建简单的线性回归,而不使用任何机器库。

为了实现简单的线性回归,我们需要知道以下公式。

用于计算平均值的公式。

用于计算方差值的公式。

计算两个系列读数之间协方差的公式(对于假设的X,Y)

计算W0和W1值的公式。

计算平均值的公式

latex.php?latex=%5Ctextrm%7Bmean%28x%29%7D+%3D+%5Cfrac%7B%28x_1%29%2B+%28x_2%29%2B%28x_3%29+...+%2B+%28x_n%29%7D+%7Bn%7D&bg=ffffff&fg=000&s=0

用于计算方差值的公式

latex.php?latex=%5Csigma%5E2+%3D+%5Cfrac%7B%5Cdisplaystyle%5Csum_%7Bi%3D1%7D%5E%7Bn%7D%28x_i+-+mean%28x%29%29%5E2%7D+%7Bn-1%7D&bg=ffffff&fg=000&s=0

用于计算协方差的公式

latex.php?latex=cov_%7Bx%2Cy%7D%3D%5Cfrac%7B%5Csum_%7Bi%3D1%7D%5E%7BN%7D%28x_%7Bi%7D-mean%28x%29%29%28y_%7Bi%7D-mean%28y%29%29%7D%7BN-1%7D&bg=ffffff&fg=000&s=0

计算W0和W1值的公式

latex.php?latex=%7Bw%7D_1+%3D+%5Cfrac%7Bcovariance%28x%2Cy%29%7D+%7Bvariance%28x%29%7D&bg=ffffff&fg=000&s=0

latex.php?latex=%7Bw%7D_0+%3D+mean%28y%29+-+%28w_1+%2A+mean%28x%29%29&bg=ffffff&fg=000&s=0

我们将使用所有上面列出的公式在Python中实现简单的线性回归,而没有任何机器学习库。

在python中实现简单线性回归的过程中。我们将实现所有上述公式。然后我们将使用实现的函数来构建简单的线性回归模型。

之后,我们将使用python表格分析包来实现同样简单的线性回归模型,只有少数几行代码。我们可以将其视为检查前的实现。

让我们开始按顺序构建所需的函数。平均值函数。

方差函数。

协方差函数。

计算W0和W1值的函数。

函数计算平均值

b0e75a71c2e14a20bf57dadfa07a45be.png

计算方差值的函数

71126db105134c6ea53db3f3ee54e094.png使用cal_variance函数,我们将计算readings的方差。

使用已经实现的cal_mean函数,我们计算平均值。

然后我们计算readings中的每个readings与平均值之间的差值。之后,我们对计算的差值进行平方,并将平方差值存储在 mean_difference_squared_readings中。

找到mean_difference_squared_readings的和,并返回方差和readings长度 -1的数的比率。

计算协方差值的函数

02c6fc41a7cd422fb9b6ad4962152b9f.png使用cal_covariance函数,我们将计算readings_1和readings_2之间的协方差。这里我们指的是readings_1和readings_2之间的协方差。

使用已经实现的cal_mean函数计算readings_1和readings_2的平均值。

然后将读数_1和读数_2的平方差的乘积相加。

最后,返回协方差和(reads_size - 1)的比率。

使用上述函数,我们准备好计算简单的线性回归系数W0和W1值。一旦我们实现了这些,我们可以使用这些值来执行预测。

计算W0和W1的值

9ecd5e375c214294be82d921f07a14a5.png

从上述计算公式,我们正在创建cal_simple_linear_regression_coefficients函数来计算W0和W1。

计算w1值,我们需要找到x_readings和y_readings的协方差比和x_readings的方差。

使用w1我们计算w0的值。

最后,我们返回了W0和W1的值

现在让我们使用所有上面实现的函数来使用简单的线性回归技术来预测房价。

Predicting-House-price-with-Python.jpg?resize=768%2C768

我们使用相同的房价数据用python实现线性回归。

让我们先加载数据集,看看数据集中有什么特征。要加载数据集,我们将使用python数据分析库pandas。

63a23b0215a14e4198145f22443170fe.png

我们给出了数据集所在的input_path。

使用input_path,我们将数据加载到pandas数据框架中。

接下来,使用加载的数据框架,我们调用simple_linear_regression模型。

在simple_linear_regression函数内部,现在我们只是得到头名称并尝试打印头名称。

如果我们在我们的系统中准备好了pandas设置。我们可以期望下面的输出。

脚本输出

64128375b1db4e46b684ebd84a31f91f.png

从脚本输出,我们知道我们有一个独立变量(square_feet)和一个因变量(price)。我们的目的是使用square_feet和价格读数来计算简单的线性回归系数。然后我们将使用计算的简单线性回归系数来预测房价。

现在让我们写一个简单的函数来显示房子的价格如何随着square_feet变化。我们将使用散点图来可视化。

f721c30bea0847068c110589bc62cb83.png

现在让我们调用scatter_graph函数,将squre_feet读数作为x参数,将价格读数作为y参数。

a26ae1f41ef64f1b943ca4f95d510586.png

现在,让我们使用房价数据集来建模简单的线性回归。

990b2783f4df4612aafc23507d55c63c.png

在simple_linear_regression函数中。我们使用已经实现的cal_mean函数来计算square_feet和price的平均值。

接下来,我们使用已经实现的cal_variance函数来计算square_feet和price 的方差。

之后,我们计算W0和W1值。

我们正在使用W0和W1值来执行预测。这只是预测房价给square_feet价值。

查看下面的完整代码:

cde65d691a194d138623359e35e84b97.png

2a0105f1bab74997973848b505deab9e.png

6fd02cc4afdf4e5fa5e95248dc1906ce.png

bf7696e7b088495b8b18d29dd9be4165.png

4990368a3baa406881d290bfb4f794f6.png

庆祝下吧!这里我们实现了简单的线性回归,并且没有使用任何机器学习库。

完整的代码可以为我们的Github:简单的线性回归代码

英文原文:http://dataaspirant.com/2017/02/15/simple-linear-regression-python-without-any-machine-learning-libraries/

译者:winston英文原文:http://dataaspirant.com/2017/02/15/simple-linear-regression-python-without-any-machine-learning-libraries/

译者:winston

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值