Scikit learning - למידת מכונה באמצעות פיתון



הבלוג של Scikit ללמוד יציג בפניכם מכונת למידה בפייתון. זה כולל מקרה שימוש בו ניישם רגרסיה לוגיסטית באמצעות scikit learning.

בבלוג זה נדון ב- Scikit ללמוד בפיתון. לפני שמדברים על Scikit ללמוד, חייבים להבין את המושג למידת מכונהוחייבים לדעת להשתמש . עם למידת מכונה, אינך צריך לאסוף את התובנות שלך באופן ידני. אתה רק צריך אלגוריתם והמכונה תעשה את השאר בשבילך! האם זה לא מרגש? לימוד Scikit הוא אחת האטרקציות בהן אנו יכולים ליישם למידת מכונה באמצעות Python. זההיא ספריית למידת מכונה בחינם המכילה כלים פשוטים ויעילים למטרות ניתוח נתונים וכרייה.אביא אותך דרך הנושאים הבאים שישמשו יסודות לבלוגים הקרובים:

מהי למידת מכונה?

למידת מכונה היא סוג של בינה מלאכותית המאפשרת ליישומי תוכנה ללמוד מהנתונים ולהפוך מדויקים יותר בחיזוי תוצאות ללא התערבות אנושית. אבל איך זה קורה? לשם כך, המכשיר צריך להיות מאומן על כמה נתונים ועל סמך זה, הוא יזהה דפוס ליצירת מודל.תהליך זה של השגת ידע מהנתונים ומתן תובנות רבות עוצמה הוא הכל על למידת מכונה. עיין בתמונה למטה כדי להבין טוב יותר את פעולתה:





מה הוא סקיפי בפיתון

MachineLearning - Scikit Learn - אדוריקה

באמצעות הנתונים המערכת לומדת אלגוריתם ואז משתמשת בו לבניית מודל ניבוי. בהמשך אנו מתאימים את המודל או משפרים את דיוק המודל באמצעות נתוני המשוב. באמצעות נתוני משוב אלו אנו מכוונים את המודל וחוזים פעולה על מערך הנתונים החדש. אנחנו נהיהלדון א מקרה שימוש של אחת מגישת האלגוריתם בה אנו נכשיר ונבדוק את הנתונים שיעזרו לך לתת תחושה טובה יותר האם זה יתאים לבעיה הספציפית שלך או לא.



לאחר מכן, ישנם שלושה סוגים של למידת מכונה:

    • למידה מפוקחת : זהו תהליך של למידת אלגוריתם ממערך האימונים. למידה מפוקחת היא המקום בו אתה מייצר פונקציית מיפוי בין משתנה הקלט (X) למשתנה פלט (Y) ואתה משתמש באלגוריתם כדי ליצור פונקציה ביניהם. זה ידוע גם בשם דוגמנות ניבוי המתייחסת לתהליך של חיזוי באמצעות הנתונים. חלק מהאלגוריתמים כוללים רגרסיה לינארית, רגרסיה לוגיסטית, עץ החלטה, יער אקראי ומסווג Naive Bayes. נדון בהמשך במקרה שימוש של למידה מפוקחת בה אנו מכשירים את המכונה באמצעות רגרסיה לוגיסטית .
    • למידה ללא פיקוח : זהו תהליך שבו מודל מודל באמצעות מידע שאינו מתויג. ניתן להשתמש בתהליך זה לאשכול נתוני הקלט בכיתות על בסיס המאפיינים הסטטיסטיים שלהם. למידה ללא פיקוח מכונה גם cניתוח ברק שמשמעותו קיבוץ אובייקטים על סמך המידע שנמצא בנתונים המתארים את האובייקטים או את יחסיהם. המטרה היא שאובייקטים בקבוצה אחת צריכים להיות דומים זה לזה אך שונים מאובייקטים בקבוצה אחרת. חלק מהאלגוריתמים כוללים אשכולות K- פירוש, אשכולות היררכיים וכו '.
    • לימוד עם חיזוקים: למידת חיזוק היא למידה על ידי אינטראקציה עם מרחב או סביבה.סוכן RL לומד מההשלכות של פעולותיו, ולא מלמדו אותו במפורש. היא בוחרת את פעולותיה על סמך חוויות העבר שלה (ניצול) וגם על ידי בחירות חדשות (חקר).

סקירה כללית של Scikit Learn

