振り返り:配送エリア
CoddyのMachine Learningジャーニー「教師なし学習」セクションの一部。レッスン 10/51。
チャレンジ
簡単この章の冒頭にあったゾーンマップを覚えていますか?今度は自分のマップを描いてみましょう。あるパン屋の配送バンは150か所の配送先を回り、stops.csvでは東方向がkm、北方向がメートルで記録されています。
- 両方の列をスケーリングします。
- kを2から7まで変えて、スケーリングした行にKMeansを適合させます。慣性(小数点以下1桁)とシルエットスコア(小数点以下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
# 配送先ごとに1行:東方向はkm、北方向はメートル(旧システムの単位)
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オンラインコンパイラ