วิทยาศาสตร์ข้อมูล- การถดถอยเชิงเส้น
เราขาดตัวแปรสำคัญตัวหนึ่งที่ส่งผลต่อ Calorie_Burnage ซึ่งก็คือ Duration ของเซสชันการฝึก
ระยะเวลาที่ใช้ร่วมกับ Average_Pulse จะอธิบาย Calorie_Burnage ได้แม่นยำยิ่งขึ้น
การถดถอยเชิงเส้น
คำว่าการถดถอยจะใช้เมื่อคุณพยายามค้นหาความสัมพันธ์ระหว่างตัวแปร
ในแมชชีนเลิร์นนิงและในการสร้างแบบจำลองทางสถิติ ความสัมพันธ์นั้นถูกใช้เพื่อทำนายผลลัพธ์ของเหตุการณ์
ในโมดูลนี้ เราจะครอบคลุมคำถามต่อไปนี้:
- เราสามารถสรุปได้ว่า Average_Pulse และ Duration เกี่ยวข้องกับ Calorie_Burnage หรือไม่
- เราสามารถใช้ Average_Pulse และ Duration เพื่อทำนาย Calorie_Burnage ได้หรือไม่
วิธีกำลังสองน้อยที่สุด
การถดถอยเชิงเส้นใช้วิธีกำลังสองน้อยที่สุด
แนวคิดคือการลากเส้นผ่านจุดข้อมูลที่วางแผนไว้ทั้งหมด เส้นอยู่ในตำแหน่งที่ลดระยะห่างไปยังจุดข้อมูลทั้งหมด
ระยะทางเรียกว่า "เศษ" หรือ "ข้อผิดพลาด"
เส้นประสีแดงแสดงถึงระยะทางจากจุดข้อมูลไปยังฟังก์ชันทางคณิตศาสตร์ที่วาด
การถดถอยเชิงเส้นโดยใช้ตัวแปรอธิบายหนึ่งตัว
ในตัวอย่างนี้ เราจะพยายามทำนาย Calorie_Burnage ด้วย Average_Pulse โดยใช้การถดถอยเชิงเส้น:
ตัวอย่าง
import pandas as pd
import matplotlib.pyplot as plt
from scipy
import stats
full_health_data = pd.read_csv("data.csv", header=0, sep=",")
x = full_health_data["Average_Pulse"]
y = full_health_data ["Calorie_Burnage"]
slope, intercept, r, p, std_err = stats.linregress(x, y)
def myfunc(x):
return
slope * x + intercept
mymodel = list(map(myfunc, x))
plt.scatter(x, y)
plt.plot(x, slope * x + intercept)
plt.ylim(ymin=0, ymax=2000)
plt.xlim(xmin=0, xmax=200)
plt.xlabel("Average_Pulse")
plt.ylabel ("Calorie_Burnage")
plt.show()
ตัวอย่างที่อธิบาย:
- นำเข้าโมดูลที่คุณต้องการ: Pandas, matplotlib และ Scipy
- แยก Average_Pulse เป็น x แยก Calorie_burnage เป็น y
- รับค่าคีย์ที่สำคัญด้วย: ความชัน, การสกัดกั้น, r, p, std_err = stats.linregress(x, y)
- สร้างฟังก์ชันที่ใช้ค่าความชันและค่าสกัดกั้นเพื่อคืนค่าใหม่ ค่าใหม่นี้แสดงตำแหน่งบนแกน y ค่า x ที่สอดคล้องกันจะถูกวาง
- เรียกใช้แต่ละค่าของอาร์เรย์ x ผ่านฟังก์ชัน ซึ่งจะส่งผลให้อาร์เรย์ใหม่มีค่าใหม่สำหรับแกน y: mymodel = list(map(myfunc, x))
- วาดพล็อตกระจายดั้งเดิม: plt.scatter(x, y)
- ลากเส้นของการถดถอยเชิงเส้น: plt.plot(x, mymodel)
- กำหนดค่าสูงสุดและต่ำสุดของแกน
- ติดป้ายกำกับแกน: "Average_Pulse" และ "Calorie_Burnage"
เอาท์พุท:
คุณคิดว่าเส้นสามารถทำนาย Calorie_Burnage ได้อย่างแม่นยำหรือไม่?
เราจะแสดงให้เห็นว่าตัวแปร Average_Pulse เพียงอย่างเดียวไม่เพียงพอต่อการคาดการณ์ที่แม่นยำของ Calorie_Burnage