実際の単位で見る中心
CoddyのMachine Learningジャーニー「教師なし学習」セクションの一部。レッスン 12/51。
クラスターの中心は、その典型的なメンバーです。K-meansはスケーリング済みデータでテーマパークの中心を見つけたため、それらはzスコアとして表されます。同じ中心を、変換前と変換後で示します。
スケーラーを保持しておきます。各特徴量の平均とばらつきを記憶し、inverse_transformでスケーリングを元に戻せます。
scaler = StandardScaler()
km.fit(scaler.fit_transform(park))
centers = scaler.inverse_transform(km.cluster_centers_)
print(centers.round(1))これは、クラスターごとに1行で、時間、乗車回数、年齢を出力します。
[[ 6. 6.2 38.4]
[ 2.4 3. 45.8]
[ 6.8 13.9 20.7]]クラスタ2の中心は0.8と1.3でした。今は6.8時間と13.9回の乗車として表示されており、同じ点を人が使える単位で表しています。
チャレンジ
中級手袋メーカーは、手のクラスターを4つの手袋サイズに変換します。スターターコードは150人分の手をスケーリングしてクラスター化し、顧客の手をnew_handに読み込みます。
- 新しい手が属するクラスターを見つけます。まずスケーリングしてください。
- 中心をcm単位に戻します。
- 以下のように、そのクラスターの中心を小数第1位まで表示します。
別の手袋メーカーの場合:
Your glove size: hand 20.3 cm, palm 8.9 cm, finger 8.6 cm自分で試してみよう
import pandas as pd
from sklearn.preprocessing import StandardScaler
from sklearn.cluster import KMeans
# 手袋職人が測定した150人分の手の寸法(cm):手の長さ、手のひらの幅、中指の長さ
hands = pd.read_csv("hands.csv")
scaler = StandardScaler()
scaled = scaler.fit_transform(hands)
# 手袋のサイズごとに1つのクラスター
km = KMeans(n_clusters=4, n_init=10, random_state=0)
km.fit(scaled)
# 新しい顧客の手の寸法を、同じ列を持つ1行の表として表したもの
new_hand = pd.DataFrame({
"hand_cm": [float(input())],
"palm_cm": [float(input())],
"finger_cm": [float(input())],
})
# 以下にコードを書いてください
このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。
教師なし学習のすべてのレッスン
自分で練習してみよう: Pythonオンラインコンパイラ