วิทยาศาสตร์ข้อมูล- ความชันและการสกัดกั้น


ความชันและการสกัดกั้น

ตอนนี้เราจะอธิบายว่าเราพบความชันและการสกัดกั้นของฟังก์ชันของเราได้อย่างไร:

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() แสดงผลลัพธ์ให้เราเห็น