資料科學 - 斜率和截距
斜率和截距
現在我們將解釋我們如何找到函式的斜率和截距。
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() 顯示輸出。