Scikit learning היא ספרייה המשמשת ללימוד מכונה בפייתון. Scikit ללמוד היא ספריית קוד פתוח המורשית תחת BSD והיא ניתנת לשימוש חוזר בהקשרים שונים, ומעודדת שימוש אקדמי ומסחרי. הוא מספק מגוון אלגוריתמי למידה מפוקחים ולא מפוקחים בפייתון.Scikit ללמוד מורכב מאלגוריתמים וספריות פופולריים. מלבד זאת, הוא מכיל גם את החבילות הבאות:



  • NumPy
  • מטפלוטליב
  • SciPy (פיתון מדעי)

כדי ליישם את Scikit learning, ראשית עלינו לייבא את החבילות שלעיל. אם אינכם מכירים את הספריות הללו, תוכלו לעיין בבלוגים הקודמים שלי באתר ו . אתה יכול להוריד את שתי החבילות האלה באמצעות שורת הפקודה או אם אתה משתמש ב- Pימקסים, אתה יכול להתקין אותו ישירות על ידי מעבר להגדרה שלך באותו אופן שאתה עושה זאת עבור חבילות אחרות.

לאחר מכן, באופן דומהאתה צריך לייבא את Sklearn.Scikit learning בנוי על SciPy (Python Scientific) שיש להתקין לפני שתוכלו להשתמש ב- Scikit-learning. אתה יכול להתייחס לזה אתר אינטרנט להוריד את אותו הדבר. כמו כן, התקן את Scipy ואת חבילת הגלגלים אם היא לא קיימת, תוכל להקליד את הפקודה הבאה:

pip להתקין scipy

כבר הורדתי והתקנתי אותו, אתה יכול להתייחס לצילום המסך שלמטה לכל בלבול.

לאחר ייבוא ​​הספריות הנ'ל, בואו להעמיק ולהבין כיצד משתמשים בדיוק ב- Scikit learning.

Scikit ללמוד מגיע עם מערכי נתונים לדוגמא, כגון קַשׁתִית ו ספרות . אתה יכול לייבא את מערכי הנתונים ולשחק איתם. לאחר מכן, עליך לייבא SVM שמייצג מכונת תמיכה וקטורית. SVM הוא סוג של למידת מכונה המשמשת לניתוח נתונים.

הבה ניקח דוגמה לאן ניקח ספרות מערך נתונים והוא יסווג את המספרים עבורנו, למשל- 0 1 2 3 4 5 6 7 8 9. עיין בקוד להלן:

ייבא matplotlib.pyplot כ- plt מ- sklearn ייבא מערכי נתונים מ- sklearn ייבא svm digits = datasets.load_digits () הדפס (digits.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 ייבא מערכי נתונים מ- sklearn ייבא svm digits = datasets.load_digits () הדפס (digits.target) הדפס (digits.images [0])

תְפוּקָה -

mysql_fetch_array php
[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.]]

כפי שניתן לראות לעיל, ספרות היעד ותמונת הספרות מודפסות. ספרות.מטרה נותן את הקרקע אמת עבור סִפְרָה מערך נתונים, כלומר המספר המתאים לכל תמונה ספרתית. לאחר מכן, נתונים הם תמיד מערך דו-ממדי בעל צורה (n_samples, n_features), אם כי לנתונים המקוריים אולי הייתה צורה שונה. אך במקרה של הספרות, כל מדגם מקורי הוא תמונה של צורה (8,8) וניתן לגשת אליו באמצעות ספרות . תמונה.

למידה וחיזוי

לאחר מכן, ב- Scikit למידה, השתמשנו במערך נתונים (מדגם של 10 מחלקות אפשריות, ספרות מאפס לתשע) ועלינו לחזות את הספרות כאשר ניתן תמונה. כדי לחזות את הכיתה, אנו זקוקים ל אומדן מה שעוזר לחזות את הכיתות אליהן שייכות דוגמאות בלתי נראות. ב- Scikit ללמוד, יש לנו אומדן לסיווג שהוא אובייקט פיתון המיישם את השיטות בכושר (x, y) ו לחזות (T). בואו ניקח בחשבון את הדוגמה הבאה:

