K-Means שיטת מרפק וניתוח צללית עם Yellowbrick ו-Skit-Learn PlatoBlockchain Data Intelligence. חיפוש אנכי. איי.

שיטת K-Means מרפק וניתוח צללית עם Yellowbrick ו-Skit-Learn

מבוא

K-Means הוא אחד מאלגוריתמי האשכולות הפופולריים ביותר. על ידי קיום נקודות מרכזיות לאשכול, הוא מקבץ נקודות אחרות על סמך המרחק שלהן לאותה נקודה מרכזית.

החיסרון של K-Means הוא הצורך לבחור את מספר האשכולות, K, לפני הפעלת האלגוריתם שמקבץ נקודות.

אם תרצה לקרוא מדריך מעמיק ל-K-Means Clustering, עיין בו "K-Means התקבצות עם Scikit-Learn".

שיטת מרפק וניתוח צללית

הטכניקות הנפוצות ביותר לבחירת מספר Ks הן שיטת המרפק ו ניתוח צללית.

כדי להקל על הבחירה של Ks, ה Yellowbrick הספרייה עוטפת את הקוד עם for loops ועלילה שבדרך כלל נכתוב ל-4 שורות קוד.

כדי להתקין את Yellowbrick ישירות ממחברת Jupyter, הפעל:

! pip install yellowbrick

בואו נראה איך זה עובד עבור מערך נתונים מוכר שהוא כבר חלק מ-Scikit-learn, קַשׁתִית מערך נתונים.

השלב הראשון הוא לייבא את מערך הנתונים, KMeans ו yellowbrick ספריות, וטען את הנתונים:

from sklearn.datasets import load_iris
from sklearn.cluster import KMeans
from yellowbrick.cluster import KElbowVisualizer, SilhouetteVisualizer

iris = load_iris()

שימו לב כאן, אנו מייבאים את KElbowVisualizer ו SilhouetteVisualizer החל מ- yellowbrick.cluster, אלה המודולים שבהם נשתמש כדי לדמיין את תוצאות המרפק והצללית!

לאחר טעינת מערך הנתונים, ב- data key of the bunch (סוג נתונים שהוא הרחבה של מילון) הם הערכים של הנקודות שאנו רוצים לאסוף. אם אתה רוצה לדעת מה המספרים מייצגים, תסתכל על iris['feature_names'].

ידוע שמערך הנתונים של איריס מכיל שלושה סוגים של אירוסים: 'versicolor', 'virginica' ו-'setosa'. אתה יכול גם לבדוק את הכיתות ב iris['target_names'] לוודא.

אז יש לנו 4 תכונות לאשכול ויש להפריד אותן ב-3 אשכולות שונים לפי מה שאנחנו כבר יודעים. בואו נראה אם ​​התוצאות שלנו עם שיטת המרפק וניתוח הצללית יאששו זאת.

ראשית, נבחר את ערכי התכונה:

print(iris['feature_names']) 
print(iris['target_names']) 

X = iris['data']

לאחר מכן, נוכל ליצור א KMeans דגם, א KElbowVisualizer() מופע שיקבל את המודל הזה יחד עם מספר ks שעבורם יחושב מדד, במקרה זה מ 2 עד 11 Ks.

לאחר מכן, אנו מתאימים את החזותי לנתונים באמצעות fit() ולהציג את העלילה עם show(). אם לא צוין מדד, הוויזואליזר משתמש ב- עיוות מדד, אשר מחשב את סכום המרחקים בריבוע מכל נקודה למרכז שהוקצה לה:

model = KMeans(random_state=42)

elb_visualizer = KElbowVisualizer(model, k=(2,11))
elb_visualizer.fit(X)    
elb_visualizer.show()  

עכשיו, כבר יש לנו א מרפק ציון עיוות עבור קיבוץ של KMeans עלילה עם סימון קו אנכי שיהיה המספר הטוב ביותר של ks, במקרה זה, 4.

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

model_4clust = KMeans(n_clusters = 4, random_state=42)

sil_visualizer = SilhouetteVisualizer(model_4clust)
sil_visualizer.fit(X)    
sil_visualizer.show()

ציון צללית עבור k פירושו אשכול בשיטת המרפק

הקוד מציג את א עלילת צללית של מקבץ של KMeans עבור 150 דגימות ב-4 מרכזים. כדי לנתח אשכולות אלו, עלינו להסתכל על הערך של מקדם הצללית (או הציון), הערך הטוב ביותר שלו קרוב יותר ל-1. הערך הממוצע שיש לנו הוא 0.5, מסומן על ידי הקו האנכי, ולא כל כך טוב.

אנחנו צריכים גם לבחון את ההתפלגות בין אשכולות - בחלקה טובה יש גדלים דומים של שטחים מקובצים או נקודות מפוזרות היטב. בגרף זה, ישנם 3 אשכולות קטנים יותר (מספר 3, 2, 1) ואשכול אחד גדול יותר (מספר 0), וזו לא התוצאה שציפינו לה.

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

בואו נחזור על אותה העלילה עבור 3 אשכולות כדי לראות מה קורה:

model_3clust = KMeans(n_clusters = 3, random_state=42)

sil_visualizer = SilhouetteVisualizer(model_3clust)
sil_visualizer.fit(X)    
sil_visualizer.show()

צללית עבור אשכולות kmeans

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

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

בול זמן:

עוד מ Stackabuse