คู่มือการถดถอยเชิงเส้นโดยใช้ Scikit [พร้อมตัวอย่าง]

เผยแพร่แล้ว: 2021-06-18

โดยทั่วไปแล้วอัลกอริธึมการเรียนรู้ภายใต้การดูแลจะแบ่งออกเป็นสองประเภท: การถดถอยและการจำแนกประเภทด้วยการทำนายผลลัพธ์แบบต่อเนื่องและแบบไม่ต่อเนื่อง

บทความต่อไปนี้จะกล่าวถึงการถดถอยเชิงเส้นและการนำไปใช้โดยใช้หนึ่งในไลบรารีการเรียนรู้แมชชีนเลิร์นนิงยอดนิยมของ python นั่นคือไลบรารี Scikit-learn เครื่องมือสำหรับแมชชีนเลิร์นนิงและแบบจำลองทางสถิติมีอยู่ในไลบรารี python สำหรับการจำแนกประเภท การถดถอย การจัดกลุ่ม และการลดขนาด เขียนด้วยภาษาโปรแกรม python ไลบรารีนี้สร้างขึ้นจากไลบรารี python NumPy, SciPy และ Matplotlib

สารบัญ

การถดถอยเชิงเส้น

การถดถอยเชิงเส้นทำหน้าที่ถดถอยภายใต้วิธีการเรียนรู้แบบมีผู้ดูแล ตามตัวแปรอิสระ ค่าเป้าหมายจะถูกคาดการณ์ วิธีการนี้ส่วนใหญ่จะใช้สำหรับการคาดการณ์และระบุความสัมพันธ์ระหว่างตัวแปร

ในพีชคณิต คำว่าลิเนียริตี้หมายถึงความสัมพันธ์เชิงเส้นระหว่างตัวแปร เส้นตรงจะถูกอนุมานระหว่างตัวแปรในพื้นที่สองมิติ

หากเส้นคือการพล็อตระหว่างตัวแปรอิสระบนแกน X และตัวแปรตามบนแกน Y เส้นตรงจะเกิดขึ้นจากการถดถอยเชิงเส้นที่เหมาะสมกับจุดข้อมูลมากที่สุด

สมการของเส้นตรงอยู่ในรูปของ

Y = mx + b

โดยที่ b= สกัดกั้น

m= ความชันของเส้นตรง

ดังนั้นจากการถดถอยเชิงเส้น

  • ค่าที่เหมาะสมที่สุดสำหรับการสกัดกั้นและความชันถูกกำหนดในสองมิติ
  • ไม่มีการเปลี่ยนแปลงในตัวแปร x และ y เนื่องจากเป็นคุณลักษณะของข้อมูลและยังคงเหมือนเดิม
  • เฉพาะค่าสกัดกั้นและความชันเท่านั้นที่สามารถควบคุมได้
  • เส้นตรงหลายเส้นขึ้นอยู่กับค่าของความชันและการสกัดกั้น อาจมีเส้นตรงหลายเส้นโดยอาศัยอัลกอริธึมของการถดถอยเชิงเส้น หลายเส้นจะพอดีกับจุดข้อมูลและเส้นที่มีข้อผิดพลาดน้อยที่สุดจะถูกส่งกลับ

การถดถอยเชิงเส้นด้วย Python

สำหรับการนำการถดถอยเชิงเส้นไปใช้ใน python ให้ใช้แพ็คเกจที่เหมาะสมพร้อมกับฟังก์ชันและคลาสของมัน แพ็คเกจ NumPy ใน Python เป็นโอเพ่นซอร์สและอนุญาตให้ดำเนินการหลายอย่างผ่านอาร์เรย์ ทั้งอาร์เรย์เดี่ยวและหลายมิติ

ไลบรารี่อื่นที่ใช้กันอย่างแพร่หลายใน python คือ Scikit-learn ซึ่งใช้สำหรับปัญหาการเรียนรู้ของเครื่อง

Scikit-learN

ห้องสมุด Scikit-learn มีอัลกอริธึมสำหรับนักพัฒนาโดยอิงจากการเรียนรู้ทั้งแบบมีผู้สอนและแบบไม่มีผู้ดูแล ไลบรารีโอเพนซอร์สของ python ได้รับการออกแบบมาสำหรับงานการเรียนรู้ของเครื่อง

นักวิทยาศาสตร์ข้อมูลสามารถนำเข้าข้อมูล ประมวลผลล่วงหน้า วางแผน และทำนายข้อมูลผ่านการใช้ scikit-learn

