วิทยาศาสตร์ข้อมูล- ความชันและการสกัดกั้น
ความชันและการสกัดกั้น
ตอนนี้เราจะอธิบายว่าเราพบความชันและการสกัดกั้นของฟังก์ชันของเราได้อย่างไร:
f(x) = 2x + 80
ภาพด้านล่างชี้ไปที่ความชัน - ซึ่งระบุว่าเส้นนั้นชันแค่ไหน และจุดตัด - ซึ่งเป็นค่าของ y เมื่อ x = 0 (จุดที่เส้นทแยงมุมตัดกับแกนตั้ง) เส้นสีแดงคือความต่อเนื่องของเส้นสีน้ำเงินจากหน้าที่แล้ว
หาทางลาด
ความชันถูกกำหนดให้เป็นปริมาณการเผาผลาญแคลอรี่ที่เพิ่มขึ้น หากชีพจรเฉลี่ยเพิ่มขึ้นหนึ่งค่า มันบอกเราว่าเส้นทแยงมุม "ชัน" แค่ไหน
เราสามารถหาความชันได้โดยใช้ผลต่างตามสัดส่วนของจุดสองจุดจากกราฟ
- หากชีพจรเฉลี่ย 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 เพื่อค้นหาความชัน
คำนวณความชันด้วยรหัสต่อไปนี้:
ตัวอย่าง
def slope(x1, y1, x2, y2):
s = (y2-y1)/(x2-x1)
return s
print (slope(80,240,90,260))
หาทางสกัดกั้น
การสกัดกั้นใช้เพื่อปรับแต่งความสามารถของฟังก์ชันในการทำนาย Calorie_Burnage
จุดตัดคือจุดที่เส้นทแยงมุมตัดกับแกน y หากลากจนสุด
ค่าสกัดกั้นคือค่าของ y เมื่อ x = 0
ในที่นี้ เราจะเห็นว่าหากชีพจรเฉลี่ย (x) เป็นศูนย์ การเผาผลาญแคลอรี่ (y) จะเท่ากับ 80
ดังนั้น อินเตอร์เซปต์คือ 80
บางครั้งการสกัดกั้นมีความหมายในทางปฏิบัติ บางครั้งก็ไม่ได้
มันสมเหตุสมผลหรือไม่ที่ชีพจรเฉลี่ยเป็นศูนย์?
ไม่ คุณจะตายและคุณจะไม่เผาผลาญแคลอรีใดๆ อย่างแน่นอน
อย่างไรก็ตาม เราจำเป็นต้องรวมการสกัดกั้นเพื่อให้ฟังก์ชันทางคณิตศาสตร์สามารถทำนาย Calorie_Burnage ได้อย่างถูกต้อง
ตัวอย่างอื่นๆ ที่การสกัดกั้นของฟังก์ชันทางคณิตศาสตร์สามารถมีความหมายเชิงปฏิบัติได้:
- การคาดคะเนรายได้ปีหน้าโดยใช้รายจ่ายทางการตลาด (ปีหน้าเราจะมีรายได้เท่าไร ถ้ารายจ่ายทางการตลาดเป็นศูนย์) มีแนวโน้มว่าบริษัทจะยังคงมีรายได้อยู่บ้างแม้ว่าจะไม่ได้จ่ายเงินเพื่อทำการตลาดก็ตาม
- การใช้เชื้อเพลิงด้วยความเร็ว (เราใช้เชื้อเพลิงเท่าไหร่ถ้าความเร็วเท่ากับ 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)
ตัวอย่างที่อธิบาย:
- แยกตัวแปร Average_Pulse (x) และ Calorie_Burnage (y) ออกจาก health_data
- เรียกใช้ฟังก์ชัน np.polyfit()
- พารามิเตอร์สุดท้ายของฟังก์ชันระบุระดับของฟังก์ชัน ซึ่งในกรณีนี้คือ "1"
เคล็ดลับ:ฟังก์ชันเชิงเส้น = ฟังก์ชัน 1.degree ในตัวอย่างของเรา ฟังก์ชันเป็นเชิงเส้น ซึ่งอยู่ใน 1.ดีกรี นั่นหมายความว่าสัมประสิทธิ์ทั้งหมด (ตัวเลข) อยู่ในกำลังของหนึ่ง
ตอนนี้เราได้คำนวณความชัน (2) และจุดตัด (80) แล้ว เราสามารถเขียนฟังก์ชันทางคณิตศาสตร์ได้ดังนี้
ทำนาย Calorie_Burnage โดยใช้นิพจน์ทางคณิตศาสตร์:
f(x) = 2x + 80
งาน:
ตอนนี้ เราต้องการคาดการณ์การเผาผลาญแคลอรี่หากชีพจรเฉลี่ยอยู่ที่ 135
โปรดจำไว้ว่าการสกัดกั้นเป็นค่าคงที่ ค่าคงที่คือตัวเลขที่ไม่เปลี่ยนแปลง
ตอนนี้เราสามารถแทนที่อินพุต x ด้วย 135:
f(135) = 2 * 135 + 80 = 350
หากชีพจรเฉลี่ยอยู่ที่ 135 การเผาผลาญแคลอรีจะเท่ากับ 350
กำหนดฟังก์ชันทางคณิตศาสตร์ใน Python
นี่คือฟังก์ชันทางคณิตศาสตร์ที่เหมือนกันทุกประการ แต่ใน Python ฟังก์ชันส่งคืน 2*x + 80 โดยมี x เป็นอินพุต:
ตัวอย่าง
def my_function(x):
return 2*x + 80
print (my_function(135))
ลองแทนที่ 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()
ตัวอย่างที่อธิบาย
- นำเข้าโมดูล pyplot ของไลบรารี matplotlib
- พล็อตข้อมูลจาก Average_Pulse เทียบกับ Calorie_Burnage
kind='line'
บอกเราว่าเราต้องการพล็อตประเภทใด ตรงนี้เราต้องการเส้นตรง- plt.ylim() และ plt.xlim() บอกเราว่าเราต้องการให้แกนเริ่มต้นและหยุดที่ค่าใด
- plt.show() แสดงผลลัพธ์ให้เราเห็น