数据科学 - 斜率和截距
斜率和截距
现在我们将解释我们如何找到函数的斜率和截距。
f(x) = 2x + 80
下图指向斜率 — 表示线的陡峭程度,以及截距 — 当 x = 0 时 y 的值(对角线与垂直轴相交的点)。红线是上一页蓝色线的延续。

求斜率
斜率定义为平均脉搏增加一时,卡路里消耗量增加多少。它告诉我们对角线有多“陡峭”。
我们可以通过使用图上两点的比例差来求斜率。
- 如果平均脉搏为 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 次函数。在我们的示例中,函数是线性的,它是一次函数。这意味着所有系数(数字)的幂都是一。
我们现在已经计算出了斜率(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() 显示输出。