数字をクラスタリングしよう
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ピクセルを再構築します:
value_counts()はクラスターを大きい順に並べるので、中心のギャラリーはスキャン画像の集計表のように見えます。
チャレンジ
中級スターターには、スキャンデータと、その13個の数値バージョンであるX_smallが含まれています。
X_smallに対してk-meansを使い、10個のクラスタを見つけましょう。- 各中心を64ピクセルに復元しましょう。
- 大きいクラスタから順に、2行5列のギャラリーを描きましょう。各中心を
gray_rで8×8の画像として表示し、120 scansのようにサイズをタイトルに付けます。レイアウトを整えて表示しましょう。
クラスタが5個の場合は、次のようになります。
あなたの結果には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)
# 以下にコードを書いてください
このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。
教師なし学習のすべてのレッスン
自分で練習してみよう: Pythonオンラインコンパイラ