סיכום: אזורי משלוח
חלק מהיחידה למידה בלתי מונחית במסלול ה-Machine Learning של Coddy. שיעור 10 מתוך 51.
אתגר
קלזוכרים את מפת האזורים שהופיעה בתחילת הפרק? עכשיו ציירו את שלכם. הטנדר של מאפייה משרת 150 עצירות, ו־stops.csv שומר את המיקום המזרחי בק״מ, אבל את המיקום הצפוני במטרים.
- בצעו קנה מידה לשתי העמודות.
- עבור k מ־2 עד 7, התאימו את KMeans לשורות לאחר שינוי קנה המידה; הדפיסו את האינרציה שלו (ספרה אחת אחרי הנקודה העשרונית) ואת ציון הצללית (3 ספרות אחרי הנקודה העשרונית). לאחר מכן הדפיסו את ערך k עם ציון הצללית הטוב ביותר.
- שרטטו את האזורים של אותו k ביחידות המקוריות: סמנו את העצירות בכל אזור עם מספרן, כמו
50 stops, הוסיפו כוכב שחור בממוצע של כל אזור ומקרא.
עבור עיר אחרת:
k = 2: inertia 109.5, silhouette 0.535
k = 3: inertia 22.8, silhouette 0.737
k = 4: inertia 18.3, silhouette 0.597
k = 5: inertia 14.5, silhouette 0.443
k = 6: inertia 12.7, silhouette 0.368
k = 7: inertia 11.2, silhouette 0.364
Zones: 3והמפה שלה:
לאחר מכן Coddy מתאר את המפה שלכם.
נסו בעצמכם
import pandas as pd
import matplotlib.pyplot as plt
from sklearn.cluster import KMeans
from sklearn.preprocessing import StandardScaler
from sklearn.metrics import silhouette_score
# שורה אחת לכל תחנת משלוח: מזרח בק״מ, צפון במטרים (יחידת המידה של המערכת הישנה)
stops = pd.read_csv("stops.csv")
X = stops[["east_km", "north_m"]]
fig, ax = plt.subplots()
ax.set_title("Delivery Zones")
ax.set_xlabel("East (km)")
ax.set_ylabel("North (m)")
# כתבו את הקוד שלכם למטה
כל השיעורים ביחידה למידה בלתי מונחית
תרגלו בעצמכם: קומפיילר Python אונליין