Menu
CoddyTech

Ôn tập: Các vùng giao hàng

Thuộc phần Học không giám sát trong hành trình Machine Learning của Coddy. Bài học 10 trên 51.

challenge icon

Thử thách

Dễ

Còn nhớ bản đồ vùng đã mở đầu chương này không? Giờ hãy vẽ bản đồ của bạn. Xe tải của một tiệm bánh phục vụ 150 điểm dừng, còn stops.csv lưu tọa độ hướng đông bằng km nhưng tọa độ hướng bắc bằng mét.

  1. Chuẩn hóa cả hai cột.
  2. Với k từ 2 đến 7, huấn luyện KMeans trên các hàng đã chuẩn hóa; in ra độ quán tính (1 chữ số thập phân) và hệ số silhouette (3 chữ số thập phân). Sau đó in ra k có hệ số silhouette tốt nhất.
  3. Vẽ các vùng ứng với k đó theo đơn vị thực: đánh dấu các điểm dừng của từng vùng cùng số lượng của chúng, chẳng hạn 50 stops, đặt một ngôi sao đen tại giá trị trung bình của mỗi vùng và thêm chú giải.

Với một thành phố khác:

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

và bản đồ của thành phố đó:

Bản đồ có tiêu đề Delivery Zones, trục ngang biểu thị hướng đông bằng km và trục dọc biểu thị hướng bắc bằng mét: ba vùng điểm dừng, 45 điểm ở phía dưới bên trái, 40 điểm ở phía trên bên phải, 25 điểm ở phía dưới bên phải, mỗi vùng có một ngôi sao đen ở giữa và chú giải ghi tên từng vùng theo số điểm dừng

Sau đó, Coddy sẽ mô tả bản đồ của bạn.

Tự làm thử

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

# Mỗi điểm giao hàng một hàng: hướng đông tính bằng km, hướng bắc tính bằng mét (đơn vị của hệ thống cũ)
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)")

# Viết code của bạn bên dưới

Tất cả bài học trong Học không giám sát

Tự luyện tập: Trình biên dịch Python online