Menu
CoddyTech

クラスタの特徴を分析する

CoddyのMachine Learningジャーニー「教師なし学習」セクションの一部。レッスン 11/51。

この章では、クラスター番号を人が活用できるグループに変換します。最後には、すべてのクラスターに名前が付いています。

テーマパークの来園者120人を点で表示。横軸はパークで過ごした時間、縦軸は乗ったアトラクションの数。凡例には3つのグループ名があり、右上はスリルを求める人、中ほどは家族連れ、左下は短時間の来園者

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 は早く帰ります。短時間の来園者です。

challenge icon

チャレンジ

中級

カラオケバーは、来店客について知りたいと考えています。スターターコードでは客を3つのクラスタに分けています。namesには、月の来店回数が少ない順に、それぞれの名前が入っています。

  1. ラベルをcluster列としてguestsに追加します。
  2. クラスタの平均と客数を求め、visits_monthで並べ替えます。
  3. クラスタごとに、名前と小数第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"]

# 以下にコードを書いてください
quiz icon腕試し

このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。

教師なし学習のすべてのレッスン

自分で練習してみよう: Pythonオンラインコンパイラ