David Cournapeau พัฒนา scikit-learn เป็นครั้งแรกในปี 2550 และห้องสมุดมีการเติบโตตั้งแต่หลายทศวรรษ

เครื่องมือที่จัดทำโดย scikit-learn คือ:

  • การถดถอย: รวมการถดถอยโลจิสติกและการถดถอยเชิงเส้น
  • การจัดประเภท: รวมวิธีการ K-Nearest Neighbors
  • การเลือกรุ่น
  • การจัดกลุ่ม: รวมทั้ง K-Means++ และ K-Means
  • การประมวลผลล่วงหน้า

ข้อดีของห้องสมุดคือ:

  • การเรียนรู้และการใช้งานห้องสมุดเป็นเรื่องง่าย
  • เป็นห้องสมุดโอเพ่นซอร์สและฟรี
  • ด้านการเรียนรู้ของเครื่องสามารถครอบคลุมได้รวมถึงการเรียนรู้เชิงลึก
  • เป็นแพ็คเกจที่ทรงพลังและหลากหลาย
  • ห้องสมุดมีเอกสารรายละเอียด
  • หนึ่งในชุดเครื่องมือที่ใช้มากที่สุดสำหรับการเรียนรู้ของเครื่อง

นำเข้า scikit-learn

ต้องติดตั้ง scikit-learn ก่อนผ่าน pip หรือผ่าน conda

  • ข้อกำหนด: python 3 รุ่น 64 บิตพร้อมไลบรารี NumPy และ Scipy ที่ติดตั้งไว้ นอกจากนี้ สำหรับการแสดงแผนภาพข้อมูล จำเป็นต้องใช้ matplotlib

คำสั่งการติดตั้ง: pip install -U scikit-learn

จากนั้นตรวจสอบว่าการติดตั้งเสร็จสมบูรณ์หรือไม่

การติดตั้ง Numpy, Scipy และ matplotlib

สามารถยืนยันการติดตั้งได้ทาง:

แหล่งที่มา

การถดถอยเชิงเส้นผ่าน Scikit-learn

การใช้การถดถอยเชิงเส้นผ่านแพ็คเกจ scikit-learn มีขั้นตอนดังต่อไปนี้

  • ต้องนำเข้าแพ็คเกจและคลาสที่จำเป็น
  • ข้อมูลจำเป็นสำหรับการทำงานและดำเนินการเปลี่ยนแปลงตามความเหมาะสม
  • จะต้องสร้างแบบจำลองการถดถอยและติดตั้งข้อมูลที่มีอยู่
  • ข้อมูลการปรับรุ่นจะต้องได้รับการตรวจสอบเพื่อวิเคราะห์ว่าแบบจำลองที่สร้างขึ้นนั้นน่าพอใจหรือไม่
  • การคาดการณ์จะต้องทำผ่านแอปพลิเคชันของแบบจำลอง

แพ็กเกจ NumPy และคลาส LinearRegression จะถูกนำเข้าจาก sklearn.linear_model

แหล่งที่มา

ฟังก์ชันที่จำเป็นสำหรับ การถดถอยเชิงเส้นของ sklearn มีอยู่ทั้งหมดเพื่อนำการถดถอยเชิงเส้นไปใช้ในที่สุด คลาส sklearn.linear_model.LinearRegression ใช้สำหรับดำเนินการวิเคราะห์การถดถอย (ทั้งเชิงเส้นและพหุนาม) และดำเนินการคาดการณ์

สำหรับอัลกอริธึมการเรียนรู้ของเครื่องและ scikit เรียนรู้การถดถอยเชิงเส้น ต้องนำเข้าชุดข้อมูลก่อน สามตัวเลือกที่มีอยู่ใน Scikit-learn เพื่อรับข้อมูล:

  • ชุดข้อมูล เช่น การจำแนกม่านตาหรือชุดการถดถอยราคาบ้านของบอสตัน
  • สามารถดาวน์โหลดชุดข้อมูลของโลกแห่งความจริงจากอินเทอร์เน็ตได้โดยตรงผ่านฟังก์ชันที่กำหนดไว้ล่วงหน้าของ Scikit-learn
  • สามารถสร้างชุดข้อมูลแบบสุ่มเพื่อจับคู่กับรูปแบบเฉพาะผ่านตัวสร้างข้อมูล Scikit-learn

ไม่ว่าจะเลือกตัวเลือกใด ชุดข้อมูลของโมดูลจะต้องถูกนำเข้า

นำเข้า sklearn.datasets เป็น datasets

1. ชุดการจำแนกไอริส

ไอริส = datasets.load_iris()

