クラスタの特徴を分析する
CoddyのMachine Learningジャーニー「教師なし学習」セクションの一部。レッスン 11/51。
この章では、クラスター番号を人が活用できるグループに変換します。最後には、すべてのクラスターに名前が付いています。
2のような数値だけでは何もわかりません。クラスター内の各特徴量の平均であるプロファイルを見るとわかります。ラベルを列として追加し、それからグループ化します。
park["cluster"] = km.labels_
print(park.groupby("cluster").mean().round(1))これはクラスターごとに1行を出力します:
hours rides age
cluster
0 6.0 6.2 38.4
1 2.4 3.0 45.8
2 6.8 13.9 20.7次に、各行を言葉として読み取ります。クラスター 2 は若く、7時間滞在し、14回乗ります。スリルを求める人たちです。クラスター 1 は早く帰ります。短時間の来園者です。
チャレンジ
中級カラオケバーは、来店客について知りたいと考えています。スターターコードでは客を3つのクラスタに分けています。namesには、月の来店回数が少ない順に、それぞれの名前が入っています。
- ラベルを
cluster列としてguestsに追加します。 - クラスタの平均と客数を求め、
visits_monthで並べ替えます。 - クラスタごとに、名前と小数第1位までの平均を1行に出力します。
別のバーの場合:
Once in a while: 30 guests, 1.4 visits a month, 2.5 songs, 3.2 hours
Regulars: 45 guests, 3.0 visits a month, 4.6 songs, 2.0 hours
Superfans: 15 guests, 7.4 visits a month, 9.2 songs, 2.8 hours自分で試してみよう
import pandas as pd
from sklearn.preprocessing import StandardScaler
from sklearn.cluster import KMeans
# カラオケバーの客110人:visits a month, 1回の訪問で歌う曲数、1回の訪問の滞在時間
guests = pd.read_csv("karaoke.csv")
scaled = StandardScaler().fit_transform(guests)
km = KMeans(n_clusters=3, n_init=10, random_state=0)
km.fit(scaled)
# 月間の来店回数が少ない順から多い順に並べたグループ名
names = ["Once in a while", "Regulars", "Superfans"]
# 以下にコードを書いてください
このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。
教師なし学習のすべてのレッスン
自分で練習してみよう: Pythonオンラインコンパイラ