ייבא matplotlib.pyplot כ- plt מ- sklearn ייבא מערכי נתונים מ- sklearn ייבא svm ספרות = datasets.load_digits () // מערך clf = svm.SVC (gamma = 0.001, C = 100) הדפס (len (digits.data)) x, y = digits.data [: - 1], digits.target [: - 1] // התאמן על הדפסת הנתונים clf.fit (x, y) ('חיזוי:', clf.predict (digits.data [-1]) ) // לחזות את הנתונים plt.imshow (digits.images [-1], cmap = plt.cm.gray_r, interpolation = 'הקרוב ביותר') plt.show ()

פלט -

1796
חיזוי: [8]


בדוגמה שלעיל מצאנו את האורך לראשונה וטעינו 1796 דוגמאות. בשלב הבא השתמשנו בנתונים אלה כנתוני למידה, שם עלינו לבדוק את האלמנט האחרון והאלמנט השלילי הראשון. כמו כן, עלינו לבדוק האם המכונה ניבאה את הנתונים הנכונים או לא. לשם כך השתמשנו ב- Matplotlib במקום בו הצגנו את תמונת הספרות.אז לסיכום, יש לכם נתוני ספרות, קיבלתם את המטרה, אתם מתאימים ומנבאים אותה ומכאן שאתם מוכנים ללכת! זה ממש מהיר וקל, לא?

ניתן גם לדמיין את תוויות היעד עם תמונה, פשוט עיין בקוד להלן:

ייבא matplotlib.pyplot כ- plt מ- sklearn ייבא מערכי נתונים מ- sklearn ייבא svm digits = datasets.load_digits () # הצטרף לתמונות ותוויות היעד ברשימה images_and_labels = list (zip (digits.images, digits.target)) # לכל רכיב ברשימה לאינדקס, (תמונה, תווית) בספירה (images_and_labels [: 8]): # אתחל חלקת משנה של 2X4 במיקום i + 1-th plt.subplot (2, 4, אינדקס + 1) # הצג תמונות בכל עלילות המשנה plt.imshow (תמונה, cmap = plt.cm.gray_r, interpolation = 'הקרוב') # הוסף כותרת לכל עלילת משנה plt.title ('אימון:' + str (תווית)) # הצג את העלילה plt. הופעה()

תְפוּקָה-


כפי שניתן לראות בקוד לעיל, השתמשנו בפונקציית 'zip' כדי להצטרף לתמונות ולתוויות היעד ברשימה ואז לשמור אותו במשתנה, נניח images_and_labels. לאחר מכן הוספנו לאינדקס את שמונת האלמנטים הראשונים ברשת של 2 על 4 בכל עמדה. לאחר מכן, רק הצגנו את התמונות בעזרת מטפלוטליב והוספנו את הכותרת כ'אימון '.

שימוש במקרה - חיזוי באמצעות רגרסיה לוגיסטית

הצהרת בעיה - חברת מכוניות שחררה רכב שטח חדש בשוק. באמצעות הנתונים הקודמים על מכירות רכבי השטח שלהם, הם רוצים לחזות את קטגוריית האנשים שעשויים להיות מעוניינים לקנות זאת.

לשם כך, בואו נראה מערך נתונים שבו יש לי UserId, מין, גיל, משכורת משוערת ונרכש כעמודות. זהו רק מערך נתונים לדוגמה, ממנו תוכלו להוריד את כל מערך הנתונים כאן . ברגע שאנחנו מייבאים את הנתונים ב- pyCharm, זה נראה קצת ככה.

עכשיו בואו להבין את הנתונים האלה. כפי שניתן לראות במערך הנתונים שלמעלה, יש לנו קטגוריות כגון מזהה, מין, גיל וכו '. כעת, בהתבסס על קטגוריות אלה, אנו הולכים להכשיר את המכונה שלנו ולחזות את המספר לא. של רכישות. אז הנה, יש לנו משתנים עצמאיים כ'גיל ',' משכורת צפויה 'ו משתנה תלוי כ'נרכש '. כעת נשתמש בלמידה בפיקוח, כלומר אלגוריתם רגרסיה לוגיסטית כדי לברר את מספר הרכישה באמצעות הנתונים הקיימים.

ראשית, בואו נקבל סקירה של רגרסיה לוגיסטית.

רגרסיה לוגיסטית - רגרסיה לוגיסטית מייצרת תוצאות בפורמט בינארי המשמש לחיזוי התוצאה של משתנה תלוי בקטגוריה. הוא נמצא בשימוש הנפוץ ביותר כאשר המשתנה התלוי הוא בינארי, כלומר, מספר הקטגוריות הזמינות הוא שתיים, כגון התפוקות הרגילות של רגרסיה לוגיסטית הן -

  • כן ולא
  • נכון ולא נכון
  • גבוה ונמוך
  • לעבור ולהיכשל

