Даем названия кластерам
Часть раздела Обучение без учителя путешествия по Machine Learning на Coddy. Урок 46 из 51.
Кластеры имеют номера, а не названия. Теперь можно использовать метки: перекрёстная таблица подсчитывает, какие цифры попали в каждый кластер, например эти 1, 7 и 9 в 3 кластерах:
Назовите каждый кластер в честь наиболее часто встречающейся в нём цифры. Сканирования этой цифры в кластере считаются правильно классифицированными:
ct = pd.crosstab(km.labels_, y)
names = ct.idxmax(axis=1) # столбец с наибольшим значением в каждой строке
right = ct.max(axis=1).sum()
print(names.tolist(), right)Это выводит [9, 7, 1] 496: 496 из 541 сканирования названы правильно благодаря группам, обнаруженным без единой метки.
Задание
СреднеНазови свои 10 кластеров. В заготовке есть km, обученный без меток; теперь можно использовать цифры из y.
- Составь перекрёстную таблицу кластеров и
yи назови каждый кластер в честь наиболее часто встречающейся в нём цифры. - В порядке названий выведи количество правильно названных сканов в каждом кластере, его размер и долю правильно названных сканов в процентах, округлённую до целого.
- Выведи общее количество правильно названных сканов и процент с точностью до 1 десятичного знака.
Для 5 кластеров:
Cluster named 0: 175 of 177 scans (99%)
Cluster named 2: 160 of 367 scans (44%)
Cluster named 3: 168 of 531 scans (32%)
Cluster named 6: 179 of 359 scans (50%)
Cluster named 7: 176 of 363 scans (48%)
Named right without labels: 858 of 1797 scans (47.7%)Какой из твоих кластеров самый слабый и что в нём скрывается?
Попробуйте сами
import pandas as pd
from sklearn.datasets import load_digits
from sklearn.decomposition import PCA
from sklearn.cluster import KMeans
# Из «Look at the Digits»: 1,797 изображений по 64 пикселя, значения интенсивности от 0 до 16
digits = load_digits()
X = digits.data
y = digits.target
# Из «Shrink with PCA»: 80% дисперсии в 13 числах на изображение
pca = PCA(n_components=0.8)
X_small = pca.fit_transform(X)
# Из «Cluster the Digits»: 10 кластеров, найденных без меток
km = KMeans(n_clusters=10, n_init=10, random_state=0).fit(X_small)
# Напишите свой код ниже
В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.
Все уроки раздела Обучение без учителя
1Поиск групп
Обучение без метокИзмерение сходстваK-Means вручнуюK-Means в scikit-learnПовторение: участники спортзала4Иерархическая кластеризация
Пошаговое объединениеАгломеративные моделиДендрограммыПовторение: породы собак7PCA на практике
64 измеренияКомпоненты как закономерностиСжимаем и восстанавливаемPCA перед обучением моделиПовторение: сканер лиц10Проект: исследуем цифры
Рассматриваем цифрыСжимаем с помощью PCAКластеризуем цифрыДаем названия кластерамНаходим необычные цифры2Выбор k
ИнерцияМетод локтяОценки силуэтаМасштабирование перед кластеризациейПовторение: зоны доставкиПотренируйтесь самостоятельно: Онлайн-компилятор Python