机器学习
我们将根据学生在考试中对问题的正确答案来预测他/她的态度值。
线性回归
在学习新东西之前,我们需要问一个问题。而这个问题就是"我们为什么要使用它?”.
当我们想根据另一个变量的值来预测一个变量的值时,就会用到线性回归。我们要预测的变量被称为因变量(或有时称为结果变量)。
我们知道,计算机是哑巴机器,除非我们不给或不提供指令,否则它不能通过它的启动来执行任何行动。在机器学习中,我们经历了线性回归的概念,因为这是一种通过一些公式来预测一些数值的技术。
所以,让我们直接跳入其中,进行一些预测。
线性回归公式。
图:1(线性回归公式
在第二段中。我提到了因变量这一术语。这里Y 是因变量,我们将预测它的值。
如果你想知道为什么是因变量,那么它的答案是非常明显的。Y 取决于_Y的截距_值,即α ,斜率值,即β ,以及x的值,即这里的自变量。因此,如果任何数值发生变化。Y的值也会改变。
我们使用的公式
我们可以很直观地实现它,因为我们有公式。但现在我们还没有α、β 和x的值**。**
β(斜率公式)。
让我们先从β 开始,β 是这里的斜率。斜率的公式如下。
图2 (斜率回归公式)
我们不会深入研究所有的斜率概念。但简而言之,r 是相关系数。Sy是Y值的标准差,Sx是 X 值的标准差。
相关系数(r)公式。
图:3(相关系数
符号Σ**(sigma**)一般用来表示多个项的总和。x̅ 是x的平均值, y̅ 是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")
我已经用x和y创建了两个数组,为了让你更清楚地了解,我给每个数组起了两个名字,并在最后添加了一些打印语句,以便在用户运行程序时干扰用户,这样用户就可以理解该怎么做了。
实施步骤一。
# 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,人们在这里通过强调和回应这个故事来继续对话。