{ "nbformat": 4, "nbformat_minor": 0, "metadata": { "colab": { "name": "Άσκηση 09 - Αυτο-οργανούμενοι Χάρτες - Solution.ipynb", "provenance": [] }, "kernelspec": { "name": "python3", "display_name": "Python 3" }, "language_info": { "name": "python" } }, "cells": [ { "cell_type": "markdown", "metadata": { "id": "QtAAIiKlDthn" }, "source": [ "# Άσκηση 09: Χρήση των αυτο-οργανούμενων χαρτών (Solution)" ] }, { "cell_type": "markdown", "metadata": { "id": "Pt69D_0BD71Q" }, "source": [ "Σε αυτή την άσκηση θα χρησιμοποιήσουμε τους αυτο-οργανούμενους χάρτες για την οπτικοποίηση της πυκνότητας ενός χώρου δεδομένων 5 διαστάσεων, με τη χρήση της βιβλιοοθήκης [Somoclu](https://somoclu.readthedocs.io/)\n", "\n", "Ξεκινάμε εγκαθιστώντας την." ] }, { "cell_type": "code", "metadata": { "id": "zFuv4GngC_oV" }, "source": [ "!pip install --upgrade somoclu" ], "execution_count": null, "outputs": [] }, { "cell_type": "markdown", "metadata": { "id": "kqEOok-zEzZj" }, "source": [ "Στη συνέχεια, κάνουμε\n", " import τις κλάσεις και τις μεθόδους που πρόκειται να χρησιμοποιήσουμε." ] }, { "cell_type": "code", "metadata": { "id": "wgo05-qIE14E" }, "source": [ "from mpl_toolkits.mplot3d import Axes3D\n", "from sklearn.cluster import KMeans\n", "from sklearn.datasets import make_blobs\n", "\n", "import numpy as np\n", "import matplotlib.pyplot as plt\n", "import somoclu\n", "\n", "%matplotlib inline" ], "execution_count": null, "outputs": [] }, { "cell_type": "markdown", "metadata": { "id": "OzLI8qXSFG1G" }, "source": [ "Κατόπιν δημιουργούμε 1000 δείγματα (συνθετικά δεδομένα) 5 χαρακτηριστικών, τα οποία εντάσσονται σε άγνωστο πλήθος συστάδων (μεταξύ 3 και 8)" ] }, { "cell_type": "code", "metadata": { "id": "O79B1yjmFdGe" }, "source": [ "data, _ = make_blobs(n_samples=1000, n_features=5, \n", " centers=np.random.randint(3,9), cluster_std=0.6, \n", " random_state=0)\n", "labels = range(len(data))" ], "execution_count": null, "outputs": [] }, { "cell_type": "markdown", "metadata": { "id": "8CUknK9WFgUp" }, "source": [ "## 1. Αρχικοποίηση και εκπαίδευση χάρτη SOM\n", "\n", "Αρχικοποιείστε χάρτη SOM 8 x 8 νευρώνων και εκπαιδεύστε τον στα δεδομένα" ] }, { "cell_type": "code", "metadata": { "id": "jeVvY9MoFzbT" }, "source": [ "n_rows, n_columns = 8, 8\n", "som = somoclu.Somoclu(n_columns, n_rows, compactsupport=False)\n", "som.train(data)" ], "execution_count": null, "outputs": [] }, { "cell_type": "markdown", "metadata": { "id": "4RRer64nHcoC" }, "source": [ "## 2. Εμφάνιση U-matrix\n", "\n", "Εμφανίστε το U-matrix του SOM που εκπαιδεύσατε. Πόσες συστάδες (clusters) δεδομένων παρατηρείτε;" ] }, { "cell_type": "code", "metadata": { "id": "N6WvBRC7Hop3" }, "source": [ "som.view_umatrix(bestmatches=True, labels=labels, colorbar=True, \n", " figsize=(15, 15))" ], "execution_count": null, "outputs": [] }, { "cell_type": "markdown", "metadata": { "id": "lsdtuHM_JTis" }, "source": [ "## 3. Χρωματισμός των νευρώνων-νικητών\n", "\n", "Χρωματίστε τους νευρώνες νικητές που ανήκουν στο ίδιο cluster με τη χρήση του αλγορίθμου συσταδοποίσης k-μέσων" ] }, { "cell_type": "code", "metadata": { "id": "2o5Bfg3qJUfy" }, "source": [ "algorithm = KMeans(5)\n", "som.cluster(algorithm=algorithm)\n", "som.view_umatrix(bestmatches=True, labels=labels, colorbar=True, figsize=(15, 15))" ], "execution_count": null, "outputs": [] }, { "cell_type": "markdown", "metadata": { "id": "qU-awDtlIcfz" }, "source": [ "## 4. Νευρώνες Νικητές\n", "\n", "Εμφανίστε σε ποιον νευρώνα-νικητή ανήκει το κάθε δείγμα δεδομένων. Αριθμήστε μοναδικά τα bmus" ] }, { "cell_type": "code", "metadata": { "id": "kUF6Ey63IbsX" }, "source": [ "ubmus, indices = np.unique(som.bmus, return_inverse=True, axis=0)\n", "print(indices)" ], "execution_count": null, "outputs": [] } ] }