{ "cells": [ { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [], "source": [ "import pandas as pd\n", "from sklearn.preprocessing import MinMaxScaler\n", "from sklearn.metrics import silhouette_score\n", "from sklearn.cluster import AgglomerativeClustering\n", "import matplotlib.pyplot as plt" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Prvih 5 instanci\n", " breed height weight\n", "0 Border Collie 19 45\n", "1 Boston Terrier 12 20\n", "2 Brittany Spaniel 18 35\n", "3 Bullmastiff 29 120\n", "4 Chihuahua 8 8\n" ] } ], "source": [ "#ucitavanje skupa\n", "df = pd.read_csv(\"C:/Users/student/Desktop/ipVezbe122021/primeri/dogs.csv\")\n", "\n", "#prikaz imena kolona + 5 prvih instanci\n", "print('Prvih 5 instanci')\n", "print(df.head())\n" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [], "source": [ "# Za klasterovanje ce se koristiti atributi visina i tezina psa,\n", "# a rasa nece biti uzeta u obzir.\n", "features = df.columns[1:].tolist()\n", "\n", "#normalizacija atributa posto se koristi euklidsko rastojanje\n", "x=pd.DataFrame(MinMaxScaler().fit_transform(df[features]), columns = features)\n", "\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "\n", " AgglomerativeClustering\n", " \n", " parametri:\n", " n_clusters : broj klastera\n", " default=2\n", " affinity : mera za racnunanje bliskosti\n", " default: “euclidean”\n", " Moze biti npr. “euclidean”, “l1”, “l2”, “manhattan”, “cosine”\n", " linkage : veza\n", " Moze biti “single”, “complete”, “average”\n", " \n", " atributi:\n", " labels_ : oznake klastera za svaku instancu. Klasteri imaju oznake 0, 1, ..., k-1\n", " n_leaves_ : broj listova u hijerahijskom drvetu\n", " children_ : deca cvorova koji nisu listovi. Vrednosti manje od broja instanci u skupu predstavljaju indekse instanci.\n", " " ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# Definisanje boja koje se koriste pri crtanju instanci klastera.\n", "# Instance jednog klastera ce biti prikazane istom bojom.\n", "colors = ['red', 'green', 'gold']" ] }, { "cell_type": "code", "execution_count": 19, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "# pravljenje slike sa graficima\n", "fig = plt.figure(figsize=(8,8))\n", "\n", "#oznaka celije na slici u kojoj se vrse naredna crtanja\n", "plt_ind=1\n", "\n", "# primena razlicitih veza pri odredjivanju bliskosti dva klastera\n", "for link in ['complete', 'average', 'single']:\n", "\n", " #primena hijerarhijskog sakupljajuceg klasterovanja\n", " #i izdvajanje 3 klastera\n", " est=AgglomerativeClustering(n_clusters=3, linkage=link)\n", " est.fit(x)\n", "\n", " # Originalnom skupu se dodaje jos jedan atribut 'label', koji sadrzi\n", " # podatak kom klasteru pripada koja instanca.\n", " # Oznake klastera su u intervalu [0, n_clusters-1]\n", " df['label']= est.labels_\n", "\n", " # Podela slike na 2x2 celije i zadavanje\n", " # celije (plt_ind) u kojoj ce se izvrsiti naredna crtanja.\n", " fig.add_subplot(2, 2, plt_ind)\n", "\n", " # Svakom klasteru (oznake klastera su u intervalu [0, 2]) se dodeljuje jedinstvena\n", " # boja. Instance jednog klastera se crtaju pomocu seme sa rasprsenim elementima i\n", " # boje se bojom koja je dodeljena njihovom klasteru. Na x osi je visina psa iz originalnog\n", " # skupa, a na y osi tezina psa. Instance su predstavljene kao tacke.\n", " for j in range(0,3):\n", "\n", " # izdvajanje instanci klastera koji se obradjuje\n", " cluster= df.loc[df['label'] == j, :]\n", "\n", " # crtanje instanci klastera pomocu seme sa rasprsenim elementima\n", " plt.scatter(cluster['height'], cluster['weight'], color=colors[j], s=30, marker='o', label=\"klaster {0}\".format(j))\n", "\n", " # postavljanje legende i naslova (koji sadrzi primenjenu vezu pri klasterovanju i silueta koeficijent)\n", " # za svaku celiju\n", " plt.legend()\n", " plt.title('Veza: {0}, silueta koef: {1:0.2}'.format(link, silhouette_score(x, df['label'])))\n", "\n", " # Prelazak u narednu celiju u kojoj ce se prikazati\n", " # rezultat klasterovanja sa novim parametrima.\n", " plt_ind += 1\n", "\n", "# prikaz slike bez poklapanja celija\n", "plt.tight_layout()\n", "plt.show()\n", "\n" ] }, { "cell_type": "code", "execution_count": 20, "metadata": {}, "outputs": [], "source": [ "# Koriscenjem 'complete' i 'average' veze pri klasterovanju dobijaju se isti klasteri.\n", "# Klasterovanjem su psi podeljeni na grupe malog, srednjeg i velikog rasta.\n", "\n", "# Primenom 'single' veze dobijeni su drugaciji klasteri. Psi malog i srednjeg rasta su\n", "# u jednom klasteru, dok su psi velikog rasta podeljeni u dva klastera.\n" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] } ], "metadata": { "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.8.6" } }, "nbformat": 4, "nbformat_minor": 2 }