|
|
<!--
|
|
|
CO_OP_TRANSLATOR_METADATA:
|
|
|
{
|
|
|
"original_hash": "730225ea274c9174fe688b21d421539d",
|
|
|
"translation_date": "2025-09-05T12:09:34+00:00",
|
|
|
"source_file": "5-Clustering/1-Visualize/README.md",
|
|
|
"language_code": "sr"
|
|
|
}
|
|
|
-->
|
|
|
# Увод у кластеризацију
|
|
|
|
|
|
Кластеризација је врста [ненаџираног учења](https://wikipedia.org/wiki/Unsupervised_learning) која претпоставља да је скуп података необележен или да његови уноси нису повезани са унапред дефинисаним излазима. Користи различите алгоритме за сортирање необележених података и пружа груписања на основу образаца које препознаје у подацима.
|
|
|
|
|
|
[](https://youtu.be/ty2advRiWJM "No One Like You by PSquare")
|
|
|
|
|
|
> 🎥 Кликните на слику изнад за видео. Док изучавате машинско учење са кластеризацијом, уживајте у неким нигеријским Dance Hall песмама - ово је високо оцењена песма из 2014. године од PSquare.
|
|
|
|
|
|
## [Квиз пре предавања](https://ff-quizzes.netlify.app/en/ml/)
|
|
|
|
|
|
### Увод
|
|
|
|
|
|
[Кластеризација](https://link.springer.com/referenceworkentry/10.1007%2F978-0-387-30164-8_124) је веома корисна за истраживање података. Хајде да видимо да ли може помоћи у откривању трендова и образаца у начину на који нигеријска публика конзумира музику.
|
|
|
|
|
|
✅ Одвојите минут да размислите о употребама кластеризације. У стварном животу, кластеризација се дешава кад год имате гомилу веша и треба да сортирате одећу чланова породице 🧦👕👖🩲. У науци о подацима, кластеризација се дешава када покушавате да анализирате корисничке преференције или одредите карактеристике било ког необележеног скупа података. Кластеризација, на неки начин, помаже да се уведе ред у хаос, као у фиоци за чарапе.
|
|
|
|
|
|
[](https://youtu.be/esmzYhuFnds "Introduction to Clustering")
|
|
|
|
|
|
> 🎥 Кликните на слику изнад за видео: Џон Гуттаг са MIT-а представља кластеризацију.
|
|
|
|
|
|
У професионалном окружењу, кластеризација се може користити за одређивање ствари као што су сегментација тржишта, утврђивање које старосне групе купују које артикле, на пример. Друга употреба би била откривање аномалија, можда за откривање преваре из скупа података о трансакцијама кредитним картицама. Или можете користити кластеризацију за одређивање тумора у серији медицинских снимака.
|
|
|
|
|
|
✅ Размислите минут о томе како сте можда наишли на кластеризацију 'у природи', у банкарству, е-трговини или пословном окружењу.
|
|
|
|
|
|
> 🎓 Занимљиво је да је анализа кластера настала у областима антропологије и психологије 1930-их. Можете ли замислити како је могла бити коришћена?
|
|
|
|
|
|
Алтернативно, можете је користити за груписање резултата претраге - на пример, по куповним линковима, сликама или рецензијама. Кластеризација је корисна када имате велики скуп података који желите да смањите и на којем желите да извршите детаљнију анализу, па се техника може користити за учење о подацима пре него што се конструишу други модели.
|
|
|
|
|
|
✅ Када су ваши подаци организовани у кластере, додељујете им идентификатор кластера, и ова техника може бити корисна када желите да сачувате приватност скупа података; можете уместо тога да се позовете на тачку података преко њеног идентификатора кластера, а не преко откривенијих идентификационих података. Можете ли смислити друге разлоге зашто бисте се позивали на идентификатор кластера уместо на друге елементе кластера да бисте га идентификовали?
|
|
|
|
|
|
Продубите своје разумевање техника кластеризације у овом [модулу за учење](https://docs.microsoft.com/learn/modules/train-evaluate-cluster-models?WT.mc_id=academic-77952-leestott).
|
|
|
|
|
|
## Почетак рада са кластеризацијом
|
|
|
|
|
|
[Scikit-learn нуди велики избор](https://scikit-learn.org/stable/modules/clustering.html) метода за извођење кластеризације. Тип који изаберете зависиће од вашег случаја употребе. Према документацији, свака метода има различите предности. Ево поједностављене табеле метода које подржава Scikit-learn и њихових одговарајућих случајева употребе:
|
|
|
|
|
|
| Назив методе | Случај употребе |
|
|
|
| :--------------------------- | :------------------------------------------------------------------ |
|
|
|
| K-Means | општа намена, индуктивна |
|
|
|
| Affinity propagation | многи, неравномерни кластери, индуктивна |
|
|
|
| Mean-shift | многи, неравномерни кластери, индуктивна |
|
|
|
| Spectral clustering | мало, равномерни кластери, трансдуктивна |
|
|
|
| Ward hierarchical clustering | многи, ограничени кластери, трансдуктивна |
|
|
|
| Agglomerative clustering | многи, ограничени, неевклидске удаљености, трансдуктивна |
|
|
|
| DBSCAN | неравна геометрија, неравномерни кластери, трансдуктивна |
|
|
|
| OPTICS | неравна геометрија, неравномерни кластери са променљивом густином, трансдуктивна |
|
|
|
| Gaussian mixtures | равна геометрија, индуктивна |
|
|
|
| BIRCH | велики скуп података са изузецима, индуктивна |
|
|
|
|
|
|
> 🎓 Како креирамо кластере има много везе са начином на који групишемо тачке података у групе. Хајде да разјаснимо неке термине:
|
|
|
>
|
|
|
> 🎓 ['Трансдуктивно' vs. 'индуктивно'](https://wikipedia.org/wiki/Transduction_(machine_learning))
|
|
|
>
|
|
|
> Трансдуктивно закључивање се изводи из посматраних случајева тренинга који се мапирају на одређене тест случајеве. Индуктивно закључивање се изводи из случајева тренинга који се мапирају на општа правила која се тек онда примењују на тест случајеве.
|
|
|
>
|
|
|
> Пример: Замислите да имате скуп података који је само делимично обележен. Неке ствари су 'плоче', неке 'цд-ови', а неке су празне. Ваш задатак је да обезбедите ознаке за празне. Ако изаберете индуктивни приступ, обучили бисте модел тражећи 'плоче' и 'цд-ове', и применили те ознаке на необележене податке. Овај приступ ће имати проблема са класификацијом ствари које су заправо 'касете'. Трансдуктивни приступ, с друге стране, ефикасније обрађује ове непознате податке јер ради на груписању сличних ставки заједно и затим примењује ознаку на групу. У овом случају, кластери би могли одражавати 'округле музичке ствари' и 'квадратне музичке ствари'.
|
|
|
>
|
|
|
> 🎓 ['Неравна' vs. 'равна' геометрија](https://datascience.stackexchange.com/questions/52260/terminology-flat-geometry-in-the-context-of-clustering)
|
|
|
>
|
|
|
> Изведено из математичке терминологије, неравна vs. равна геометрија односи се на мерење удаљености између тачака било 'равним' ([евклидским](https://wikipedia.org/wiki/Euclidean_geometry)) или 'неравним' (неевклидским) геометријским методама.
|
|
|
>
|
|
|
>'Равно' у овом контексту се односи на евклидску геометрију (делови које се уче као 'планарна' геометрија), а 'неравно' се односи на неевклидску геометрију. Шта геометрија има са машинским учењем? Па, као две области које су укорењене у математици, мора постојати заједнички начин мерења удаљености између тачака у кластерима, и то се може урадити на 'раван' или 'нераван' начин, у зависности од природе података. [Евклидске удаљености](https://wikipedia.org/wiki/Euclidean_distance) се мере као дужина сегмента линије између две тачке. [Неевклидске удаљености](https://wikipedia.org/wiki/Non-Euclidean_geometry) се мере дуж криве. Ако ваши подаци, визуализовани, изгледају као да не постоје на равни, можда ћете морати да користите специјализовани алгоритам за њихову обраду.
|
|
|
>
|
|
|

|
|
|
> Инфографика од [Dasani Madipalli](https://twitter.com/dasani_decoded)
|
|
|
>
|
|
|
> 🎓 ['Удаљености'](https://web.stanford.edu/class/cs345a/slides/12-clustering.pdf)
|
|
|
>
|
|
|
> Кластери су дефинисани својом матрицом удаљености, нпр. удаљеностима између тачака. Ова удаљеност се може мерити на неколико начина. Евклидски кластери су дефинисани просеком вредности тачака и садрже 'центроид' или централну тачку. Удаљености се стога мере удаљеношћу до тог центроида. Неевклидске удаљености се односе на 'кластроиде', тачку најближу другим тачкама. Кластроиди се могу дефинисати на различите начине.
|
|
|
>
|
|
|
> 🎓 ['Ограничени'](https://wikipedia.org/wiki/Constrained_clustering)
|
|
|
>
|
|
|
> [Ограничена кластеризација](https://web.cs.ucdavis.edu/~davidson/Publications/ICDMTutorial.pdf) уводи 'полу-наџирано' учење у овај ненаџирани метод. Односи између тачака су означени као 'не може се повезати' или 'мора се повезати' тако да се нека правила намећу на скуп података.
|
|
|
>
|
|
|
>Пример: Ако је алгоритам пуштен на серију необележених или полу-обележених података, кластери које производи могу бити лошег квалитета. У горњем примеру, кластери би могли груписати 'округле музичке ствари' и 'квадратне музичке ствари' и 'троугласте ствари' и 'колачиће'. Ако се дају нека ограничења, или правила која треба следити ("ставка мора бити направљена од пластике", "ставка треба да може да производи музику") то може помоћи да се 'ограничи' алгоритам да донесе боље изборе.
|
|
|
>
|
|
|
> 🎓 'Густина'
|
|
|
>
|
|
|
> Подаци који су 'шумни' сматрају се 'густим'. Удаљености између тачака у сваком од њихових кластера могу се, при испитивању, показати као више или мање густе, или 'претрпане', и стога ове податке треба анализирати одговарајућом методом кластеризације. [Овај чланак](https://www.kdnuggets.com/2020/02/understanding-density-based-clustering.html) демонстрира разлику између коришћења K-Means кластеризације и HDBSCAN алгоритама за истраживање шумног скупа података са неравномерном густином кластера.
|
|
|
|
|
|
## Алгоритми кластеризације
|
|
|
|
|
|
Постоји преко 100 алгоритама кластеризације, а њихова употреба зависи од природе података. Хајде да разговарамо о неким од главних:
|
|
|
|
|
|
- **Хијерархијска кластеризација**. Ако се објекат класификује према његовој близини другом објекту, а не оном који је удаљенији, кластери се формирају на основу удаљености њихових чланова од других објеката. Agglomerative кластеризација у Scikit-learn-у је хијерархијска.
|
|
|
|
|
|

|
|
|
> Инфографика од [Dasani Madipalli](https://twitter.com/dasani_decoded)
|
|
|
|
|
|
- **Кластеризација центроида**. Овај популарни алгоритам захтева избор 'k', или броја кластера који треба формирати, након чега алгоритам одређује централну тачку кластера и окупља податке око те тачке. [K-means кластеризација](https://wikipedia.org/wiki/K-means_clustering) је популарна верзија кластеризације центроида. Центар се одређује најближим просеком, отуда и назив. Квадрат удаљености од кластера се минимизира.
|
|
|
|
|
|

|
|
|
> Инфографика од [Dasani Madipalli](https://twitter.com/dasani_decoded)
|
|
|
|
|
|
- **Кластеризација заснована на расподели**. Заснована на статистичком моделовању, кластеризација заснована на расподели се фокусира на одређивање вероватноће да тачка података припада кластеру и додељује је у складу с тим. Методи Gaussian mixture припадају овом типу.
|
|
|
|
|
|
- **Кластеризација заснована на густини**. Тачке података се додељују кластерима на основу њихове густине, или њиховог груписања једна око друге. Тачке података далеко од групе се сматрају изузецима или шумом. DBSCAN, Mean-shift и OPTICS припадају овом типу кластеризације.
|
|
|
|
|
|
- **Кластеризација заснована на мрежи**. За мултидимензионалне скупове података, креира се мрежа и подаци се деле међу ћелијама мреже, чиме се стварају кластери.
|
|
|
|
|
|
## Вежба - кластеризујте своје податке
|
|
|
|
|
|
Кластеризација као техника је значајно олакшана правилном визуализацијом, па хајде да почнемо визуализацијом наших музичких података. Ова вежба ће нам помоћи да одлучимо који од метода кластеризације најбоље одговара природи ових података.
|
|
|
|
|
|
1. Отворите [_notebook.ipynb_](https://github.com/microsoft/ML-For-Beginners/blob/main/5-Clustering/1-Visualize/notebook.ipynb) датотеку у овом фолдеру.
|
|
|
|
|
|
1. Увезите пакет `Seaborn` за добру визуализацију података.
|
|
|
|
|
|
```python
|
|
|
!pip install seaborn
|
|
|
```
|
|
|
|
|
|
1. Додајте податке о песмама из [_nigerian-songs.csv_](https://github.com/microsoft/ML-For-Beginners/blob/main/5-Clustering/data/nigerian-songs.csv). Учитајте dataframe са неким подацима о песмама. Припремите се за истраживање ових података увозом библиотека и исписивањем података:
|
|
|
|
|
|
```python
|
|
|
import matplotlib.pyplot as plt
|
|
|
import pandas as pd
|
|
|
|
|
|
df = pd.read_csv("../data/nigerian-songs.csv")
|
|
|
df.head()
|
|
|
```
|
|
|
|
|
|
Проверите првих неколико линија података:
|
|
|
|
|
|
| | name | album | artist | artist_top_genre | release_date | length | popularity | danceability | acousticness | energy | instrumentalness | liveness | loudness | speechiness | tempo | time_signature |
|
|
|
| --- | ------------------------ | ---------------------------- | ------------------- | ---------------- | ------------ | ------ | ---------- | ------------ | ------------ | ------ | ---------------- | -------- | -------- | ----------- | ------- | -------------- |
|
|
|
| 0 | Sparky | Mandy & The Jungle | Cruel Santino | alternative r&b | 2019 | 144000 | 48 | 0.666 | 0.851 | 0.42 | 0.534 | 0
|
|
|
| 2 | LITT! | LITT! | AYLØ | indie r&b | 2018 | 207758 | 40 | 0.836 | 0.272 | 0.564 | 0.000537 | 0.11 | -7.127 | 0.0424 | 130.005 | 4 |
|
|
|
| 3 | Confident / Feeling Cool | Enjoy Your Life | Lady Donli | nigerian pop | 2019 | 175135 | 14 | 0.894 | 0.798 | 0.611 | 0.000187 | 0.0964 | -4.961 | 0.113 | 111.087 | 4 |
|
|
|
| 4 | wanted you | rare. | Odunsi (The Engine) | afropop | 2018 | 152049 | 25 | 0.702 | 0.116 | 0.833 | 0.91 | 0.348 | -6.044 | 0.0447 | 105.115 | 4 |
|
|
|
|
|
|
1. Добијте неке информације о подацима, позивањем `info()`:
|
|
|
|
|
|
```python
|
|
|
df.info()
|
|
|
```
|
|
|
|
|
|
Излаз изгледа овако:
|
|
|
|
|
|
```output
|
|
|
<class 'pandas.core.frame.DataFrame'>
|
|
|
RangeIndex: 530 entries, 0 to 529
|
|
|
Data columns (total 16 columns):
|
|
|
# Column Non-Null Count Dtype
|
|
|
--- ------ -------------- -----
|
|
|
0 name 530 non-null object
|
|
|
1 album 530 non-null object
|
|
|
2 artist 530 non-null object
|
|
|
3 artist_top_genre 530 non-null object
|
|
|
4 release_date 530 non-null int64
|
|
|
5 length 530 non-null int64
|
|
|
6 popularity 530 non-null int64
|
|
|
7 danceability 530 non-null float64
|
|
|
8 acousticness 530 non-null float64
|
|
|
9 energy 530 non-null float64
|
|
|
10 instrumentalness 530 non-null float64
|
|
|
11 liveness 530 non-null float64
|
|
|
12 loudness 530 non-null float64
|
|
|
13 speechiness 530 non-null float64
|
|
|
14 tempo 530 non-null float64
|
|
|
15 time_signature 530 non-null int64
|
|
|
dtypes: float64(8), int64(4), object(4)
|
|
|
memory usage: 66.4+ KB
|
|
|
```
|
|
|
|
|
|
1. Поново проверите да ли постоје празне вредности, позивањем `isnull()` и проверавањем да ли је збир 0:
|
|
|
|
|
|
```python
|
|
|
df.isnull().sum()
|
|
|
```
|
|
|
|
|
|
Изгледа добро:
|
|
|
|
|
|
```output
|
|
|
name 0
|
|
|
album 0
|
|
|
artist 0
|
|
|
artist_top_genre 0
|
|
|
release_date 0
|
|
|
length 0
|
|
|
popularity 0
|
|
|
danceability 0
|
|
|
acousticness 0
|
|
|
energy 0
|
|
|
instrumentalness 0
|
|
|
liveness 0
|
|
|
loudness 0
|
|
|
speechiness 0
|
|
|
tempo 0
|
|
|
time_signature 0
|
|
|
dtype: int64
|
|
|
```
|
|
|
|
|
|
1. Опис података:
|
|
|
|
|
|
```python
|
|
|
df.describe()
|
|
|
```
|
|
|
|
|
|
| | release_date | length | popularity | danceability | acousticness | energy | instrumentalness | liveness | loudness | speechiness | tempo | time_signature |
|
|
|
| ----- | ------------ | ----------- | ---------- | ------------ | ------------ | -------- | ---------------- | -------- | --------- | ----------- | ---------- | -------------- |
|
|
|
| count | 530 | 530 | 530 | 530 | 530 | 530 | 530 | 530 | 530 | 530 | 530 | 530 |
|
|
|
| mean | 2015.390566 | 222298.1698 | 17.507547 | 0.741619 | 0.265412 | 0.760623 | 0.016305 | 0.147308 | -4.953011 | 0.130748 | 116.487864 | 3.986792 |
|
|
|
| std | 3.131688 | 39696.82226 | 18.992212 | 0.117522 | 0.208342 | 0.148533 | 0.090321 | 0.123588 | 2.464186 | 0.092939 | 23.518601 | 0.333701 |
|
|
|
| min | 1998 | 89488 | 0 | 0.255 | 0.000665 | 0.111 | 0 | 0.0283 | -19.362 | 0.0278 | 61.695 | 3 |
|
|
|
| 25% | 2014 | 199305 | 0 | 0.681 | 0.089525 | 0.669 | 0 | 0.07565 | -6.29875 | 0.0591 | 102.96125 | 4 |
|
|
|
| 50% | 2016 | 218509 | 13 | 0.761 | 0.2205 | 0.7845 | 0.000004 | 0.1035 | -4.5585 | 0.09795 | 112.7145 | 4 |
|
|
|
| 75% | 2017 | 242098.5 | 31 | 0.8295 | 0.403 | 0.87575 | 0.000234 | 0.164 | -3.331 | 0.177 | 125.03925 | 4 |
|
|
|
| max | 2020 | 511738 | 73 | 0.966 | 0.954 | 0.995 | 0.91 | 0.811 | 0.582 | 0.514 | 206.007 | 5 |
|
|
|
|
|
|
> 🤔 Ако радимо са кластерисањем, ненадгледаним методом који не захтева означене податке, зашто приказујемо ове податке са ознакама? У фази истраживања података, оне су корисне, али нису неопходне за рад алгоритама кластерисања. Могли бисмо једноставно уклонити заглавља колона и позивати се на податке по броју колоне.
|
|
|
|
|
|
Погледајте опште вредности података. Имајте на уму да популарност може бити '0', што показује песме које немају ранг. Ускоро ћемо их уклонити.
|
|
|
|
|
|
1. Користите стубичасти графикон да бисте сазнали који су жанрови најпопуларнији:
|
|
|
|
|
|
```python
|
|
|
import seaborn as sns
|
|
|
|
|
|
top = df['artist_top_genre'].value_counts()
|
|
|
plt.figure(figsize=(10,7))
|
|
|
sns.barplot(x=top[:5].index,y=top[:5].values)
|
|
|
plt.xticks(rotation=45)
|
|
|
plt.title('Top genres',color = 'blue')
|
|
|
```
|
|
|
|
|
|

|
|
|
|
|
|
✅ Ако желите да видите више највиших вредности, промените `[:5]` у већу вредност или га уклоните да бисте видели све.
|
|
|
|
|
|
Имајте на уму, када је најпопуларнији жанр описан као 'Missing', то значи да га Spotify није класификовао, па хајде да га уклонимо.
|
|
|
|
|
|
1. Уклоните недостајуће податке филтрирањем:
|
|
|
|
|
|
```python
|
|
|
df = df[df['artist_top_genre'] != 'Missing']
|
|
|
top = df['artist_top_genre'].value_counts()
|
|
|
plt.figure(figsize=(10,7))
|
|
|
sns.barplot(x=top.index,y=top.values)
|
|
|
plt.xticks(rotation=45)
|
|
|
plt.title('Top genres',color = 'blue')
|
|
|
```
|
|
|
|
|
|
Сада поново проверите жанрове:
|
|
|
|
|
|

|
|
|
|
|
|
1. Три најпопуларнија жанра доминирају овим скупом података. Фокусирајмо се на `afro dancehall`, `afropop` и `nigerian pop`, додатно филтрирајући скуп података да уклонимо све са вредношћу популарности 0 (што значи да није класификовано са популарношћу у скупу података и може се сматрати шумом за наше потребе):
|
|
|
|
|
|
```python
|
|
|
df = df[(df['artist_top_genre'] == 'afro dancehall') | (df['artist_top_genre'] == 'afropop') | (df['artist_top_genre'] == 'nigerian pop')]
|
|
|
df = df[(df['popularity'] > 0)]
|
|
|
top = df['artist_top_genre'].value_counts()
|
|
|
plt.figure(figsize=(10,7))
|
|
|
sns.barplot(x=top.index,y=top.values)
|
|
|
plt.xticks(rotation=45)
|
|
|
plt.title('Top genres',color = 'blue')
|
|
|
```
|
|
|
|
|
|
1. Урадите брзи тест да видите да ли подаци корелирају на неки посебно јак начин:
|
|
|
|
|
|
```python
|
|
|
corrmat = df.corr(numeric_only=True)
|
|
|
f, ax = plt.subplots(figsize=(12, 9))
|
|
|
sns.heatmap(corrmat, vmax=.8, square=True)
|
|
|
```
|
|
|
|
|
|

|
|
|
|
|
|
Једина јака корелација је између `energy` и `loudness`, што није изненађујуће, с обзиром на то да је гласна музика обично прилично енергична. У супротном, корелације су релативно слабе. Биће занимљиво видети шта алгоритам кластерисања може да направи од ових података.
|
|
|
|
|
|
> 🎓 Имајте на уму да корелација не имплицира узрочност! Имамо доказ корелације, али немамо доказ узрочности. [Занимљив веб сајт](https://tylervigen.com/spurious-correlations) има визуализације које наглашавају ову тачку.
|
|
|
|
|
|
Постоји ли нека конвергенција у овом скупу података око перципиране популарности песме и њене плесности? FacetGrid показује да постоје концентрични кругови који се поравнавају, без обзира на жанр. Да ли је могуће да се укуси у Нигерији конвергирају на одређеном нивоу плесности за овај жанр?
|
|
|
|
|
|
✅ Испробајте различите тачке података (енергија, гласноћа, говорност) и више или различитих музичких жанрова. Шта можете открити? Погледајте табелу `df.describe()` да видите општи распон тачака података.
|
|
|
|
|
|
### Вежба - расподела података
|
|
|
|
|
|
Да ли се ова три жанра значајно разликују у перцепцији њихове плесности, на основу њихове популарности?
|
|
|
|
|
|
1. Испитајте расподелу података за наша три најпопуларнија жанра у погледу популарности и плесности дуж задате x и y осе.
|
|
|
|
|
|
```python
|
|
|
sns.set_theme(style="ticks")
|
|
|
|
|
|
g = sns.jointplot(
|
|
|
data=df,
|
|
|
x="popularity", y="danceability", hue="artist_top_genre",
|
|
|
kind="kde",
|
|
|
)
|
|
|
```
|
|
|
|
|
|
Можете открити концентричне кругове око опште тачке конвергенције, који показују расподелу тачака.
|
|
|
|
|
|
> 🎓 Имајте на уму да овај пример користи KDE (Kernel Density Estimate) графикон који представља податке користећи континуирану криву густине вероватноће. Ово нам омогућава да интерпретирамо податке када радимо са више расподела.
|
|
|
|
|
|
Уопштено, три жанра се лабаво поравнавају у смислу њихове популарности и плесности. Одређивање кластера у овим лабаво поравнатим подацима биће изазов:
|
|
|
|
|
|

|
|
|
|
|
|
1. Направите графикон расејања:
|
|
|
|
|
|
```python
|
|
|
sns.FacetGrid(df, hue="artist_top_genre", height=5) \
|
|
|
.map(plt.scatter, "popularity", "danceability") \
|
|
|
.add_legend()
|
|
|
```
|
|
|
|
|
|
Графикон расејања истих оса показује сличан образац конвергенције
|
|
|
|
|
|

|
|
|
|
|
|
Уопштено, за кластерисање можете користити графиконе расејања да бисте приказали кластере података, тако да је савладавање ове врсте визуализације веома корисно. У следећем часу, користићемо ове филтриране податке и применити k-means кластерисање како бисмо открили групе у овим подацима које се преклапају на занимљиве начине.
|
|
|
|
|
|
---
|
|
|
|
|
|
## 🚀Изазов
|
|
|
|
|
|
У припреми за следећи час, направите графикон о различитим алгоритмима кластерисања које бисте могли открити и користити у производном окружењу. Које врсте проблема кластерисање покушава да реши?
|
|
|
|
|
|
## [Квиз након предавања](https://ff-quizzes.netlify.app/en/ml/)
|
|
|
|
|
|
## Преглед и самостално учење
|
|
|
|
|
|
Пре него што примените алгоритме кластерисања, као што смо научили, добра је идеја да разумете природу вашег скупа података. Прочитајте више о овој теми [овде](https://www.kdnuggets.com/2019/10/right-clustering-algorithm.html)
|
|
|
|
|
|
[Овај користан чланак](https://www.freecodecamp.org/news/8-clustering-algorithms-in-machine-learning-that-all-data-scientists-should-know/) вас води кроз различите начине на које различити алгоритми кластерисања функционишу, с обзиром на различите облике података.
|
|
|
|
|
|
## Задатак
|
|
|
|
|
|
[Истражите друге визуализације за кластерисање](assignment.md)
|
|
|
|
|
|
---
|
|
|
|
|
|
**Одрицање од одговорности**:
|
|
|
Овај документ је преведен коришћењем услуге за превођење помоћу вештачке интелигенције [Co-op Translator](https://github.com/Azure/co-op-translator). Иако тежимо тачности, молимо вас да имате у виду да аутоматски преводи могу садржати грешке или нетачности. Оригинални документ на изворном језику треба сматрати ауторитативним извором. За критичне информације препоручује се професионални превод од стране људи. Не сносимо одговорност за било каква неспоразумевања или погрешна тумачења која могу произаћи из коришћења овог превода. |