ม่านตาชุดข้อมูลถูกจัดเก็บเป็นฟิลด์ข้อมูลอาร์เรย์ 2 มิติ ของ n_samples * n_features การนำเข้าจะดำเนินการเป็นวัตถุของพจนานุกรม ประกอบด้วยข้อมูลที่จำเป็นทั้งหมดพร้อมกับข้อมูลเมตา

สามารถใช้ฟังก์ชัน DESCR รูปร่าง และ _names เพื่อรับคำอธิบายและการจัดรูปแบบของข้อมูล การพิมพ์ผลลัพธ์ของฟังก์ชันจะแสดงข้อมูลของชุดข้อมูลที่อาจจำเป็นขณะทำงานกับชุดข้อมูลไอริส

รหัสต่อไปนี้จะโหลดข้อมูลของชุดข้อมูลม่านตา

แหล่งที่มา

2. การสร้างข้อมูลการถดถอย

หากไม่มีข้อกำหนดสำหรับข้อมูลในตัว ก็สามารถสร้างข้อมูลผ่านการแจกจ่ายที่สามารถเลือกได้

การสร้างข้อมูลการถดถอยด้วยชุดคุณสมบัติข้อมูล 1 รายการและคุณสมบัติ 1 รายการ

X , Y = datasets.make_regression(n_features=1, n_informative=1)

ข้อมูลที่สร้างขึ้นจะถูกบันทึกในชุดข้อมูล 2 มิติที่มีอ็อบเจ็กต์ x และ y คุณสมบัติของข้อมูลที่สร้างขึ้นสามารถเปลี่ยนแปลงได้โดยการเปลี่ยนพารามิเตอร์ของฟังก์ชัน make_regression

ในตัวอย่างนี้ พารามิเตอร์ของ คุณลักษณะข้อมูล และ คุณลักษณะ จะเปลี่ยนจากค่าเริ่มต้น 10 เป็น 1

พารามิเตอร์อื่นๆ ที่พิจารณาคือ กลุ่มตัวอย่าง และ เป้าหมาย ที่มีการควบคุมจำนวนตัวแปรเป้าหมายและตัวแปรตัวอย่าง

  • คุณลักษณะที่ให้ข้อมูลที่เป็นประโยชน์แก่อัลกอริธึมของ ML จะเรียกว่าคุณลักษณะที่ให้ข้อมูล ในขณะที่คุณลักษณะที่ไม่เป็นประโยชน์จะเรียกว่าคุณลักษณะที่ให้ข้อมูล

3. พล็อตข้อมูล

ข้อมูลถูกพล็อตโดยใช้ไลบรารี matplotlib ก่อนอื่น ต้องนำเข้า matplotlib

นำเข้า matplotlib.pyplot เป็น plt

กราฟด้านบนถูกพล็อตผ่าน matplotlib ผ่านโค้ด

แหล่งที่มา

ในรหัสด้านบน:

  • ตัวแปรทูเพิลถูกคลายแพ็กและบันทึกเป็นตัวแปรแยกกันในบรรทัดที่ 1 ของโค้ด ดังนั้น แอตทริบิวต์ที่แยกจากกันสามารถจัดการและบันทึกได้
  • ชุดข้อมูล x, y ใช้เพื่อสร้างพล็อตแบบกระจายผ่านบรรทัดที่ 2 ด้วยความพร้อมใช้งานของพารามิเตอร์ตัวทำเครื่องหมายใน matplotlib ภาพจะได้รับการปรับปรุงโดยการทำเครื่องหมายจุดข้อมูลด้วยจุด (o)
  • ชื่อเรื่องของพล็อตที่สร้างขึ้นถูกกำหนดผ่านบรรทัดที่ 3
  • สามารถบันทึกรูปภาพเป็นไฟล์รูปภาพ .png จากนั้นรูปปัจจุบันจะปิดลง

พล็อตการถดถอยที่สร้างผ่านโค้ดด้านบนคือ

รูปที่ 1: พล็อตการถดถอยที่สร้างจากโค้ดด้านบน

4. การใช้อัลกอริทึมของการถดถอยเชิงเส้น

โดยใช้ข้อมูลตัวอย่างราคาบ้านในบอสตัน อัลกอริธึม ของ การถดถอยเชิงเส้น Scikit-learn ถูกนำมาใช้ในตัวอย่างต่อไปนี้ เช่นเดียวกับอัลกอริทึม ML อื่นๆ ชุดข้อมูลจะถูกนำเข้าและฝึกฝนโดยใช้ข้อมูลก่อนหน้า

