用python进行线性回归

187 阅读7分钟

机器学习

我们将根据学生在考试中对问题的正确答案来预测他/她的态度值。

线性回归

在学习新东西之前,我们需要问一个问题。而这个问题就是"我们为什么要使用它?”.

当我们想根据另一个变量的值来预测一个变量的值时,就会用到线性回归。我们要预测的变量被称为因变量(或有时称为结果变量)。

我们知道,计算机是哑巴机器,除非我们不给或不提供指令,否则它不能通过它的启动来执行任何行动。在机器学习中,我们经历了线性回归的概念,因为这是一种通过一些公式来预测一些数值的技术。

所以,让我们直接跳入其中,进行一些预测。

线性回归公式。

图:1(线性回归公式

在第二段中。我提到了因变量这一术语。这里Y 是因变量,我们将预测它的值。

如果你想知道为什么是因变量,那么它的答案是非常明显的。Y 取决于_Y的截距_值,即α ,斜率值,即β ,以及x的值,即这里的自变量。因此,如果任何数值发生变化。Y的值也会改变。

我们使用的公式

我们可以很直观地实现它,因为我们有公式。但现在我们还没有α、βx的值**。**

β(斜率公式)。

让我们先从β 开始,β 是这里的斜率。斜率的公式如下。

图2 (斜率回归公式)

我们不会深入研究所有的斜率概念。但简而言之,r 是相关系数。SyY值的标准差,SxX 值的标准差。

相关系数(r)公式。

图:3(相关系数

符号Σ**(sigma**)一般用来表示多个项的总和。 是x的平均值, 是y的平均值。

"标准偏差(Sy或Sx)"公式:

图4 ( 标准偏差公式)

这是标准偏差的公式,其数值将根据截距的不同而变化。如果是Sx,则使用给定的公式,如果是Sy,则用y代替x。

y-截距(α)公式。

图5_(Y-截距(α)公式_

Y的平均值也称为Y的平均值,X的平均值也称为X的平均值。

一系列的步骤

到目前为止,我们已经讨论了所有的公式,我们将使用这些公式来寻找线性回归。

让我们通过创建地图来明确我们的路径。

第一步:

我们将找到所有可能的平均值,我们需要在公式中使用这些值。

第二步。

我们将找到**相关系数(r)**的值。

第三步。

我们将找到标准偏差的值**(Sy和Sx)。**

第四步。

我们将把第三步和第四步的数值放在**斜率(β)**公式中。

第五步。

我们将找到y的截距值,即α

第六步。

我们将把步骤四和步骤五的值放入线性回归公式中。

实施

首先,以任何名字创建Python文件。在我的例子中,我把它的名字定为"ManualURL.py

我们需要在我们的计算机或虚拟环境中安装**numpy,sklearn,**我们可以通过以下命令简单地安装。

pip install numpy

然后我们需要在文件的顶部导入它们。

import numpy as np

然后创建两个数组。我们将根据学生对问题的正确答案来预测他/她的态度。最后,我们将与我们从sklearn导入的LinearRegressionapi比较我们的输出。

x = correct_questions_answers = [17,13,12,15,16,14,16,16,18,19]
print("Hello! I'll predict how much happy you're on the behalf of your correct answers")

我已经用xy创建了两个数组,为了让你更清楚地了解,我给每个数组起了两个名字,并在最后添加了一些打印语句,以便在用户运行程序时干扰用户,这样用户就可以理解该怎么做了。

实施步骤一。

# Finding mean of x.
# Finding mean of y.

我们正在寻找x和y的平均值或x和y的平均值。我们使用float数据类型,因为数据可以是十进制的。Sum()len() 是python内置的函数,sum()将数组的所有条目相加,len() 计算数组中的条目数。

# Finding (x — mean_of_X)
x_Minus_mean_of_X = []

这里我设置了一个名为x_Minus_mean_of_X的数组,它存储了(x - mean_of_X)的结果。简单地说,我从x(correct_questions_answers) 的值中减去x 的平均值 _。_我使用for循环,让数组中的所有值减去x的平均值,然后将结果暂时存储在append_value 变量中。然后.append在数组中加入这个结果的值,名字为x_Minus_mean_of_X。

# Finding (y — mean_of_Y)

这与y数组的步骤完全相同,y数组是态度数组。

# Finding (x — mean_of_X) * (y — mean_of_Y)
product_of_xy_from_their_mean = np.multiply(x_Minus_mean_of_X, y_Minus_mean_of_Y)

我声明了相当长的变量只是为了让你知道什么是什么。还加上了注释。正如你所看到的,我在这个文件的最上面导入了numpy作为np。现在使用**multiply()**函数对数组进行相乘。

# Finding sqaure of (x — mean_of_X)

现在找到每个值的数组x_Minus_mean_of_X的平方。这就是为什么我们在这里使用for循环,并将结果附加到另一个新声明的数组中,名称为 Sqaure_of__x__mean_of_X。

# Finding sqaure of (x — mean_of_X)
Sqaure_of__y__mean_of_Y = []

对于y数组也是同样的步骤,它是y_Minus_mean_of_Y 数组。

执行第二步:

找到相关系数(r)的值。首先,我们分别找到提名者和分母。然后我们将找到相关系数(r)本身。

#Finding numirator of correcation coefficient (r)

我正在将这些值加入product_of_xy_from_their_mean数组。我建议你也看一下这个公式,以便更好地理解。

#Finding denominator of correcation coefficient (r)

我正在将Sqaure_of__x__mean_of_X数组和Sqaure_of__y__mean_of_Y数组的值相加,然后用*运算符将它们相乘。

r = numirator/math.sqrt(denominator)

在分母中我使用了math.sqrt()。**.sqrt()**是数学库中的平方根方法。我正在用它来寻找分母的平方根。

实施第三步:

为了找到斜率的值,我们需要找到标准差 的值**(Sy和Sx)。** 让我们来找找看。

#Finding Sy
Sy_numirator = sum(Sqaure_of__y__mean_of_Y)
Sy = math.sqrt(Sy_numirator/Sy_denomirator)

首先,我们找到Sy的分母,并将其储存在Sy_numirator变量中,分母也是如此。

#finding Sx
Sx = math.sqrt(Sx_numirator/Sx_denomirator)

首先,我们找到Sx的分母,并将其储存在Sx_numirator变量中,在分母的情况下也是如此。

实施第四步:

现在我们可以找到斜率的值。我们已经找到了相关系数(r)第二步 中找到了标准差(Sy/Sx)第三步.

# Finding Sy/Sx

我们简单地将**(Sy/Sx)** 的值存储在 __S__ 单变量中,然后与相关系数(r) 相乘,将该值存储在斜率变量中。

执行第五步 :

#Finding y intercept
_a = mean_of_Y — slope*mean_of_X

现在,我们可以通过把目前得到的值放在一起,找到y截距。

实施第六步。

现在我们可以找到线性回归,因为我们现在已经有了所有的东西。但首先需要询问学生他给出了多少正确答案。我们可以通过添加输入字段简单地做到这一点。

question_input = float(input())

在这之后,你可以使用线性回归公式。

_y = _a + slope*question_input

_y是因变量,并得到这个的预测值。

与线性回归API比较

你可以简单地把下面的代码放在你的文件底部来比较你的预测值。

print(“We predict that you’ll be happy”,_y,”this much !”)
s = np.array([17,13,12,15,16,14,16,16,18,19]).reshape((-1,1))
print(“”)
print(“Chick X to resure the prediction or quite by pressing any other key”)
value = None
model = LinearRegression().fit(s,t)

谢谢你!


Linear Regression with python最初发表于Dev Geniuson Medium,人们在这里通过强调和回应这个故事来继续对话。