עכשיו כדי להתחיל עם הקוד, נייבא תחילה את הספריות הללו - Numpy, Matplotlib ו- Pandas. זה די קל לייבא פנדות לפיטשארם על ידי ביצוע השלבים הבאים:

הגדרות -> הוסף חבילה -> פנדות -> התקן

לאחר מכן, נייבא את מערך הנתונים ומשתנה תלוי נפרד (נרכש) ומשתנה עצמאי (גיל, משכורת) על ידי:

dataset = pd.read_csv ('Social_Network_Ads.csv') X = dataset.iloc [:, [2, 3]]. ערכים y = dataset.iloc [:, 4]. ערכים מודפסים (X) הדפס (y)

השלב הבא יהיה אימון ובדיקת הנתונים. אסטרטגיה נפוצה היא לקחת את כל הנתונים המתויגים ולהתפצל לקבוצות משנה של אימונים ובדיקות, שלרוב נלקחים ביחס של 70-80% עבור תת מערך אימונים ו- 20-30% עבור תת מערך הבדיקה. לפיכך, יצרנו ערכות אימון ובדיקות ליצור באמצעות cross_validation.

מ- sklearn.cross_validation יבוא 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 יבוא StandardScaler sc = StandardScaler () X_train = sc.fit_transform (X_train) X_test = sc.transform (X_test)

כעת ניצור את מודל הרגרסיה הלוגיסטית שלנו.

מ- sklearn.linear_model יבוא LogisticRegression classifier = LogisticRegression (random_state = 0) classifier.fit (X_train, y_train)

אנו יכולים להשתמש בזה ולחזות את תוצאות מערך הבדיקות שלנו.

y_pred = classifier.predict (X_test)

כעת נוכל לבדוק כמה תחזיות היו מדויקות וכמה לא השתמשו מטריצת בלבול . בואו נגדיר את Y כמופעים חיוביים ו- N כמקרים שליליים. ארבע התוצאות מנוסחות במטריצת בלבול 2 * 2, כפי שהיא מיוצגת להלן:

מ- sklearn.metrics יבוא confusion_matrix cm = confusion_matrix (y_test, y_pred) הדפס (cm)

תְפוּקָה-

[[65 3] [8 24]]

לאחר מכן, על סמך מטריצת הבלבול שלנו, נוכל לחשב את הדיוק. כך שבדוגמה שלנו לעיל, הדיוק יהיה:

= TP + TN / FN + FP

= 65 + 24/65 +3+ 8 + 24

= 89%

עשינו זאת באופן ידני! בואו נראה כיצד מכונה מחשבת אותו עבורנו, לשם כך יש לנו פונקציה מובנית 'דיוק_סקור' המחשבת את הדיוק ומדפיסה אותו, כמוצג להלן:

מ- sklearn.metrics יבוא דיוק_סקור // ייבא את הפונקציה דיוק_סקור הדפסה (דיוק_סקור (y_test, y_pred) * 100) // מדפיס את הדיוק

פלט -

89.0

הורא! לפיכך, יישמנו בהצלחה רגרסיה לוגיסטית באמצעות Scikit learning בדיוק של 89%.

לחץ כאן כדי לקבל את המקור המלא המלא של התחזית הנ'ל באמצעות ספריית הלמידה של Python Scikit.

כיצד להרכיב תוכנית Java - -

עם זאת, כיסינו רק אחד מתוך האלגוריתמים הפופולריים הרבים שיש לפיתון להציע.כיסינו את כל היסודות של Scikit ללמוד את הספרייה,כדי שתוכל להתחיל להתאמן עכשיו. ככל שתתאמנו יותר כך תלמדו יותר. הישאר מעודכן לבלוגים נוספים בנושא הדרכת פיתון!

יש לך שאלה עבורנו? אנא הזכיר זאת בקטע ההערות בבלוג 'Scikit ללמוד' ונחזור אליך בהקדם האפשרי. כדי לקבל ידע מעמיק על Python יחד עם היישומים השונים שלו, אתה יכול לאימונים מקוונים חיים עם תמיכה 24/7 וגישה לכל החיים.