- •Подготовка наборов данных:
- •Загрузите наборы.
- •1.2. Проверьте корректность загрузки.
- •1.3. Постройте диаграмму рассеяния набора данных. Опишите форму данных, и особенности в данных.
- •1.4. Подготовьте наборы данных проведя стандартизация или нормировку данных. Обоснуйте выбор операции.
- •2.1. Проведите исследование оптимального количества кластеров методов локтя. Сделайте выводы, о наиболее подходящем количестве кластеров.
- •2.2. Проведите исследование оптимального количества кластеров методом силуэта. Сделайте выводы, о наиболее подходящем количестве кластеров.
- •2.3. Проведите кластеризацию алгоритмом k-means, с выбранным оптимальным количеством кластеров.
- •2.4. Постройте диаграмму рассеяния результатов кластеризации с выделением разным цветом разных кластеров.
- •2.5. Постройте диаграмму Вороного для результатов кластеризации. На диаграмме отметьте центроиды полученных кластеров.
- •2.7. Рассчитайте для каждого кластера кол-во точек, среднее, ско, минимум и максимум. Сопоставьте результаты с построенными графиками.
- •3.1. Подберите параметры алгоритма dbscan, которые на ваш взгляд дают наилучшие результаты. Опишите процесс (почему и как изменяли параметры) подбора параметров.
- •3.2. Постройте диаграмму рассеяния результатов кластеризации с выделением разным цветом разных кластеров.
- •3.3. Сделайте выводы об успешности кластеризации.
- •4. Иерархическая кластеризация:
- •4.2. Постройте диаграмму рассеяния результатов кластеризации с выделением разным цветом разных кластеров.
- •4.3. Сравните результаты кластеризации с результатами, полученными в п.2 и п.3. Сделайте выводы о том, какой метод кластеризации подходит под каждый из наборов данных.
2.7. Рассчитайте для каждого кластера кол-во точек, среднее, ско, минимум и максимум. Сопоставьте результаты с построенными графиками.
Создадим функцию cluster_stats, которая принимает датафрейм и название признака. С помощью groupby датафрейм группируется по номеру кластера, а с помощью agg вычисляются статистические характеристики. Далее сортируется по номеру кластера и выводится на экран. Реализация приведена в Листинге 2.7.1, а результат в Таблице 2.7.2 – Таблице 2.7.5.
Листинг 2.7.1 – Расчет статистик
def cluster_stats(df, attribute): stats = df.groupby('cluster')[attribute].agg(['count', 'mean', 'std', 'min', 'max']) print(stats.sort_values('cluster'))
cluster_stats(blobs_norm_df, 'x') cluster_stats(blobs_norm_df, 'y') cluster_stats(circles_std_df, 'x') cluster_stats(circles_std_df, 'y') |
Таблица 2.7.2 – Результат вывода статистики датасета blobs для x
cluster |
count |
mean |
std |
min |
max |
0 |
166 |
0.249492 |
0.090155 |
0.000000 |
0.482227 |
1 |
71 |
0.242878 |
0.102131 |
0.037112 |
0.468100 |
2 |
63 |
0.740832 |
0.104207 |
0.527013 |
1.000000 |
Таблица 2.7.3 – Результат вывода статистики датасета blobs для y
cluster |
count |
mean |
std |
min |
max |
0 |
166 |
0.213274 |
0.084917 |
0.000000 |
0.460471 |
1 |
71 |
0.803645 |
0.089291 |
0.559775 |
1.000000 |
2 |
63 |
0.227612 |
0.092792 |
0.025210 |
0.406916 |
Таблица 2.7.4 – Результат вывода статистики датасета circles для x
cluster |
count |
mean |
std |
min |
max |
0 |
33 |
1.259450 |
0.356834 |
0.653029 |
1.983105 |
1 |
75 |
-0.530798 |
0.181521 |
-0.939187 |
-0.200871 |
2 |
33 |
-0.291297 |
0.457820 |
-1.121213 |
0.474982 |
3 |
80 |
0.542067 |
0.209067 |
0.200384 |
1.024004 |
4 |
35 |
0.320190 |
0.526320 |
-0.531357 |
1.221603 |
5 |
35 |
-1.597528 |
0.194666 |
-1.947255 |
-1.254965 |
6 |
34 |
-1.231016 |
0.421125 |
-1.917494 |
-0.449514 |
7 |
33 |
1.547176 |
0.220462 |
1.106539 |
1.955767 |
Таблица 2.7.5 – Результат вывода статистики датасета circles для y
cluster |
count |
mean |
std |
min |
max |
0 |
33 |
-1.139372 |
0.394222 |
-1.823277 |
-0.403788 |
1 |
75 |
0.002209 |
0.449459 |
-0.820961 |
0.900411 |
2 |
33 |
-1.725708 |
0.154277 |
-1.986989 |
-1.450269 |
3 |
80 |
-0.006595 |
0.455706 |
-0.801805 |
0.784234 |
4 |
35 |
1.681425 |
0.176846 |
1.319181 |
2.037882 |
5 |
35 |
-0.513651 |
0.507454 |
-1.249664 |
0.365819 |
6 |
34 |
1.087406 |
0.361896 |
0.391005 |
1.703718 |
7 |
33 |
0.517142 |
0.513431 |
-0.294528 |
1.332306 |
Результаты соответствуют графикам.
3. DBSCAN:
