Menu
CoddyTech

数字をクラスタリングしよう

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

では、発見です。13個の数値からなるスキャンを10グループに分けるよう、k-meansに指示します。見つけたい数字ごとに1グループです。ラベルは一切見ません。

km = KMeans(n_clusters=10, n_init=10, random_state=0).fit(X_small)

中心点はk-meansが動作したPCA空間にあります。13個の数値で、画像ではありません。pca.inverse_transformはその64ピクセルを再構築します:

左は、k-meansの1つの中心点の13個の数値を示す棒グラフで、最初の2本の棒が高く、その後は小さな棒が続きます。右は、同じ中心点をぼやけた8×8の画像として再構築したもので、0のように見えます

value_counts()はクラスターを大きい順に並べるので、中心のギャラリーはスキャン画像の集計表のように見えます。

challenge icon

チャレンジ

中級

スターターには、スキャンデータと、その13個の数値バージョンであるX_smallが含まれています。

  1. X_smallに対してk-meansを使い、10個のクラスタを見つけましょう。
  2. 各中心を64ピクセルに復元しましょう。
  3. 大きいクラスタから順に、2行5列のギャラリーを描きましょう。各中心をgray_rで8×8の画像として表示し、120 scansのようにサイズをタイトルに付けます。レイアウトを整えて表示しましょう。

クラスタが5個の場合は、次のようになります。

ぼやけた数字の中心が5つ横一列に並び、それぞれ531、367、363、359、177 scansとタイトルが付いている

あなたの結果には10個あります。Coddyが各グラフを説明します。k-meansはどの数字を自力で見つけましたか?

自分で試してみよう

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
from sklearn.datasets import load_digits
from sklearn.decomposition import PCA
from sklearn.cluster import KMeans

# Look at the Digits より:64 ピクセルのスキャン画像が 1,797 枚、インクの濃さは 0 から 16
digits = load_digits()
X = digits.data
y = digits.target

# Shrink with PCA より:各スキャン画像の 13 個の数値で分散の 80% を保持
pca = PCA(n_components=0.8)
X_small = pca.fit_transform(X)

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

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

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

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