Menu
CoddyTech

Повторение: зоны доставки

Часть раздела Обучение без учителя путешествия по Machine Learning на Coddy. Урок 10 из 51.

challenge icon

Задание

Легко

Помнишь карту зон, которая открывала эту главу? Теперь нарисуй свою. Фургон пекарни обслуживает 150 остановок, а в stops.csv восток указан в км, а север — в метрах.

  1. Масштабируй оба столбца.
  2. Для k от 2 до 7 обучи KMeans на масштабированных строках; выведи инерцию (1 знак после запятой) и коэффициент силуэта (3 знака после запятой). Затем выведи k с наилучшим коэффициентом силуэта.
  3. Покажи зоны для этого 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

и его карта:

Карта с заголовком «Зоны доставки»: восток — по горизонтали в км, север — вверх в метрах; три зоны остановок: 45 внизу слева, 40 вверху справа, 25 внизу справа; в середине каждой зоны — чёрная звезда, а в легенде каждая зона обозначена числом остановок

Затем 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