Scikit Learn - การเรียนรู้ของเครื่องโดยใช้ Python



บล็อก Scikit learn จะแนะนำให้คุณรู้จักกับ Machine Learning ใน python รวมถึงกรณีการใช้งานที่เราจะใช้การถดถอยโลจิสติกโดยใช้ scikit learn

ในบล็อกนี้เราจะพูดถึง Scikit learn ใน python ก่อนที่จะพูดถึง Scikit learn เราต้องเข้าใจแนวคิดของการเรียนรู้ของเครื่องก่อนและต้องรู้วิธีใช้ . ด้วยแมชชีนเลิร์นนิงคุณไม่จำเป็นต้องรวบรวมข้อมูลเชิงลึกด้วยตนเอง คุณต้องมีอัลกอริทึมและเครื่องจะจัดการส่วนที่เหลือให้คุณเอง! มันไม่น่าตื่นเต้นเหรอ Scikit Learn เป็นหนึ่งในสิ่งดึงดูดใจที่เราสามารถใช้แมชชีนเลิร์นนิงโดยใช้ Python มันเป็นไลบรารีการเรียนรู้ของเครื่องฟรีซึ่งมีเครื่องมือที่เรียบง่ายและมีประสิทธิภาพสำหรับการวิเคราะห์ข้อมูลและการขุดฉันจะพาคุณผ่านหัวข้อต่อไปนี้ซึ่งจะใช้เป็นพื้นฐานสำหรับบล็อกที่กำลังจะมาถึง:

Machine Learning คืออะไร?

การเรียนรู้ของเครื่องเป็นปัญญาประดิษฐ์ประเภทหนึ่งที่ช่วยให้แอปพลิเคชันซอฟต์แวร์เรียนรู้จากข้อมูลและสามารถทำนายผลลัพธ์ได้แม่นยำยิ่งขึ้นโดยไม่ต้องมีการแทรกแซงจากมนุษย์ แต่มันเกิดขึ้นได้อย่างไร? ด้วยเหตุนี้เครื่องจะต้องได้รับการฝึกฝนเกี่ยวกับข้อมูลบางอย่างและจากนั้นเครื่องจะตรวจจับรูปแบบเพื่อสร้างแบบจำลองกระบวนการรับความรู้จากข้อมูลและการให้ข้อมูลเชิงลึกที่มีประสิทธิภาพนี้ล้วนเกี่ยวกับการเรียนรู้ของเครื่อง อ้างอิงภาพด้านล่างเพื่อทำความเข้าใจเกี่ยวกับการทำงานให้ดียิ่งขึ้น:





MachineLearning - Scikit Learn - Edureka

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



ถัดไปมีการเรียนรู้ของเครื่องสามประเภท:

    • การเรียนรู้ภายใต้การดูแล : นี่คือกระบวนการของอัลกอริทึมที่เรียนรู้จากชุดข้อมูลการฝึกอบรม การเรียนรู้ภายใต้การดูแลคือที่ที่คุณสร้างฟังก์ชันการทำแผนที่ระหว่างตัวแปรอินพุต (X) และตัวแปรเอาต์พุต (Y) และคุณใช้อัลกอริทึมเพื่อสร้างฟังก์ชันระหว่างตัวแปรเหล่านี้ เรียกอีกอย่างว่าการสร้างแบบจำลองเชิงคาดการณ์ซึ่งหมายถึงกระบวนการในการคาดการณ์โดยใช้ข้อมูล อัลกอริทึมบางอย่าง ได้แก่ Linear Regression, Logistic Regression, Decision tree, Random forest และ Naive Bayes classifier เราจะพูดคุยเพิ่มเติมเกี่ยวกับกรณีการใช้งานของการเรียนรู้ภายใต้การดูแลที่เราฝึกอบรมเครื่องโดยใช้ การถดถอยโลจิสติก .
    • การเรียนรู้ที่ไม่มีการดูแล : นี่คือกระบวนการที่โมเดลได้รับการฝึกฝนโดยใช้ข้อมูลที่ไม่มีป้ายกำกับ กระบวนการนี้สามารถใช้เพื่อจัดกลุ่มข้อมูลอินพุตในชั้นเรียนโดยอาศัยคุณสมบัติทางสถิติ การเรียนรู้ที่ไม่มีผู้ดูแลเรียกอีกอย่างว่าคการวิเคราะห์ความมันวาวซึ่งหมายถึงการจัดกลุ่มของวัตถุตามข้อมูลที่พบในข้อมูลที่อธิบายถึงวัตถุหรือความสัมพันธ์ของวัตถุ เป้าหมายคือวัตถุในกลุ่มหนึ่งควรมีความคล้ายคลึงกัน แต่แตกต่างจากวัตถุในกลุ่มอื่น อัลกอริทึมบางอย่างรวมถึงการจัดกลุ่ม K-mean การทำคลัสเตอร์ตามลำดับชั้นเป็นต้น
    • การเรียนรู้เสริมแรง: การเรียนรู้แบบเสริมกำลังคือการเรียนรู้โดยการมีปฏิสัมพันธ์กับพื้นที่หรือสิ่งแวดล้อมตัวแทน RL เรียนรู้จากผลของการกระทำแทนที่จะได้รับการสอนอย่างชัดเจน มันเลือกการกระทำบนพื้นฐานของประสบการณ์ในอดีต (การหาประโยชน์) และด้วยตัวเลือกใหม่ ๆ (การสำรวจ)

ภาพรวมของ Scikit Learn

Scikit learn เป็นไลบรารีที่ใช้ในการเรียนรู้ของเครื่องใน Python Scikit learn เป็นไลบรารีโอเพ่นซอร์สซึ่งได้รับอนุญาตภายใต้ BSD และสามารถนำมาใช้ซ้ำได้ในบริบทต่างๆส่งเสริมการใช้งานเชิงวิชาการและเชิงพาณิชย์ มีอัลกอริธึมการเรียนรู้ที่มีการควบคุมดูแลและไม่มีการดูแลใน PythonScikit Learn ประกอบด้วยอัลกอริทึมและไลบรารียอดนิยม นอกจากนั้นยังมีแพ็คเกจต่อไปนี้:



  • NumPy
  • Matplotlib
  • SciPy (งูหลามวิทยาศาสตร์)

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

เรียนรู้ 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 ชั่วโมงทุกวันและการเข้าถึงตลอดชีวิต