ในบล็อกนี้เราจะพูดถึง Scikit learn ใน python ก่อนที่จะพูดถึง Scikit learn เราต้องเข้าใจแนวคิดของการเรียนรู้ของเครื่องก่อนและต้องรู้วิธีใช้ . ด้วยแมชชีนเลิร์นนิงคุณไม่จำเป็นต้องรวบรวมข้อมูลเชิงลึกด้วยตนเอง คุณต้องมีอัลกอริทึมและเครื่องจะจัดการส่วนที่เหลือให้คุณเอง! มันไม่น่าตื่นเต้นเหรอ Scikit Learn เป็นหนึ่งในสิ่งดึงดูดใจที่เราสามารถใช้แมชชีนเลิร์นนิงโดยใช้ Python มันเป็นไลบรารีการเรียนรู้ของเครื่องฟรีซึ่งมีเครื่องมือที่เรียบง่ายและมีประสิทธิภาพสำหรับการวิเคราะห์ข้อมูลและการขุดฉันจะพาคุณผ่านหัวข้อต่อไปนี้ซึ่งจะใช้เป็นพื้นฐานสำหรับบล็อกที่กำลังจะมาถึง:
Machine Learning คืออะไร?
การเรียนรู้ของเครื่องเป็นปัญญาประดิษฐ์ประเภทหนึ่งที่ช่วยให้แอปพลิเคชันซอฟต์แวร์เรียนรู้จากข้อมูลและสามารถทำนายผลลัพธ์ได้แม่นยำยิ่งขึ้นโดยไม่ต้องมีการแทรกแซงจากมนุษย์ แต่มันเกิดขึ้นได้อย่างไร? ด้วยเหตุนี้เครื่องจะต้องได้รับการฝึกฝนเกี่ยวกับข้อมูลบางอย่างและจากนั้นเครื่องจะตรวจจับรูปแบบเพื่อสร้างแบบจำลองกระบวนการรับความรู้จากข้อมูลและการให้ข้อมูลเชิงลึกที่มีประสิทธิภาพนี้ล้วนเกี่ยวกับการเรียนรู้ของเครื่อง อ้างอิงภาพด้านล่างเพื่อทำความเข้าใจเกี่ยวกับการทำงานให้ดียิ่งขึ้น:
การใช้ข้อมูลระบบจะเรียนรู้อัลกอริทึมจากนั้นใช้เพื่อสร้างแบบจำลองการคาดการณ์ หลังจากนั้นเราจะปรับโมเดลหรือปรับปรุงความแม่นยำของโมเดลโดยใช้ข้อมูลความคิดเห็น เราใช้ข้อมูลคำติชมนี้เพื่อปรับโมเดลและคาดการณ์การดำเนินการกับชุดข้อมูลใหม่ เราจะกำลังพูดถึง กรณีการใช้งาน หนึ่งในวิธีอัลกอริทึมที่เราจะฝึกอบรมและทดสอบข้อมูลซึ่งจะช่วยให้คุณเข้าใจได้ดีขึ้นว่าจะเหมาะสมกับปัญหาเฉพาะของคุณหรือไม่
ถัดไปมีการเรียนรู้ของเครื่องสามประเภท:
- การเรียนรู้ภายใต้การดูแล : นี่คือกระบวนการของอัลกอริทึมที่เรียนรู้จากชุดข้อมูลการฝึกอบรม การเรียนรู้ภายใต้การดูแลคือที่ที่คุณสร้างฟังก์ชันการทำแผนที่ระหว่างตัวแปรอินพุต (X) และตัวแปรเอาต์พุต (Y) และคุณใช้อัลกอริทึมเพื่อสร้างฟังก์ชันระหว่างตัวแปรเหล่านี้ เรียกอีกอย่างว่าการสร้างแบบจำลองเชิงคาดการณ์ซึ่งหมายถึงกระบวนการในการคาดการณ์โดยใช้ข้อมูล อัลกอริทึมบางอย่าง ได้แก่ Linear Regression, Logistic Regression, Decision tree, Random forest และ Naive Bayes classifier เราจะพูดคุยเพิ่มเติมเกี่ยวกับกรณีการใช้งานของการเรียนรู้ภายใต้การดูแลที่เราฝึกอบรมเครื่องโดยใช้ การถดถอยโลจิสติก .
- การเรียนรู้ที่ไม่มีการดูแล : นี่คือกระบวนการที่โมเดลได้รับการฝึกฝนโดยใช้ข้อมูลที่ไม่มีป้ายกำกับ กระบวนการนี้สามารถใช้เพื่อจัดกลุ่มข้อมูลอินพุตในชั้นเรียนโดยอาศัยคุณสมบัติทางสถิติ การเรียนรู้ที่ไม่มีผู้ดูแลเรียกอีกอย่างว่าคการวิเคราะห์ความมันวาวซึ่งหมายถึงการจัดกลุ่มของวัตถุตามข้อมูลที่พบในข้อมูลที่อธิบายถึงวัตถุหรือความสัมพันธ์ของวัตถุ เป้าหมายคือวัตถุในกลุ่มหนึ่งควรมีความคล้ายคลึงกัน แต่แตกต่างจากวัตถุในกลุ่มอื่น อัลกอริทึมบางอย่างรวมถึงการจัดกลุ่ม K-mean การทำคลัสเตอร์ตามลำดับชั้นเป็นต้น
- การเรียนรู้เสริมแรง: การเรียนรู้แบบเสริมกำลังคือการเรียนรู้โดยการมีปฏิสัมพันธ์กับพื้นที่หรือสิ่งแวดล้อมตัวแทน RL เรียนรู้จากผลของการกระทำแทนที่จะได้รับการสอนอย่างชัดเจน มันเลือกการกระทำบนพื้นฐานของประสบการณ์ในอดีต (การหาประโยชน์) และด้วยตัวเลือกใหม่ ๆ (การสำรวจ)
- การเรียนรู้ภายใต้การดูแล : นี่คือกระบวนการของอัลกอริทึมที่เรียนรู้จากชุดข้อมูลการฝึกอบรม การเรียนรู้ภายใต้การดูแลคือที่ที่คุณสร้างฟังก์ชันการทำแผนที่ระหว่างตัวแปรอินพุต (X) และตัวแปรเอาต์พุต (Y) และคุณใช้อัลกอริทึมเพื่อสร้างฟังก์ชันระหว่างตัวแปรเหล่านี้ เรียกอีกอย่างว่าการสร้างแบบจำลองเชิงคาดการณ์ซึ่งหมายถึงกระบวนการในการคาดการณ์โดยใช้ข้อมูล อัลกอริทึมบางอย่าง ได้แก่ Linear Regression, Logistic Regression, Decision tree, Random forest และ Naive Bayes classifier เราจะพูดคุยเพิ่มเติมเกี่ยวกับกรณีการใช้งานของการเรียนรู้ภายใต้การดูแลที่เราฝึกอบรมเครื่องโดยใช้ การถดถอยโลจิสติก .
ภาพรวมของ Scikit Learn
Scikit learn เป็นไลบรารีที่ใช้ในการเรียนรู้ของเครื่องใน Python Scikit learn เป็นไลบรารีโอเพ่นซอร์สซึ่งได้รับอนุญาตภายใต้ BSD และสามารถนำมาใช้ซ้ำได้ในบริบทต่างๆส่งเสริมการใช้งานเชิงวิชาการและเชิงพาณิชย์ มีอัลกอริธึมการเรียนรู้ที่มีการควบคุมดูแลและไม่มีการดูแลใน PythonScikit Learn ประกอบด้วยอัลกอริทึมและไลบรารียอดนิยม นอกจากนั้นยังมีแพ็คเกจต่อไปนี้:
- NumPy
- Matplotlib
- SciPy (งูหลามวิทยาศาสตร์)
ในการใช้ Scikit learn เราต้องนำเข้าแพ็คเกจข้างต้นก่อน หากคุณไม่คุ้นเคยกับไลบรารีเหล่านี้คุณสามารถดูบล็อกก่อนหน้าของฉันได้ที่ และ . คุณสามารถดาวน์โหลดสองแพ็คเกจนี้โดยใช้บรรทัดคำสั่งหรือหากคุณใช้ PยCharm คุณสามารถติดตั้งได้โดยตรงโดยไปที่การตั้งค่าของคุณในลักษณะเดียวกับที่คุณทำกับแพ็คเกจอื่น ๆ
เรียนรู้ ssis ทีละขั้นตอน
ถัดไปในลักษณะที่คล้ายกันคุณต้องนำเข้า Sklearn.Scikit learn สร้างขึ้นจาก SciPy (Scientific Python) ที่ต้องติดตั้งก่อนจึงจะสามารถใช้ Scikit-learn ได้ คุณสามารถอ้างถึงสิ่งนี้ เว็บไซต์ เพื่อดาวน์โหลดสิ่งเดียวกัน นอกจากนี้ให้ติดตั้งแพ็คเกจ Scipy และ wheel หากไม่มีคุณสามารถพิมพ์คำสั่งด้านล่าง:
pip ติดตั้ง scipy
ฉันดาวน์โหลดและติดตั้งเรียบร้อยแล้วคุณสามารถดูภาพหน้าจอด้านล่างเพื่อความสับสน
หลังจากนำเข้าไลบรารีข้างต้นมาดูรายละเอียดเพิ่มเติมและทำความเข้าใจว่า Scikit learn ใช้อย่างไร
Scikit learn มาพร้อมกับชุดข้อมูลตัวอย่างเช่น ม่านตา และ ตัวเลข . คุณสามารถนำเข้าชุดข้อมูลและเล่นกับชุดข้อมูลเหล่านั้นได้ หลังจากนั้นคุณต้องนำเข้า SVM ซึ่งย่อมาจาก Support Vector Machine SVM เป็นรูปแบบหนึ่งของการเรียนรู้ของเครื่องที่ใช้ในการวิเคราะห์ข้อมูล
ให้เราดูตัวอย่างที่เราจะใช้ ตัวเลข dataset แล้วมันจะจัดหมวดหมู่ตัวเลขให้เราเช่น - 0 1 2 3 4 5 6 7 8 9. ดูโค้ดด้านล่าง:
นำเข้า matplotlib.pyplot เป็น plt จาก sklearn นำเข้าชุดข้อมูลจาก sklearn นำเข้า svm หลัก = datasets.load_digits () พิมพ์ (digit.data)
เอาต์พุต -
[[0. 0. 5. ... , 0. 0. 0. ] [0. 0. 0. ... , 10. 0. 0. ] [0. 0. 0. ... , 16. 9. 0. ] ... , [0. 0. 1. ... , 6. 0. 0. ] [0. 0. 2. ... , 12. 0. 0. ] [0. 0. 10. ... , 12. 1. 0. ]]
ที่นี่เราเพิ่งนำเข้าไลบรารี SVM ชุดข้อมูลและพิมพ์ข้อมูล เป็นข้อมูลตัวเลขจำนวนมากที่เก็บข้อมูลไว้ ช่วยให้สามารถเข้าถึงคุณสมบัติที่สามารถใช้ในการจัดประเภทไฟล์ ตัวเลข ตัวอย่าง จากนั้นคุณสามารถลองดำเนินการอื่น ๆ เช่นเป้าหมายรูปภาพเป็นต้นลองพิจารณาตัวอย่างด้านล่าง:
นำเข้า matplotlib.pyplot เป็น plt จาก sklearn import datasets จาก sklearn import svm digit = datasets.load_digits () print (digit.target) print (digit.images [0])
เอาต์พุต -
[0 1 2 ... , 8 9 8] // เป้าหมายของข้อมูล [[0. 0. 5. 13. 9. 1. 0. 0. ] // ภาพของข้อมูล [0. 0. 13. 15. 10. 15. 5. 0. ] [0. 3. 15. 2. 0. 11. 8. 0. ] [0. 4. 12. 0. 0. 8. 8. 0. ] [0. 5. 8. 0. 0. 9. 8. 0. ] [0. 4. 11. 0. 1. 12. 7. 0. ] [0. 2. 14. 5. 10. 12. 0. 0. ] [0. 0. 6. 13. 10. 0. 0. 0. ]]
ดังที่คุณเห็นด้านบนตัวเลขเป้าหมายและภาพของตัวเลขจะถูกพิมพ์ออกมา หลักเป้าหมาย ให้ความจริงพื้นฐานสำหรับ หลัก ชุดข้อมูลนั่นคือตัวเลขที่สอดคล้องกับภาพแต่ละหลัก ถัดไปข้อมูลมักจะเป็นอาร์เรย์ 2 มิติซึ่งมีรูปร่าง (n_samples, n_features) แม้ว่าข้อมูลต้นฉบับอาจมีรูปร่างที่แตกต่างกัน แต่ในกรณีของตัวเลขตัวอย่างต้นฉบับแต่ละตัวอย่างจะเป็นรูปภาพของรูปร่าง (8,8) และสามารถเข้าถึงได้โดยใช้ ตัวเลข . ภาพ.
การเรียนรู้และการทำนาย
ต่อไปใน Scikit เรียนรู้เราได้ใช้ชุดข้อมูล (ตัวอย่าง 10 คลาสที่เป็นไปได้ตัวเลขจากศูนย์ถึงเก้า) และเราจำเป็นต้องทำนายตัวเลขเมื่อได้รับภาพ ในการทำนายคลาสเราต้องมี ตัวประมาณค่า ซึ่งช่วยในการทำนายคลาสที่ตัวอย่างที่มองไม่เห็นเป็นของ ใน Scikit เรียนรู้เรามีตัวประมาณค่าสำหรับการจำแนกซึ่งเป็นวัตถุ python ที่ใช้วิธีการ พอดี (x, y) และ ทำนาย (T) ลองพิจารณาตัวอย่างด้านล่าง:
นำเข้า matplotlib.pyplot เป็น plt จาก sklearn import datasets จาก sklearn import svm digit = datasets.load_digits () // dataset clf = svm.SVC (gamma = 0.001, C = 100) print (len (digit.data)) x, y = digit.data [: - 1], digit.target [: - 1] // ฝึกพิมพ์ข้อมูล clf.fit (x, y) ('Prediction:', clf.predict (digit.data [-1]) ) // ทำนายข้อมูล plt.imshow (หลักรูปภาพ [-1], cmap = plt.cm.gray_r, interpolation = 'ใกล้ที่สุด') plt.show ()
เอาต์พุต -
การใช้แฮชแมปในโค้ดจาวา
พ.ศ. 2339
การทำนาย: [8]
ในตัวอย่างข้างต้นเราได้พบความยาวและโหลด 1796 ตัวอย่างก่อน ต่อไปเราได้ใช้ข้อมูลนี้เป็นข้อมูลการเรียนรู้ซึ่งเราต้องทดสอบองค์ประกอบสุดท้ายและองค์ประกอบเชิงลบแรก นอกจากนี้เราต้องตรวจสอบว่าเครื่องคาดการณ์ข้อมูลที่ถูกต้องหรือไม่ ด้วยเหตุนี้เราจึงใช้ Matplotlib ซึ่งเราได้แสดงภาพของตัวเลขสรุปได้ว่าคุณมีข้อมูลตัวเลขคุณมีเป้าหมายคุณเหมาะสมและคาดการณ์ได้ดังนั้นคุณจึงพร้อมที่จะไป! มันง่ายและรวดเร็วจริงๆใช่ไหม
คุณยังสามารถแสดงภาพป้ายกำกับเป้าหมายด้วยรูปภาพได้โดยอ้างอิงจากโค้ดด้านล่างนี้:
นำเข้า matplotlib.pyplot เป็น plt จาก sklearn import datasets จาก sklearn import svm digit = datasets.load_digits () # รวมรูปภาพและป้ายกำกับเป้าหมายในรายการ images_and_labels = list (zip (digit.images, digit.target)) # สำหรับทุกองค์ประกอบ ในรายการสำหรับดัชนี (รูปภาพป้ายกำกับ) ในการแจงนับ (images_and_labels [: 8]): # เริ่มต้นพล็อตย่อยของ 2X4 ที่ตำแหน่ง i + 1-th plt.subplot (2, 4, ดัชนี + 1) # แสดงภาพ ในพล็อตย่อยทั้งหมด plt.imshow (รูปภาพ cmap = plt.cm.gray_r, interpolation = 'ใกล้ที่สุด') # เพิ่มหัวเรื่องให้กับแต่ละพล็อตย่อย plt.title ('Training:' + str (label)) # แสดงพล็อต plt. แสดง()
เอาต์พุต-
ดังที่คุณเห็นในโค้ดด้านบนเราได้ใช้ฟังก์ชัน 'zip' เพื่อรวมรูปภาพและป้ายกำกับเป้าหมายในรายการจากนั้นบันทึกลงในตัวแปรโดยพูดว่า images_and_labels หลังจากนั้นเราได้จัดทำดัชนีองค์ประกอบแปดรายการแรกในตาราง 2 คูณ 4 ในแต่ละตำแหน่ง หลังจากนั้นเราก็แสดงภาพด้วยความช่วยเหลือของ Matplotlib และเพิ่มชื่อเป็น 'การฝึกอบรม'
ใช้กรณี - การทำนายโดยใช้ Logistic Regression
คำชี้แจงปัญหา - บริษัท รถยนต์แห่งหนึ่งได้เปิดตัว SUV รุ่นใหม่ในตลาด จากข้อมูลก่อนหน้านี้เกี่ยวกับยอดขายรถ SUV ของพวกเขาพวกเขาต้องการคาดการณ์ประเภทของผู้ที่อาจสนใจซื้อสิ่งนี้
สำหรับสิ่งนี้ให้เราดูชุดข้อมูลที่ฉันมี UserId เพศอายุเงินเดือนโดยประมาณและซื้อ เป็นคอลัมน์ นี่เป็นเพียงชุดข้อมูลตัวอย่างคุณสามารถดาวน์โหลดชุดข้อมูลทั้งหมดได้จาก ที่นี่ . เมื่อเรานำเข้าข้อมูลใน pyCharm แล้วจะมีลักษณะเช่นนี้
ตอนนี้ให้เราเข้าใจข้อมูลนี้ ดังที่คุณเห็นในชุดข้อมูลด้านบนเรามีหมวดหมู่เช่นรหัสเพศอายุ ฯลฯ ตอนนี้ตามหมวดหมู่เหล่านี้เรากำลังจะฝึกอบรมเครื่องของเราและคาดคะเนหมายเลข ของการซื้อ ที่นี่เรามี ตัวแปรอิสระ เป็น 'อายุ' 'เงินเดือนที่คาดหวัง' และ ตัวแปรตาม เป็น 'ซื้อ' ตอนนี้เราจะใช้การเรียนรู้ภายใต้การดูแลเช่น ขั้นตอนวิธีการถดถอยโลจิสติก เพื่อค้นหาจำนวนการซื้อโดยใช้ข้อมูลที่มีอยู่
ก่อนอื่นมาดูภาพรวมของการถดถอยโลจิสติกส์
การถดถอยโลจิสติก - Logistic Regression สร้างผลลัพธ์ในรูปแบบไบนารีซึ่งใช้ในการทำนายผลลัพธ์ของตัวแปรตามหมวดหมู่ มีการใช้กันอย่างแพร่หลายมากที่สุดเมื่อตัวแปรตามเป็นไบนารีนั่นคือจำนวนประเภทที่มีอยู่คือสองประเภทเช่นผลลัพธ์ปกติของการถดถอยโลจิสติกคือ -
- ใช่และไม่
- จริงและเท็จ
- สูงและต่ำ
- ผ่านและล้มเหลว
ตอนนี้เพื่อเริ่มต้นด้วยรหัสเราจะนำเข้าไลบรารีเหล่านี้ก่อน - Numpy, Matplotlib และ Pandas การนำเข้าแพนด้าใน Pycharm ทำได้ง่ายมากโดยทำตามขั้นตอนด้านล่าง:
การตั้งค่า -> เพิ่มแพ็คเกจ -> หมีแพนด้า -> ติดตั้ง
หลังจากนี้เราจะนำเข้าชุดข้อมูลและตัวแปรตาม (ซื้อ) และตัวแปรอิสระ (อายุเงินเดือน) โดย:
dataset = pd.read_csv ('Social_Network_Ads.csv') X = dataset.iloc [:, [2, 3]]. values y = dataset.iloc [:, 4] .values print (X) print (y)
ขั้นตอนต่อไปคือการฝึกอบรมและทดสอบข้อมูล กลยุทธ์ทั่วไปคือการนำข้อมูลที่ติดป้ายกำกับทั้งหมดมาแบ่งเป็นชุดย่อยการฝึกอบรมและการทดสอบซึ่งโดยปกติจะใช้อัตราส่วน 70-80% สำหรับชุดย่อยการฝึกอบรมและ 20-30% สำหรับชุดย่อยการทดสอบ ดังนั้นเราจึงได้สร้างชุดการฝึกอบรมและการทดสอบโดยใช้ cross_validation
จาก sklearn.cross_validation import train_test_split X_train, X_test, y_train, y_test = train_test_split (X, y, test_size = 0.25, random_state = 0)
นอกจากนี้เรายังสามารถปรับขนาดค่าอินพุตเพื่อประสิทธิภาพที่ดีขึ้นโดยใช้ StandarScaler ดังที่แสดงด้านล่าง:
จาก sklearn.preprocessing import StandardScaler sc = StandardScaler () X_train = sc.fit_transform (X_train) X_test = sc.transform (X_test)
ตอนนี้เราจะสร้างแบบจำลอง Logistic Regression ของเรา
จาก sklearn.linear_model นำเข้าลักษณนาม LogisticRegression = LogisticRegression (random_state = 0) classifier.fit (X_train, y_train)
เราสามารถใช้สิ่งนี้และทำนายผลลัพธ์ของชุดทดสอบของเราได้
y_pred = classifier.predict (X_test)
ตอนนี้เราสามารถตรวจสอบได้ว่าคำทำนายถูกต้องและไม่ได้ใช้จำนวนเท่าใด เมทริกซ์ความสับสน . ให้เรากำหนด Y เป็นอินสแตนซ์บวกและ N เป็นอินสแตนซ์เชิงลบ ผลลัพธ์ทั้งสี่ถูกกำหนดในเมทริกซ์ความสับสน 2 * 2 ดังแสดงด้านล่าง:
จาก sklearn.metrics นำเข้าความสับสน _matrix cm = ความสับสน _ เมทริกซ์ (y_test, y_pred) พิมพ์ (ซม.)
เอาต์พุต-
[[65 3] [8 24]]
ถัดไปจากเมทริกซ์ความสับสนของเราเราสามารถคำนวณความแม่นยำได้ ดังนั้นในตัวอย่างข้างต้นความแม่นยำจะเป็น:
= TP + TN / FN + FP
= 65 + 24/65 +3+ 8 + 24
แทนที่เทียบกับโอเวอร์โหลด c ++
= 89%
เราทำด้วยตนเองแล้ว! ตอนนี้ให้เราดูว่าเครื่องคำนวณเหมือนกันสำหรับเราอย่างไรเพราะเรามีฟังก์ชัน inbuilt 'precision_score' ซึ่งจะคำนวณความแม่นยำและพิมพ์ออกมาดังที่แสดงด้านล่าง:
จาก sklearn.metrics นำเข้าความแม่นยำ _score // นำเข้าฟังก์ชันความถูกต้อง _ การพิมพ์คะแนน (ความแม่นยำ _ คะแนน (y_test, y_pred) * 100) // พิมพ์ความถูกต้อง
เอาต์พุต -
89.0
เย่! ดังนั้นเราจึงประสบความสำเร็จในการปรับใช้การถดถอยโลจิสติกโดยใช้ Scikit learn ด้วยความแม่นยำ 89%
คลิกที่นี่ เพื่อรับแหล่งที่มาที่สมบูรณ์ของการคาดการณ์ข้างต้น โดยใช้ไลบรารีการเรียนรู้ Python Scikit
ด้วยเหตุนี้เราจึงได้กล่าวถึงเพียงหนึ่งในอัลกอริทึมยอดนิยมที่ python นำเสนอเราได้ครอบคลุมพื้นฐานทั้งหมดของ Scikit เรียนรู้ห้องสมุดเพื่อให้คุณสามารถเริ่มฝึกได้เลย ยิ่งคุณฝึกฝนมากขึ้นคุณจะได้เรียนรู้มากขึ้น คอยติดตามบล็อกการสอน Python เพิ่มเติม!
มีคำถามสำหรับเรา? โปรดระบุไว้ในส่วนความคิดเห็นของบล็อก 'Scikit learn' และเราจะติดต่อกลับโดยเร็วที่สุด หากต้องการรับความรู้เชิงลึกเกี่ยวกับ Python พร้อมกับแอพพลิเคชั่นต่างๆคุณสามารถทำได้ สำหรับการฝึกอบรมออนไลน์สดพร้อมการสนับสนุนตลอด 24 ชั่วโมงทุกวันและการเข้าถึงตลอดชีวิต