สารบัญ:
- การทดสอบผลลัพธ์ของสมมติฐานการเรียนรู้ด้วยเครื่องจักรโดยใช้ข้อมูลการฝึกอบรมและการทดสอบที่แตกต่างกัน
- จากขนแกะ ชุดข้อมูลนำเข้า load_digits digits = load_digits () X, y = ตัวเลข ข้อมูลตัวเลข เป้าหมายจาก Sklearn svm นำเข้า SVC จาก sklearn ข้ามไปที่: 1 ลูป, ดีที่สุด 3: 17 9 วินาทีต่อห่วง
วีดีโอ: สอนไพธอน Python 3: การ run โปรแกรมผ่านทาง command line/terminal 2024
คอมพิวเตอร์ส่วนใหญ่เป็น multicore (โปรเซสเซอร์สองตัวขึ้นไปในชุดเดียว) บางรุ่น มี CPU หลายตัว หนึ่งในข้อ จำกัด ที่สำคัญที่สุดของ Python คือใช้ single core ตามค่าดีฟอลต์ (ถูกสร้างขึ้นในช่วงเวลาที่แกนเดี่ยวเป็นบรรทัดฐาน)
โครงการวิทยาศาสตร์ข้อมูลต้องใช้การคำนวณเป็นจำนวนมาก โดยเฉพาะอย่างยิ่งส่วนหนึ่งของด้านวิทยาศาสตร์ของข้อมูลวิทยาศาสตร์อาศัยการทดสอบซ้ำ ๆ และการทดลองในเมทริกซ์ข้อมูลต่างๆ อย่าลืมว่าการทำงานกับข้อมูลปริมาณมากหมายความว่าการแปลงที่ใช้เวลานานที่สุดจะสังเกตซ้ำหลังจากการสังเกต (ตัวอย่างเช่นการดำเนินงานที่เหมือนกันและไม่เกี่ยวข้องกับส่วนต่างๆของเมทริกซ์)
การใช้แกน CPU มากขึ้นจะช่วยเร่งการคำนวณโดยปัจจัยที่เกือบจะตรงกับจำนวนแกน ตัวอย่างเช่นการมีสี่แกนจะหมายถึงการทำงานที่ดีที่สุดสี่ครั้งเร็วขึ้น คุณไม่ได้รับการเพิ่มขึ้นสี่เท่าเนื่องจากมีค่าใช้จ่ายเมื่อเริ่มต้นกระบวนการแบบขนาน - อินสแตนซ์ Python ใหม่ที่ใช้งานจะต้องมีการตั้งค่าข้อมูลหน่วยความจำในตัวและเปิดตัวแล้ว ดังนั้นการปรับปรุงจะน้อยกว่าความเป็นไปได้ที่อาจทำได้ แต่ยังคงมีนัยสำคัญ
การประมวลผลหลายชุดจะทำงานโดยการจำลองรหัสและเนื้อหาหน่วยความจำในอินสแตนซ์ Python ใหม่ ๆ (คนงาน) โดยคำนวณผลลัพธ์สำหรับแต่ละไฟล์และส่งคืนผลลัพธ์ที่รวมไว้ในคอนโซลหลัก หากอินสแตนซ์เดิมของคุณใช้พื้นที่หน่วยความจำแรมอยู่มากเท่าไรก็จะไม่สามารถสร้างอินสแตนซ์ใหม่ได้และเครื่องของคุณอาจไม่มีหน่วยความจำอยู่การทดสอบผลลัพธ์ของสมมติฐานการเรียนรู้ด้วยเครื่องจักรโดยใช้ข้อมูลการฝึกอบรมและการทดสอบที่แตกต่างกัน
การค้นหาตาราง:
-
การเปลี่ยนพารามิเตอร์แบบ hyper อย่างเป็นระบบ ของสมมติฐานการเรียนรู้เกี่ยวกับเครื่องจักรและการทดสอบผลลัพธ์ที่เป็นผลลัพธ์ การคาดการณ์หลายชั้น:
-
การเรียกใช้อัลกอริทึมหลายครั้งเมื่อเทียบกับเป้าหมายหลายรายการเมื่อมีหลายเป้าหมายที่แตกต่างกันไปเพื่อทำนายในเวลาเดียวกัน Ensemble machine-learning methods:
-
การสร้างโมเดลโฮสต์ขนาดใหญ่ที่แยกแต่ละประเภทออกจากกันเช่นเมื่อใช้โมเดลแบบ RandomForest คุณไม่จำเป็นต้องทำอะไรเป็นพิเศษเพื่อใช้ประโยชน์จากการคำนวณแบบขนาน - คุณสามารถเปิดใช้งานการทำงานแบบขนานโดยการตั้งค่า พารามิเตอร์ n_jobs เป็นจำนวนแกนมากกว่า 1 หรือโดยการตั้งค่าเป็น -1 ซึ่งหมายความว่าคุณต้องการใช้อินสแตนซ์ของ CPU ทั้งหมดที่พร้อมใช้งาน
-
ถ้าคุณไม่ได้ใช้รหัสของคุณจากคอนโซลหรือจากโน้ตบุ๊ค IPython เป็นสิ่งสำคัญอย่างยิ่งที่คุณต้องแยกรหัสของคุณจากการนำเข้าแพคเกจหรือการกำหนดตัวแปรทั่วโลกในสคริปต์โดยใช้ __name __ == '__ main__': คำสั่งที่จุดเริ่มต้นของโค้ดที่รันการทำงานแบบขนานหลายตัว ถ้าคำสั่งตรวจสอบว่าโปรแกรมรันโดยตรงหรือเรียกโดยคอนโซล Python ที่ใช้อยู่แล้วหลีกเลี่ยงความสับสนหรือข้อผิดพลาดตามกระบวนการแบบหลายขั้นตอน (เช่นเรียกซ้ำแบบขนาน) การแสดงหลายรูปแบบ
ควรใช้ IPython เมื่อคุณเรียกใช้การสาธิตวิธีการประมวลผลหลายเครื่องสามารถประหยัดเวลาได้มากในระหว่างโครงการวิทยาศาสตร์ข้อมูล การใช้ IPython ให้ประโยชน์ในการใช้คำสั่งเวทมนตร์% timeit สำหรับการรันไทม์มิก คุณเริ่มต้นด้วยการโหลดชุดข้อมูลมัลติเคลระบบอัลกอริธึมการเรียนรู้เครื่องจักรที่ซับซ้อน (Support Vector Classifier หรือ SVC) และขั้นตอนการตรวจสอบข้ามเพื่อประเมินคะแนนที่เชื่อถือได้จากขั้นตอนทั้งหมด
สิ่งที่สำคัญที่สุดที่ต้องรู้ก็คือขั้นตอนการทำงานมีขนาดค่อนข้างใหญ่เนื่องจาก SVC ผลิต 10 โมเดลซึ่งทำซ้ำ 10 ครั้งโดยใช้การตรวจสอบข้ามชุดสำหรับรุ่น 100 ตัว
จากขนแกะ ชุดข้อมูลนำเข้า load_digits digits = load_digits () X, y = ตัวเลข ข้อมูลตัวเลข เป้าหมายจาก Sklearn svm นำเข้า SVC จาก sklearn ข้ามไปที่: 1 ลูป, ดีที่สุด 3: 17 9 วินาทีต่อห่วง
หลังจากการทดสอบนี้, คุณต้องเปิดใช้งานการทำงานแบบขนานมัลติคอร์และใช้เวลาในการผลลัพธ์โดยใช้คำสั่งต่อไปนี้:
% timeit multi_core_learning = cross_val_score (SVC (), X, y, cv = 20, n_jobs = -1) Out [2]: 1 loops, ตัวอย่างเช่นเครื่องแสดงให้เห็นถึงข้อได้เปรียบเชิงบวกโดยใช้การประมวลผลแบบหลายตัวแปรแม้ว่าจะใช้ชุดข้อมูลขนาดเล็กที่ Python ใช้เวลาส่วนใหญ่ในการเริ่มต้นคอนโซลและเรียกใช้ส่วนหนึ่งของโค้ดในแต่ละเครื่อง ค่าใช้จ่ายนี้ไม่กี่วินาทียังคงเป็นนัยสำคัญที่การดำเนินการทั้งหมดจะใช้งานได้ไม่กี่วินาที ลองจินตนาการว่าจะเกิดอะไรขึ้นถ้าคุณทำงานกับชุดข้อมูลขนาดใหญ่ขึ้น - เวลาในการดำเนินการของคุณสามารถตัดออกได้สองหรือสามครั้ง
แม้ว่าโค้ดจะทำงานได้ดีกับ IPython แต่ให้วางสคริปต์ไว้ใน Python และขอให้ Python ทำงานในคอนโซลหรือใช้ IDE อาจทำให้เกิดข้อผิดพลาดเนื่องจากการดำเนินงานภายในของงาน multicore การแก้ปัญหาคือการใส่รหัสทั้งหมดภายใต้คำสั่ง if ซึ่งจะตรวจสอบว่าโปรแกรมเริ่มทำงานโดยตรงหรือไม่เรียกภายหลัง นี่คือตัวอย่างสคริปต์:
จากคนไร้สัญชาติ ชุดข้อมูลนำเข้า load_digits จาก sklearn svm นำเข้า SVC จาก sklearn cross_validation นำเข้า cross_val_score ถ้า __name__ == '__main__': หลัก = load_digits () X, y = ตัวเลข ข้อมูลตัวเลข เป้าหมาย multi_core_learning = cross_val_score (SVC (), X, y, cv = 20, n_jobs = -1)