数据科学 - 斜率和截距
斜率和截距
现在我们将解释如何找到函数的斜率和截距
f(x) = 2x + 80
下图指向斜率 - 它表示直线的陡峭程度,以及截距 - 当 x = 0 时 y 的值(对角线与垂直轴相交的点)。红线是上一页蓝线的延续。
找到斜率
斜率定义为平均脉搏增加 1 时卡路里消耗量增加多少。它告诉我们对角线有多“陡峭”。
我们可以使用图中两点的比例差来找到斜率。
- 如果平均脉搏为 80,卡路里消耗量为 240
- 如果平均脉搏为 90,卡路里消耗量为 260
我们看到,如果平均脉搏增加 10,卡路里消耗量增加 20。
斜率 = 20/10 = 2
斜率为 2。
数学上,斜率定义为
斜率 = f(x2) - f(x1) / x2-x1
f(x2) = 卡路里消耗量的第二次观测 = 260
f(x1) = 卡路里消耗量的第一次观测 = 240
x2 = 平均脉搏的第二次观测 = 90
x1 = 平均脉搏的第一次观测 = 80
斜率 = (260-240) / (90 - 80) = 2
请始终如一地按正确顺序定义观测值!否则,预测将不正确!
使用 Python 查找斜率
使用以下代码计算斜率
找到截距
截距用于微调函数预测卡路里消耗量的能力。
截距是对角线与 y 轴相交的位置,如果它完全绘制出来。
截距是当 x = 0 时 y 的值。
这里,我们看到如果平均脉搏 (x) 为零,那么卡路里消耗量 (y) 为 80。
所以,截距为 80。
有时,截距具有实际意义。有时没有。
平均脉搏为零有意义吗?
不,你会死了,当然不会消耗任何卡路里。
但是,我们需要将截距包括在内,以便完成数学函数正确预测卡路里消耗量的能力。
数学函数的截距可以具有实际意义的其他示例
- 使用营销支出预测明年的收入(如果营销支出为零,明年的收入是多少?)。可以假设,即使公司不花营销费用,它仍然会有一些收入。
- 速度与油耗(如果速度等于 0 英里/小时,我们使用多少油?)。使用汽油的汽车即使在怠速状态下也会使用燃料。
使用 Python 查找斜率和截距
该 np.polyfit()
函数返回斜率和截距。
如果我们继续使用以下代码,我们可以从函数中获得斜率和截距。
示例
import pandas as pd
import numpy as np
health_data = pd.read_csv("data.csv", header=0, sep=",")
x = health_data["Average_Pulse"]
y = health_data["Calorie_Burnage"]
slope_intercept = np.polyfit(x,y,1)
print(slope_intercept)
自己尝试 »
示例说明
- 从 health_data 中分离出变量 Average_Pulse (x) 和 Calorie_Burnage (y)。
- 调用 np.polyfit() 函数。
- 函数的最后一个参数指定函数的度数,在本例中为“1”。
提示:线性函数 = 1 度函数。在我们的示例中,函数是线性的,即 1 度。这意味着所有系数(数字)都处于 1 的幂。
我们现在已经计算了斜率 (2) 和截距 (80)。我们可以将数学函数写成如下
使用数学表达式预测卡路里消耗量
f(x) = 2x + 80
任务
现在,我们想预测如果平均脉搏为 135 的卡路里消耗量。
请记住,截距是一个常数。常数是一个不会改变的数字。
我们现在可以用 135 代替输入 x
f(135) = 2 * 135 + 80 = 350
如果平均脉搏为 135,卡路里消耗量为 350。
在 Python 中定义数学函数
这是完全相同的数学函数,但在 Python 中。该函数返回 2*x + 80,其中 x 是输入
尝试将 x 替换为 140 和 150。
在 Python 中绘制新图形
这里,我们绘制与之前相同的图形,但对轴进行了格式化。
y 轴的最大值为 400,x 轴的最大值为 150
示例
import matplotlib.pyplot as plt
health_data.plot(x ='Average_Pulse', y='Calorie_Burnage', kind='line'),
plt.ylim(ymin=0, ymax=400)
plt.xlim(xmin=0, xmax=150)
plt.show()
自己尝试 »
示例说明
- 导入 matplotlib 库的 pyplot 模块
- 绘制从 Average_Pulse 到 Calorie_Burnage 的数据
kind='line'
告诉我们我们想要哪种类型的图。这里,我们想要一条直线- plt.ylim() 和 plt.xlim() 告诉我们我们希望轴从什么值开始和结束。
- plt.show() 显示了输出