数据科学- 斜率和截距
斜率和截距
现在我们将解释如何找到函数的斜率和截距:
f(x) = 2x + 80
下图指向斜率 - 表示直线的陡峭程度,截距 - 当 x = 0(对角线与垂直轴相交的点)时 y 的值。 红线是上一页蓝线的延续。
寻找斜率
斜率定义为如果平均脉搏增加 1,卡路里消耗增加了多少。 它告诉我们对角线有多"陡峭"。
我们可以利用图中两点的比例差来求斜率。
- 如果平均脉搏为 80,则卡路里消耗为 240
- 如果平均脉搏为 90,则卡路里消耗为 260
我们看到,如果平均脉搏增加 10,卡路里消耗增加 20。
Slope = 20/10 = 2
斜率为 2。
数学上,斜率定义为:
Slope = f(x2) - f(x1) / x2-x1
f(x2) = Calorie_Burnage 的第二次观察 = 260
f(x1) = Calorie_Burnage 的第一次观察 = 240
x2 = 第二次观察 Average_Pulse = 90
x1 = 第一次观察 Average_Pulse = 80
Slope = (260-240) / (90 - 80) = 2
始终以正确的顺序定义观察结果! 否则,预测将不正确!
使用 Python 寻找斜率
使用以下代码计算斜率:
寻找截距
截距用于微调预测 Calorie_Burnage 的功能。
截距是对角线与 y 轴相交的位置(如果完全绘制)。
截距是 y 的值,当 x = 0 时。
在这里,我们看到如果平均脉搏 (x) 为零,则卡路里消耗量 (y) 为 80。
所以,截距是 80。
有时,截距具有实际意义。 有时不会。
平均脉搏为零有意义吗?
不,你会死,你当然不会燃烧任何卡路里。
但是,我们需要包含截距,以完成数学函数正确预测 Calorie_Burnage 的能力。
数学函数的截距具有实际意义的其他示例:
- 使用营销支出预测明年的收入(如果营销支出为零,我们明年会有多少收入?)。 很可能会假设一家公司即使不花钱进行营销,也会有一些收入。
- 燃油使用量与速度(如果速度等于 0 mph,我们使用多少燃油?)。 使用汽油的汽车在怠速时仍会使用燃料。
使用 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)
示例说明:
- 将变量 Average_Pulse (x) 和 Calorie_Burnage (y) 从 health_data 中分离出来。
- 调用 np.polyfit() 函数。
- 函数的最后一个参数指定函数的度数,在本例中为 "1"。
提示: 线性函数 = 1.degree 函数。 在我们的示例中,函数是线性的,在 1.degree 中。 这意味着所有系数(数字)都是 1 的幂。
我们现在已经计算了斜率 (2) 和截距 (80)。 我们可以将数学函数写成如下:
使用数学表达式预测卡路里燃烧:
f(x) = 2x + 80
任务:
现在,如果平均脉搏为 135,我们想要预测卡路里消耗。
记住截距是一个常数。 常数是不变的数字。
我们现在可以将输入 x 替换为 135:
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() 显示输出