תמונה מאת עורך
Scikit-learn היא אחת מספריות לימוד המכונה הנפוצות ביותר שנבנו בפיתון. ניתן לייחס את הפופולריות שלו למבנה הקוד הקל והעקבי שלו, הידידותי למפתחים מתחילים. כמו כן, קיימת רמה גבוהה של תמיכה זמינה יחד עם גמישות לשילוב פונקציונליות של צד שלישי, מה שהופך את הספרייה לחזקה ומתאימה לייצור. הספרייה מכילה מספר מודלים של למידת מכונה לסיווג, רגרסיה ואשכולות. במדריך זה, נחקור את הבעיה של סיווג רב-מחלקות באמצעות אלגוריתמים שונים. בוא נצלול ישר לתוכו ונבנה את המודלים שלנו ל-skit-learn.
pip install scikit-learn
אנו נשתמש במערך הנתונים "יין" הזמין במודול מערכי הנתונים של scikit-learn. מערך נתונים זה מורכב מ-178 דוגמאות ו-3 מחלקות בסך הכל. מערך הנתונים כבר מעובד מראש והומר לוקטורים תכונה ולכן, אנו יכולים להשתמש בו ישירות כדי לאמן את המודלים שלנו.
from sklearn.datasets import load_wine X, y = load_wine(return_X_y=True)
נשמור 67% מהנתונים לאימון והשאר 33% לבדיקות.
from sklearn.model_selection import train_test_split X_train, X_test, y_train, y_test = train_test_split( X, y, test_size=0.33, random_state=42
)
כעת, נתנסה ב-5 מודלים שונים של מורכבויות שונות ונעריך את התוצאות שלהם במערך הנתונים שלנו.
model_lr = LogisticRegression()
model_lr.fit(X_train, y_train)
y_pred_lr = model_lr.predict(X_test) print("Accuracy Score: ", accuracy_score(y_pred_lr, y_test))
print(classification_report(y_pred_lr, y_test))
תְפוּקָה
Accuracy Score: 0.9830508474576272 precision recall f1-score support 0 1.00 0.95 0.98 21 1 0.96 1.00 0.98 23 2 1.00 1.00 1.00 15 accuracy 0.98 59 macro avg 0.99 0.98 0.98 59
weighted avg 0.98 0.98 0.98 59
model_knn = KNeighborsClassifier(n_neighbors=1)
model_knn.fit(X_train, y_train)
y_pred_knn = model_knn.predict(X_test) print("Accuracy Score:", accuracy_score(y_pred_knn, y_test))
print(classification_report(y_pred_knn, y_test))
תְפוּקָה
Accuracy Score: 0.7796610169491526 precision recall f1-score support 0 0.90 0.78 0.84 23 1 0.75 0.82 0.78 22 2 0.67 0.71 0.69 14 accuracy 0.78 59 macro avg 0.77 0.77 0.77 59
weighted avg 0.79 0.78 0.78 59
עם שינוי הפרמטר 'n_neighbors=2' אנו רואים ירידה בערך הדיוק. לפיכך, זה מראה שהנתונים פשוטים מספיק ומשיגים למידה טובה יותר עם שכן אחד שיש לקחת בחשבון.
תְפוּקָה
Accuracy Score: 0.6949152542372882 precision recall f1-score support 0 0.90 0.72 0.80 25 1 0.75 0.69 0.72 26 2 0.33 0.62 0.43 8 accuracy 0.69 59 macro avg 0.66 0.68 0.65 59
weighted avg 0.76 0.69 0.72 59
from sklearn.naive_bayes import GaussianNB model_nb = GaussianNB()
model_nb.fit(X_train, y_train)
y_pred_nb = model_nb.predict(X_test) print("Accuracy Score:", accuracy_score(y_pred_nb, y_test))
print(classification_report(y_pred_nb, y_test))
תְפוּקָה
Accuracy Score: 1.0 precision recall f1-score support 0 1.00 1.00 1.00 20 1 1.00 1.00 1.00 24 2 1.00 1.00 1.00 15 accuracy 1.00 59 macro avg 1.00 1.00 1.00 59
weighted avg 1.00 1.00 1.00 59
from sklearn.tree import DecisionTreeClassifier model_dtclassifier = DecisionTreeClassifier()
model_dtclassifier.fit(X_train, y_train)
y_pred_dtclassifier = model_dtclassifier.predict(X_test) print("Accuracy Score:", accuracy_score(y_pred_dtclassifier, y_test))
print(classification_report(y_pred_dtclassifier, y_test))
תְפוּקָה
Accuracy Score: 0.9661016949152542 precision recall f1-score support 0 0.95 0.95 0.95 20 1 1.00 0.96 0.98 25 2 0.93 1.00 0.97 14 accuracy 0.97 59 macro avg 0.96 0.97 0.97 59
weighted avg 0.97 0.97 0.97 59
from sklearn.ensemble import RandomForestClassifier
from sklearn.model_selection import RandomizedSearchCV def get_best_parameters(): params = { "n_estimators": [10, 50, 100], "max_features": ["auto", "sqrt", "log2"], "max_depth": [5, 10, 20, 50], "min_samples_split": [2, 4, 6], "min_samples_leaf": [2, 4, 6], "bootstrap": [True, False], } model_rfclassifier = RandomForestClassifier(random_state=42) rf_randomsearch = RandomizedSearchCV( estimator=model_rfclassifier, param_distributions=params, n_iter=5, cv=3, verbose=2, random_state=42, ) rf_randomsearch.fit(X_train, y_train) best_parameters = rf_randomsearch.best_params_ print("Best Parameters:", best_parameters) return best_parameters parameters_rfclassifier = get_best_parameters() model_rfclassifier = RandomForestClassifier( **parameters_rfclassifier, random_state=42
) model_rfclassifier.fit(X_train, y_train) y_pred_rfclassifier = model_rfclassifier.predict(X_test) print("Accuracy Score:", accuracy_score(y_pred_rfclassifier, y_test))
print(classification_report(y_pred_rfclassifier, y_test))
תְפוּקָה
Best Parameters: {'n_estimators': 100, 'min_samples_split': 6, 'min_samples_leaf': 4, 'max_features': 'log2', 'max_depth': 5, 'bootstrap': True}
Accuracy Score: 0.9830508474576272 precision recall f1-score support 0 1.00 0.95 0.98 21 1 0.96 1.00 0.98 23 2 1.00 1.00 1.00 15 accuracy 0.98 59 macro avg 0.99 0.98 0.98 59
weighted avg 0.98 0.98 0.98 59
באלגוריתם זה, ביצענו כוונון היפרפרמטרים כדי להשיג את הדיוק הטוב ביותר. הגדרנו רשת פרמטרים המורכבת ממספר ערכים לבחירה עבור כל פרמטר. יתר על כן, השתמשנו באלגוריתם קורות חיים של חיפוש אקראי כדי לחפש את מרחב הפרמטרים הטוב ביותר עבור המודל. לבסוף אנו מאכילים את הפרמטרים שהתקבלו למסווג ומכשירים את המודל.
מודלים | דיוק | תצפיות |
רגרסיה לוגיסטית | 98.30% | משיג דיוק רב. המודל מסוגל להכליל היטב על מערך הנתונים של הבדיקה. |
השכנים הקרובים ביותר | 77.96% | האלגוריתם אינו מסוגל ללמוד היטב את ייצוג הנתונים. |
נאיביות | 100% | המודל פחות מורכב ולכן הוא מתאים יותר לנתונים כדי להשיג דיוק מוחלט. |
מסווג עץ ההחלטות | 96.61% | משיג דיוק הגון. |
מסווג יער אקראי | 98.30% | בהיותה גישה מבוססת אנסמבל, היא מניבה ביצועים טובים יותר מאשר Decision Tree. ביצוע כוונון היפרפרמטר גורם לו להשיג דיוק דומה לרגרסיה לוגיסטית. |
במדריך זה, למדנו כיצד להתחיל לבנות ולהכשיר מודלים של למידת מכונה ב-scikit-learn. יישמנו והערכנו כמה אלגוריתמים כדי לקבל מושג בסיסי על הביצועים שלהם. תמיד אפשר לאמץ אסטרטגיות מתקדמות להנדסת תכונות, כוונון היפרפרמטרים או אימון לשיפור הביצועים. כדי לקרוא עוד על הפונקציונליות ש-skit-learn מציעה, עברו לתיעוד הרשמי - מבוא ללמידת מכונה עם sikit-learn, למידת מכונה ב-Python עם scikit-learn.
ישא שסטרי הוא מפתח וכותב נלהב בינה מלאכותית העוסקת בתואר שני בלמידת מכונה מאוניברסיטת מונטריאול. ישה מסתקרנת לחקור טכניקות בינה מלאכותית אחראית כדי לפתור אתגרים המועילים לחברה ולחלוק את הלמידה שלה עם הקהילה.
- הפצת תוכן ויחסי ציבור מופעל על ידי SEO. קבל הגברה היום.
- Platoblockchain. Web3 Metaverse Intelligence. ידע מוגבר. גישה כאן.
- מקור: https://www.kdnuggets.com/getting-started-with-scikit-learn-for-classification-in-machine-learning.html?utm_source=rss&utm_medium=rss&utm_campaign=getting-started-with-scikit-learn-for-classification-in-machine-learning
- 1
- 10
- 100
- 67
- 77
- 84
- 9
- 98
- a
- יכול
- אודות
- מוּחלָט
- דיוק
- להשיג
- לְאַמֵץ
- מתקדם
- AI
- אַלגוֹרִיתְם
- אלגוריתמים
- כְּבָר
- תמיד
- ו
- גישה
- המכונית
- זמין
- בסיסי
- תועלת
- הטוב ביותר
- מוטב
- אוזן נעל
- לִבנוֹת
- נבנה
- האתגרים
- משתנה
- בחרו
- כיתות
- מיון
- קיבוץ
- קוד
- בדרך כלל
- קהילה
- מורכב
- מורכבות
- לשקול
- עִקבִי
- מורכב
- מכיל
- הומר
- נתונים
- מערכי נתונים
- החלטה
- להקטין
- מפתח
- מפתחים
- אחר
- נבדלים זה מזה
- ישירות
- תיעוד
- כל אחד
- הנדסה
- מספיק
- Ether (ETH)
- להעריך
- העריך
- לְנַסוֹת
- לחקור
- מאפיין
- מעטים
- בסופו של דבר
- גמישות
- יער
- ידידותי
- החל מ-
- פונקציות
- נוסף
- לקבל
- מקבל
- גדול
- רֶשֶׁת
- ראש
- גָבוֹהַ
- איך
- איך
- HTML
- HTTPS
- כוונון היפר-פרמטר
- רעיון
- יושם
- לייבא
- לשפר
- in
- להתקין
- לשלב
- IT
- שמור
- לִלמוֹד
- למד
- למידה
- רמה
- ספריות
- סִפְרִיָה
- לינקדין
- מכונה
- למידת מכונה
- מאקרו
- עושה
- מאסטר
- מודל
- מודלים
- מודול
- יותר
- רוב
- מספר
- להתבונן
- מושג
- המיוחדות שלנו
- רשמי
- ONE
- פרמטר
- פרמטרים
- לוהט
- ביצועים
- ביצוע
- מבצע
- אפלטון
- מודיעין אפלטון
- אפלטון נתונים
- פופולריות
- דיוק
- בעיה
- הפקה
- פיתון
- אקראי
- חומר עיוני
- נציגות
- אחראי
- REST
- תוצאות
- לַחֲזוֹר
- חָסוֹן
- סקיקיט-לימוד
- חיפוש
- שיתוף
- הופעות
- דומה
- פָּשׁוּט
- יחיד
- חֶברָה
- לפתור
- כמה
- מֶרחָב
- החל
- אסטרטגיות
- מִבְנֶה
- מַתְאִים
- תמיכה
- טכניקות
- מבחן
- בדיקות
- השמיים
- שֶׁלָהֶם
- צד שלישי
- דרך
- ל
- סה"כ
- רכבת
- הדרכה
- נָכוֹן
- הדרכה
- להשתמש
- ערך
- ערכים
- שונים
- אשר
- יצטרך
- סופר
- X
- זפירנט