ธุรกิจใช้วิธีถดถอยเชิงเส้น เนื่องจากเป็นรูปแบบการทำนายที่ทำนายความสัมพันธ์ระหว่างปริมาณตัวเลขและตัวแปรกับค่าเอาต์พุตโดยมีความหมายว่ามีค่าในความเป็นจริง

เมื่อมีบันทึกของข้อมูลก่อนหน้านี้ โมเดลนี้สามารถนำมาใช้ได้ดีที่สุด เนื่องจากสามารถคาดการณ์ผลลัพธ์ในอนาคตของสิ่งที่จะเกิดขึ้นในอนาคตได้หากมีรูปแบบที่ต่อเนื่องกัน

ในทางคณิตศาสตร์ ข้อมูลสามารถติดตั้งเพื่อลดผลรวมของสิ่งตกค้างทั้งหมดที่มีอยู่ระหว่างจุดข้อมูลและค่าที่คาดการณ์ไว้

ตัวอย่างต่อไปนี้แสดงการนำการ ถดถอยเชิงเส้นของ sklearn ไปใช้

แหล่งที่มา

รหัสถูกอธิบายเป็น:

  • บรรทัดที่ 6 โหลดชุดข้อมูลที่เรียกว่า load_boston
  • ชุดข้อมูลแบ่งออกเป็นบรรทัดที่ 12 กล่าวคือ ชุดการฝึกที่มีข้อมูล 80% และชุดการทดสอบที่มีข้อมูล 20%
  • การสร้างแบบจำลองการถดถอยเชิงเส้นที่บรรทัดที่ 23 แล้วฝึกที่
  • ประสิทธิภาพของแบบจำลองได้รับการประเมินที่ผ้าลินิน 29 ผ่านการเรียก mean_squared_error

ล็อต การถดถอยเชิงเส้นของ sklearn แสดงไว้ด้านล่าง:

แบบจำลองการถดถอยเชิงเส้นของข้อมูลตัวอย่างราคาบ้านบอสตัน

แหล่งที่มา

ในรูปด้านบน เส้นสีแดงแสดงแบบจำลองเชิงเส้นที่ได้รับการแก้ไขแล้วสำหรับข้อมูลตัวอย่างราคาบ้านในบอสตัน จุดสีน้ำเงินแสดงถึงข้อมูลเดิม และระยะห่างระหว่างเส้นสีแดงกับจุดสีน้ำเงินแสดงถึงผลรวมของส่วนที่เหลือ เป้าหมายของ แบบจำลอง การถดถอยเชิงเส้นแบบ scikit คือการลดผลรวมของเศษเหลือ

บทสรุป

บทความนี้กล่าวถึงการถดถอยเชิงเส้นและการนำไปใช้โดยใช้แพ็คเกจหลามโอเพ่นซอร์สที่เรียกว่า scikit-learn ถึงตอนนี้ คุณสามารถเข้าใจแนวคิดเกี่ยวกับวิธีการใช้การถดถอยเชิงเส้นผ่านแพ็คเกจนี้ การเรียนรู้วิธีใช้ห้องสมุดเพื่อการวิเคราะห์ข้อมูลของคุณเป็นเรื่องที่คุ้มค่า

หากคุณมีความสนใจในการสำรวจหัวข้อเพิ่มเติม เช่น การใช้แพ็คเกจหลามในการเรียนรู้ของเครื่องและปัญหาที่เกี่ยวข้องกับ AI คุณสามารถตรวจสอบหลักสูตร วิทยาศาสตรมหาบัณฑิตสาขาการเรียนรู้ของเครื่องและ AI ที่นำเสนอโดย upGrad หลักสูตรนี้มุ่งเป้าไปที่มืออาชีพระดับเริ่มต้นที่มีอายุระหว่าง 21 ถึง 45 ปี โดยมีเป้าหมายเพื่อฝึกอบรมนักเรียนในการเรียนรู้ของเครื่องผ่านการฝึกอบรมออนไลน์มากกว่า 650 ชั่วโมง กรณีศึกษามากกว่า 25 กรณี และการมอบหมายงาน ได้รับการรับรองจาก LJMU หลักสูตรนี้ให้คำแนะนำที่สมบูรณ์แบบและความช่วยเหลือในการจัดหางาน หากคุณมีคำถามหรือข้อสงสัย ฝากข้อความไว้ เรายินดีที่จะติดต่อคุณ

เป็นผู้นำการปฏิวัติเทคโนโลยีที่ขับเคลื่อนด้วย AI

โปรแกรม PG สำหรับผู้บริหารในการเรียนรู้ของเครื่องและปัญญาประดิษฐ์
ลงทะเบียนเลย