Menu
CoddyTech

Профилирование кластеров

Часть раздела Обучение без учителя путешествия по Machine Learning на Coddy. Урок 11 из 51.

В этой главе мы превратим номера кластеров в группы, которыми люди смогут пользоваться. К концу главы у каждого кластера будет название:

120 посетителей тематического парка показаны точками: по горизонтали — часы, проведённые в парке, по вертикали — количество аттракционов, на которых они побывали; выделены три группы, названные в легенде: любители острых ощущений — высоко справа, семьи — посередине, посетители на короткое время — низко слева

Число вроде 2 ничего не говорит. О его профиле говорит среднее значение каждого признака внутри кластера. Добавь метки в виде столбца, а затем сгруппируй данные:

park["cluster"] = km.labels_
print(park.groupby("cluster").mean().round(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. Добавь метки в guests в виде столбца cluster.
  2. Составь профиль кластеров: их средние значения и число гостей, отсортированные по visits_month.
  3. Выведи по одной строке на кластер с его названием и средними значениями, округлёнными до 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, песен за посещение, часов за посещение
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