{ "cells": [ { "attachments": {}, "cell_type": "markdown", "metadata": {}, "source": [ "# Maschinelles Lernen (ML) - Übung 3\n", "# Perzeptronen und mehrschichtige Perzeptronen\n", "## 3.1 Das einfache Perzeptron als linearer Klassifikator\n", "\n", "In dieser Übung wird ein einfaches Perzeptron (engl. perceptron) programmiert, trainiert und als linearer Klassifikator eingesetzt.\n", "\n", "![perceptron.pdf](Handout/fig/perceptron/perceptron.png)\n", "\n", "Weitere Informationen zur Wirkweise des einfachen Perzeptrons sind im PDF-Handout für diese Übung zu finden." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**Aufgabe 1:** In dieser Übung sollen Sie ein Perzeptron objektorientiert erstellen. Dazu ist bereits eine vorstrukturierte Klasse *Perceptron* mit den Methoden *_init_* zur Initialisierung des Perzeptrons (z.B. Gewichte, Lernrate), *predict* zur Klassifizierung eines Datenpunktes und *fit* zum Trainieren des Perzeptrons vorbereitet.\t\tVervollständigen Sie diese Methoden." ] }, { "cell_type": "code", "execution_count": 15, "metadata": {}, "outputs": [], "source": [ "# matplotlib: Modul zum Plotten von Daten\n", "from matplotlib import pyplot as plt \n", "# numpy: Mathematikbibliothek\n", "import numpy as np \n", "import pandas as pd" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Hilfen für die Klasse Perzeptron\n", "\n", "##### Allgemein\n", "Verwendete Variblenbezeichnungen:\n", "- inputs $\\hat{=} \\textrm{ } \\lbrace x_1, \\ldots x_n \\rbrace$; Sollte als Numpy Array definiert werden.\n", "- eta $\\hat{=} \\textrm{ } \\eta$\n", "\n", "##### Methode _init_(self, number_of_inputs, epochs, learning_rate):\n", "In Python entspricht \\_\\_init\\_\\_ dem Konstruktor. Die \\_\\_init\\_\\_() Methode initialisiert die Klasse Perceptron. Definiere und initialisiere hier die folgenden Variablen: \n", "- die zu lernenden Gewichte $\\textbf{w}$,\n", "- die maximale Anzahl der Epochen (Lernzyklen), die der Lernalgorithmus durchlaufen darf und\n", "- die Lernrate, die den Grad der Veränderung der Gewichte bei jedem Schritt durch die Trainingsdaten bestimmt.\n", "\n", "##### Methode predict(self, inputs):\n", "Die predict(...) Methode enthält die Aktivierungsfunktion h(z) (hier: die Signum-Funktion):\n", "\n", "\\begin{equation}\n", " h(z) =\n", " \\begin{cases}\n", "\t\t\t-1 \\textrm{ falls } z < 0 \\textrm{,} \\\\\t\n", "\t\t\t0 \\textrm{ falls } z = 0 \\textrm{,} \\\\\t\n", "\t\t\t1 \\textrm{ falls } z > 0 \\textrm{.} \\\\\n", "\t\t\\end{cases}\n", "\\end{equation} \n", "Die Eingabe der Methode (inputs) sollte als NumPy Array/Vektor definiert werden.\n", "\n", "##### Methode fit(self, training_inputs, labels):\n", "Die Methode fit(...) benötigt zwei Argumente:\n", "- training_inputs ist eine Liste von numpy-Vektoren und\n", "- labels ist ein Array von erwarteten Ausgabewerten.\n", " \n", "Beim Trainieren des Perzeptrons soll folgende Funktionalität implementiert werden: \n", "Ein einzelner Trainingsdatenpunkt wird betrachtet und eine Vorhersage (Methode predict) getroffen. Auf Basis der Vorhersage $\\hat{y}$ werden die Gewichte nach folgender Regel aktualisiert (siehe auch Handout):\n", "\\begin{equation}\n", "\\textbf{w} \\leftarrow \\textbf{w} + \\eta \\cdot \\left( y - \\hat{y} \\right) \\cdot \\textbf{x} \\textrm{.} \n", "\\end{equation}\n", "\n", "Der Block aus predict und update der Gewichte wird solange iterativ ausgeführt bis die maximale Anzahl der Epochen erreicht ist (oder optional bis die Fehlerfunktion konvergiert ist). \n" ] }, { "cell_type": "code", "execution_count": 16, "metadata": {}, "outputs": [], "source": [ "class Perceptron(object):\n", " def __init__(self, number_of_inputs, epochs, eta):\n", " \"\"\"\n", " Beispielaufruf des Konstruktors:\n", " >>> Perceptron(2, 100, 0.1)\n", " \"\"\"\n", " ### Dein Code kommt hierhin:\n", " self.weights = np.ones(number_of_inputs+1)\n", " self.epochs = epochs\n", " self.eta = eta\n", " self.bias = 1\n", " ##########################\n", " pass\n", "\n", " def net_input(self, X):\n", " \"\"\"Calculate net input\"\"\"\n", " return np.dot(X, self.weights[1:]) + self.weights[0]\n", " \n", " def predict(self, inputs):\n", " \"\"\"\n", " Beispiel des Funktionsaufrufes:\n", " >>> inputs = np.array([0, 1])\n", " >>> h = perceptron.predict(inputs) \n", " \"\"\"\n", " # Dein Code kommt hierhin:\n", " #bias\n", " return np.where(self.net_input(inputs) >= 0.0, 1, -1)\n", " ########################## \n", " pass\n", "\n", " def fit(self, training_inputs, labels):\n", " \"\"\"\n", " Beispiel des Funktionsaufrufs:\n", " >>> perceptron.fit(train_input, labels)\n", " \"\"\"\n", " # Dein Code kommt hierhin:\n", " for e in range(self.epochs):\n", " for xi, target in zip(training_inputs, labels):\n", " delta_w = self.eta * (target - self.predict(xi))\n", " self.weights[1:] += delta_w * xi\n", " self.weights[0] += delta_w\n", " ##########################\n", " pass\n", " \n", " def status(self):\n", " \"\"\"\n", " Die Methode status(...) gibt die aktuellen Gewichte aus.\n", "\n", " Beispiel des Funktionsaufrufes und der Ausgabe:\n", " >>> perceptron.status()\n", " Perceptron weights: [0. 1. 1.]\n", " \"\"\"\n", " print(\"Perceptron weights: \", self.weights)\n", " \n", " def getWeights(self):\n", " return self.weights" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**Aufgabe 2:** Wenden Sie das implementierte Perzeptron auf das `AND`, `OR` und `XOR` Problem im zweidimensionalen Raum an. Berechnen Sie anhand der gelernten Gewichte $\\mathbf{w}$ des Perzeptrons die Geradengleichung der Diskriminanzgeraden und plotten Sie diese zusammen mit den Datenpunkten des jeweiligen Problems." ] }, { "cell_type": "code", "execution_count": 22, "metadata": {}, "outputs": [ { "output_type": "stream", "name": "stdout", "text": [ "[-0.6 0.4 0.4]\n" ] }, { "output_type": "execute_result", "data": { "text/plain": [ "[]" ] }, "metadata": {}, "execution_count": 22 }, { "output_type": "display_data", "data": { "text/plain": "
", "image/svg+xml": "\n\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n", "image/png": "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\n" }, "metadata": { "needs_background": "light" } } ], "source": [ "# Beispiel mit AND\n", "train_input_AND = np.array([\n", " [0, 0],\n", " [0, 1],\n", " [1, 0],\n", " [1, 1]\n", " ])\n", "\n", "labels_AND = np.array([-1, -1, -1, 1])\n", "\n", "# Dein Code kommt hier hin:\n", "# Perceptron anlegen und trainieren\n", "perceptron_AND = Perceptron(2,100,0.1)\n", "perceptron_AND.fit(train_input_AND,labels_AND)\n", "\n", "# Geradengleichung berechnen und plotten\n", "weights = perceptron_AND.getWeights()\n", "print(weights)\n", "\n", "slope = -weights[1]/weights[2]\n", "offset = -weights[0]/weights[2]\n", "x_AND = np.linspace(0,1)\n", "y_AND = slope * x_AND + offset\n", "\n", "fig, ax = plt.subplots()\n", "ax.scatter(train_input_AND[(labels_AND==-1),0] , train_input_AND[(labels_AND==-1),1])\n", "ax.scatter(train_input_AND[(labels_AND==1),0] , train_input_AND[(labels_AND==1),1])\n", "plt.plot(x_AND,y_AND)" ] }, { "cell_type": "code", "execution_count": 25, "metadata": {}, "outputs": [ { "output_type": "stream", "name": "stdout", "text": [ "[-0.2 1. 1. ]\n" ] }, { "output_type": "execute_result", "data": { "text/plain": [ "[]" ] }, "metadata": {}, "execution_count": 25 }, { "output_type": "display_data", "data": { "text/plain": "
", "image/svg+xml": "\n\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n", "image/png": "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\n" }, "metadata": { "needs_background": "light" } } ], "source": [ "# Beispiel mit OR\n", "train_input_OR = np.array([\n", " [0, 0],\n", " [0, 1],\n", " [1, 0],\n", " [1, 1]\n", " ])\n", "\n", "labels_OR = np.array([-1, 1, 1, 1])\n", "\n", "# Dein Code kommt hier hin:\n", "# Perceptron anlegen und trainieren\n", "perceptron_OR = Perceptron(len(train_input_OR[0]),100,0.1)\n", "perceptron_OR.fit(train_input_OR,labels_OR)\n", "\n", "# Geradengleichung berechnen und plotten\n", "weights = perceptron_OR.getWeights()\n", "print(weights)\n", "\n", "slope = -weights[1]/weights[2]\n", "offset = -weights[0]/weights[2]\n", "x_OR = np.linspace(0,1)\n", "y_OR = slope * x_OR + offset\n", "\n", "fig, ax = plt.subplots()\n", "ax.scatter(train_input_OR[(labels_OR==-1),0] , train_input_OR[(labels_OR==-1),1])\n", "ax.scatter(train_input_OR[(labels_OR==1),0] , train_input_OR[(labels_OR==1),1])\n", "plt.plot(x_OR,y_OR)" ] }, { "cell_type": "code", "execution_count": 32, "metadata": {}, "outputs": [ { "output_type": "stream", "name": "stdout", "text": [ "[ 5.55111512e-17 -2.00000000e-01 5.55111512e-17]\n" ] }, { "output_type": "execute_result", "data": { "text/plain": [ "[]" ] }, "metadata": {}, "execution_count": 32 }, { "output_type": "display_data", "data": { "text/plain": "
", "image/svg+xml": "\n\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n", "image/png": "iVBORw0KGgoAAAANSUhEUgAAAXQAAAEDCAYAAAAlRP8qAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4xLjMsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy+AADFEAAAgAElEQVR4nO3deXRU9f3/8ecbCPsq+5IQ9h0Rg4BYl2otbtACfkv9asXaorZ+PV0ARS1S1KrY9qseV+pu6/IloICKuxSrlQqUbIR9DYR9CRBCtvfvj6S/E2OQAWZyZyavxzk5zsz9ZOZ1CXn55s5Nrrk7IiIS+2oFHUBERMJDhS4iEidU6CIicUKFLiISJ1ToIiJxQoUuIhInAi10M3vezHaZWWYIa883s+VmVmxm4yptKzGzFeUf8yOXWEQkegU9ob8IjAxx7RZgAvBqFduOuvug8o9RYcomIhJTAi10d18M7Kv4mJl1M7P3zGyZmX1mZr3L125y93SgNIisIiLRLugJvSqzgP9x97OBScCTIXxOfTNbamZfmtkPIhtPRCQ61Qk6QEVm1hg4F5htZv95uF4In5rk7tvNrCvwiZlluPv6SOUUEYlGUVXolP2L4YC7DzqZT3L37eX/3WBmi4CzABW6iNQoUXXIxd3zgI1mdjWAlTnz2z7HzFqYWb3y262AEcDKiIcVEYkyFuRvWzSz14ALgVbATuAe4BPgKaA9kAC87u4zzGwI8CbQAigAdrh7PzM7F3iGsjdLawGPuPtz1b0vIiJBC7TQRUQkfKLqkIuIiJy6wN4UbdWqlScnJwf18iIiMWnZsmV73L11VdsCK/Tk5GSWLl0a1MuLiMQkM9t8vG065CIiEidU6CIicUKFLiISJ1ToIiJxQoUuIhInVOgiInFChS4iEidU6CIiEVRcUsqTi9axYuuBiL9WtP36XBGRuLF6xyEmp6aRnnOQmy4oYlBi84i+ngpdRCTMikpKeebv63n047U0rZ/AE9cM5oqB7SP+uip0EZEwys7NY9LsNLK253HlwPb8flQ/WjYO5cJrp++EhW5m9YHFlF0Krg6Q6u73VFozAXgY2Fb+0OPu/mx4o4qIRK+iklKe/HQ9j3+6lmYNEnj62sGM7B/5qbyiUCb0Y8B33f2wmSUA/zCzhe7+ZaV1b7j7reGPKCIS3bK2H2TS7HSyc/MYdWYHfj+qHy0a1a32HCcsdC+7Asbh8rsJ5R+6KoaI1HiFxaU8/slanly0nhaN6jLrurO5tF+7wPKEdAzdzGoDy4DuwBPuvqSKZWPN7HxgDfBrd99axfNMBCYCJCUlnXJoEZGgZeQcZHJqGqt2HGLM4I5Mu7IvzRtW/1ReUUjnobt7ibsPAjoB55hZ/0pLFgDJ7j4Q+Ah46TjPM8vdU9w9pXXrKn8/u4hIVDtWXMIf31/ND578nP35hTx3fQp//q9BgZc5nORZLu5+wMwWASOBzAqP762w7C/AQ2FJJyISRdK2HmByahprdh5m3Nmd+N0VfWnWMCHoWP9fKGe5tAaKysu8AXAJlQrbzNq7e2753VFAdtiTiogEpKCohEc+Wsusxetp06Q+L9wwhIt6tQk61jeEMqG3B14qP45eC/g/d3/bzGYAS919PnCbmY0CioF9wIRIBRYRqU7Lt+xn8uw01u8+wvghidx5RR+a1o+eqbwiKzuJpfqlpKS4rikqItGqoKiEP3+4hmc/20C7pvV5YOxALugZ/Ht/ZrbM3VOq2qafFBURqWTZ5n1Mnp3Ohj1HuGZoElMv602TKJ3KK1Khi4iUO1pYwh8/WM3zn2+kQ7MG/O1nQxnRvVXQsUKmQhcRAZZs2Mvtc9LZtDef64Z15vbLetO4XmxVZGylFREJs/zCYma+t5oXv9hE4hkNeO3nwxjerWXQsU6JCl1Eaqwv1u/h9jnpbN13lAnnJjNlZC8a1o3dWozd5CIip+jIsWIeXLiKV77cTOeWDXlj4jCGdo3NqbwiFbqI1Cifr9vDlNR0th88yo3ndWHSpb1oULd20LHCQoUuIjXCoYIiHli4ileXbKFrq0ak3jycszufEXSssFKhi0jcW7xmN3fMSWdHXgETz+/Kb77Xk/oJ8TGVV6RCF5G4lVdQxB/eyeb1r7bSrXUjUm85l8FJLYKOFTEqdBGJS4tW72Lq3Ax25hVw8wXd+NUlPeJyKq9IhS4iceXg0SLue3sls5fl0KNNY576xQgGJTYPOla1UKGLSNz4ZNVOps7NYM/hQn55UTduu7gH9erE91RekQpdRGLegfxCZixYydx/b6NX2yb85ScpDOxUM6byilToIhLTPsjawV1vZbL/SCG3fbc7v/xu9xo1lVekQheRmLT/SCHTF2Qxb8V2+rRvygsThtC/Y7OgYwVKhS4iMee9zFzufiuTA/lF/OqSHvziwu7UrRPSNe/jmgpdRGLG3sPHuGd+Fm+n59KvQ1Ne/ulQ+nZoGnSsqBHKRaLrA4uBeuXrU939nkpr6gEvA2cDe4EfufumsKcVkRrrnfRcps3LJK+giN9+ryc3X9iNhNqayisKZUI/BnzX3Q+bWQLwDzNb6O5fVlhzI7Df3bub2XjgIeBHEcgrIjXMnsPHmDYvk3czdjCgYzNevXoYvdo1CTpWVDphoXvZVaQPl99NKP+ofGXp0cD08tupwONmZh7UFahFJOa5OwvSc7lnXiZHjpUwZWQvJn6nK3U0lR9XSMfQzaw2sAzoDjzh7ksqLekIbAVw92IzOwi0BPZUep6JwESApKSk00suInFr16ECfvdWJu9n7WRQYnMeHjeQHm01lZ9ISIXu7iXAIDNrDrxpZv3dPbPCEqvq06p4nlnALICUlBRN7yLyNe7OvBXbmb4gi/zCEu68vDc3nteV2rWqqhip7KTOcnH3A2a2CBgJVCz0HCARyDGzOkAzYF+4QopI/NuZV8Bdb2bwUfYuBic1Z+a4M+nepnHQsWJKKGe5tAaKysu8AXAJZW96VjQfuB74JzAO+ETHz0UkFO7OnOXbmLEgi2PFpdx9RR9uGNFFU/kpCGVCbw+8VH4cvRbwf+7+tpnNAJa6+3zgOeAVM1tH2WQ+PmKJRSRu7DhYwNS56Xy6ejdDklvw0NiBdG2tqfxUhXKWSzpwVhWPT6twuwC4OrzRRCReuTuzl+Zw7zsrKSop5Z6r+nL98GRqaSo/LfpJURGpVtsPHOWOuRksXrObc7qcwcyxA0lu1SjoWHFBhS4i1cLdef2rrdz/Tjal7swY3Y9rh3bWVB5GKnQRibic/flMnZvBZ2v3MLxrSx4aO5Cklg2DjhV3VOgiEjHuzqv/2sIf3skG4L4f9Oeac5I0lUeICl1EImLrvnxun5POF+v3cl73Vjw4dgCdWmgqjyQVuoiEVWmp89clm3lw4SpqmfHAmAGMH5KImabySFOhi0jYbN57hCmp6SzZuI/ze7bmgTED6Ni8QdCxagwVuoicttJS58UvNjHz/VUk1K7FzLEDuTqlk6byaqZCF5HTsnHPEaakpvHVpv18t3cb/vDDAbRrVj/oWDWSCl1ETklJqfPC5xt5+P3V1KtTiz9dfSZjBnfUVB4gFbqInLR1uw4zJTWN5VsOcEmfttz/w/60baqpPGgqdBEJWUmp8+xnG/jTh2toWLc2j44fxKgzO2gqjxIqdBEJydqdh5iUmk7a1gNc2rct9/2wP22aaCqPJip0EflWxSWlzPpsA498uJZG9Wrz2I/P4qqB7TWVRyEVuogc15qdh5g0O430nINc1r8dM0b3p3WTekHHkuNQoYvINxSVlPLM39fz6MdraVI/gSeuGcwVA9sHHUtOQIUuIl+TnZvHpNlpZG3P48qB7fn9qH60bKypPBao0EUEgMLiUp5ctI4nPl1HswYJPH3tYEb211QeS1ToIkLW9oNMmp1Odm4eowd1YPpV/WjRqG7QseQknbDQzSwReBloB5QCs9z90UprLgTmARvLH5rr7jPCG1VEwq2wuJTHP1nLk4vW06JRXWZddzaX9msXdCw5RaFM6MXAb919uZk1AZaZ2YfuvrLSus/c/crwRxSRSMjIOcjk1DRW7TjEmLM6Mu2qvjRvqKk8lp2w0N09F8gtv33IzLKBjkDlQheRGHCsuITHPl7L03/fQKvGdXnu+hQu7tM26FgSBid1DN3MkoGzgCVVbB5uZmnAdmCSu2dV8fkTgYkASUlJJ5tVRE5T2tYDTJqdxtpdhxk7uBPTruxLs4YJQceSMAm50M2sMTAH+JW751XavBzo7O6Hzexy4C2gR+XncPdZwCyAlJQUP+XUInJSCopKeOSjtcxavJ42Terzwg1DuKhXm6BjSZiFVOhmlkBZmf/N3edW3l6x4N39XTN70sxaufue8EUVkVOxfMt+Js9OY/3uI4wfksidV/ShaX1N5fEolLNcDHgOyHb3Px9nTTtgp7u7mZ0D1AL2hjWpiJyUgqIS/vzhGp79bAPtmtbn5Z+ew/k9WwcdSyIolAl9BHAdkGFmK8ofuxNIAnD3p4FxwC1mVgwcBca7uw6piARk6aZ9TElNZ8OeI1wzNImpl/WmiabyuBfKWS7/AL7116q5++PA4+EKJSKn5mhhCQ+/v5oXvthIh2YN+NvPhjKie6ugY0k10U+KisSJJRv2cvucdDbtzee6YZ25/bLeNK6nb/GaRF9tkRiXX1jMzPdW8+IXm0g8owGv/XwYw7u1DDqWBECFLhLD/rm+bCrfsi+fCecmM2VkLxrW1bd1TaWvvEgMOnKsmAcXruKVLzfTuWVD3pg4jKFdNZXXdCp0kRjz+bo93D4nnW0HjnLjeV2YdGkvGtStHXQsiQIqdJEYcaigiAcWruLVJVvo0qoRs28aTkryGUHHkiiiQheJAYvX7OaOOensyCvg59/pwm8v7UX9BE3l8nUqdJEolldQxP1vZ/PG0q10a92I1FvOZXBSi6BjSZRSoYtEqU9X7+LOuRnszCvg5gu68atLemgql2+lQheJMgfzi7j3nZWkLsuhR5vGPPWLEQxKbB50LIkBKnSRKPJx9k7ufDODPYcL+eVF3bjt4h7Uq6OpXEKjQheJAgfyC5mxYCVz/72N3u2a8OxPhjCgU7OgY0mMUaGLBOyDrB3c9VYm+48UctvFPbj1ou7UrVMr6FgSg1ToIgHZf6SQ6QuymLdiO33aN+WFCUPo31FTuZw6FbpIAN7LzOXutzI5kF/Ery/pyS0XdtNULqdNhS5SjfYePsY987N4Oz2X/h2b8sqNQ+nTvmnQsSROqNBFqsk76blMm5dJXkERky7tyU0XdCOhtqZyCR8VukiE7Tl8jGnzMnk3YwcDOjbj1auH0atdk6BjSRwK5SLRicDLQDugFJjl7o9WWmPAo8DlQD4wwd2Xhz+uSOxwdxak53LPvEyOHCthysheTPxOV+poKpcICWVCLwZ+6+7LzawJsMzMPnT3lRXWXAb0KP8YCjxV/l+RGmnXoQJ+91Ym72ft5MzE5vxx3EB6tNVULpEVykWic4Hc8tuHzCwb6AhULPTRwMvu7sCXZtbczNqXf65IjeHuzFuxnekLssgvLGHqZb258bwumsqlWpzUMXQzSwbOApZU2tQR2Frhfk75Y18rdDObCEwESEpKOrmkIlFuZ14Bd72ZwUfZuxic1JyZ486ke5vGQceSGiTkQjezxsAc4Ffunld5cxWf4t94wH0WMAsgJSXlG9tFYpG7M2f5NmYsyOJYcSl3X9GHG0Z0oXatqr4tRCInpEI3swTKyvxv7j63iiU5QGKF+52A7acfTyS67ThYwNS56Xy6ejdDklvw0NiBdG2tqVyCEcpZLgY8B2S7+5+Ps2w+cKuZvU7Zm6EHdfxc4pm7M3tZDve+vZKiklKmXdmXCecmU0tTuQQolAl9BHAdkGFmK8ofuxNIAnD3p4F3KTtlcR1lpy3eEP6oItFh+4Gj3DE3g8VrdnNOlzOYOXYgya0aBR1LJKSzXP5B1cfIK65x4JfhCiUSjdyd17/ayv3vZFPqzozR/bh2aGdN5RI19JOiIiHI2Z/P1LkZfLZ2D8O7tmTmuIEkntEw6FgiX6NCF/kWpaXOq//awgPvZgNw7w/689/nJGkql6ikQhc5jq378rl9TjpfrN/Led1b8eDYAXRqoalcopcKXaSS0lLnr0s28+DCVdQy44ExAxg/JJGyE75EopcKXaSCzXuPMCU1nSUb93F+z9Y8MGYAHZs3CDqWSEhU6CKUTeUvfrGJh99fTZ3axsyxA7k6pZOmcokpKnSp8TbuOcKU1DS+2rSfi3q15g9jBtC+maZyiT0qdKmxSkqdFz7fyMPvr6ZenVr86eozGTO4o6ZyiVkqdKmR1u8+zOTZaSzfcoBL+rTh/h8OoG3T+kHHEjktKnSpUUpKnWc/28CfPlxDg4TaPPKjQYwe1EFTucQFFbrUGGt3HmJyajorth7g0r5tue+H/WnTRFO5xA8VusS94pJSnlm8gUc/WkujerV57MdncdXA9prKJe6o0CWurd5xiMmpaaTnHOTyAe34/aj+tG5SL+hYIhGhQpe4VFRSytOL1vPYJ2tpWj+BJ64ZzBUD2wcdSySiVOgSd7Jz85g0O42s7XlcdWYHpl/Vl5aNNZVL/FOhS9woLC7lyUXrePyTdTRvmMDT1w5mZH9N5VJzqNAlLmRuO8jk1HSyc/P4waAO3HNVP1o0qht0LJFqpUKXmFZYXMrjn6zlyUXradGoLrOuO5tL+7ULOpZIIEK5SPTzwJXALnfvX8X2C4F5wMbyh+a6+4xwhhSpSkbOQSanprFqxyHGDO7ItCv70ryhpnKpuUKZ0F8EHgde/pY1n7n7lWFJJHICx4pLeOzjtTz99w20bFSX565P4eI+bYOOJRK4UC4SvdjMkiMfReTE0rYeYHJqGmt2Hmbc2Z343RV9adYwIehYIlEhXMfQh5tZGrAdmOTuWWF6XhEACopKeOSjtcxavJ42Terzwg1DuKhXm6BjiUSVcBT6cqCzux82s8uBt4AeVS00s4nARICkpKQwvLTUBMu37Gfy7DTW7z7C+CGJ3HlFH5rW11QuUlmt030Cd89z98Plt98FEsys1XHWznL3FHdPad269em+tMS5gqIS/vBuNuOe+oKjhSW89NNzeHDsQJW5yHGc9oRuZu2Ane7uZnYOZf+T2HvayaRGW7ppH1NS09mw5wjXDE1i6mW9aaIiF/lWoZy2+BpwIdDKzHKAe4AEAHd/GhgH3GJmxcBRYLy7e8QSS1w7WljCw++v5oUvNtKhWQP+9rOhjOhe5T/4RKSSUM5y+fEJtj9O2WmNIqflXxv3MTk1jc1787luWGduv6w3jevpZ99EQqXvFglcfmExM99bzYtfbCLxjAa8+vOhnNtNU7nIyVKhS6C+WL+H2+eks3XfUSacm8zk7/eikaZykVOi7xwJxJFjxTy4cBWvfLmZzi0b8sbEYQzt2jLoWCIxTYUu1e7zdWVT+bYDR7nxvC5MurQXDerWDjqWSMxToUu1OVRQxAMLV/Hqki10bdWI2TcNJyX5jKBjicQNFbpUi8VrdnPHnHR25BUw8fyu/OZ7PamfoKlcJJxU6BJReQVF3P92Nm8s3Uq31o1IveVcBie1CDqWSFxSoUvEfLp6F3fOzWBnXgE3X9CNX13SQ1O5SASp0CXsDuYXce87K0ldlkOPNo156hcjGJTYPOhYInFPhS5h9XH2Tu58M4M9hwu59aLu/M/F3alXR1O5SHVQoUtYHMgvZMaClcz99zZ6tW3Csz8ZwoBOzYKOJVKjqNDltH2QtYO73spk/5FCbru4B7de1J26dU77NzOLyElSocsp23+kkOkLspi3Yjt92jflhQlD6N9RU7lIUFTockrey8zl7rcyOZBfxK8v6cktF3bTVC4SMBW6nJS9h48xbX4W76Tn0q9DU17+6VD6dmgadCwRQYUuIXJ33snIZdq8LA4VFDHp0p7cdEE3EmprKheJFip0OaHdh44xbV4mCzN3MKBjM/549TB6tWsSdCwRqUSFLsfl7sxP2870+VkcOVbClJG9mPidrtTRVC4SlVToUqVdhwq4+81MPli5kzMTm/PHcQPp0VZTuUg0C+Ui0c8DVwK73L1/FdsNeBS4HMgHJrj78nAHlerh7ry1YhvT56/kaFEJUy/rzY3nddFULhIDQpnQX6TsItAvH2f7ZUCP8o+hwFPl/5UYszOvgLvezOCj7F0MTmrOzHFn0r1N46BjiUiITljo7r7YzJK/Zclo4GV3d+BLM2tuZu3dPTdMGSXC3J05y7cxY0EWx4pLufuKPtwwogu1a1nQ0UTkJITjGHpHYGuF+znlj32j0M1sIjARICkpKQwvLadrx8ECps5N59PVuxmS3IKZ486kS6tGQccSkVMQjkKvaozzqha6+yxgFkBKSkqVa6R6uDuzl+Vw79srKSop5Z6r+nL98GRqaSoXiVnhKPQcILHC/U7A9jA8r0TI9gNHuWNuBovX7OacLmcwc+xAkjWVi8S8cBT6fOBWM3udsjdDD+r4eXRyd17/aiv3v5NNqTu/H9WP64Z11lQuEidCOW3xNeBCoJWZ5QD3AAkA7v408C5lpyyuo+y0xRsiFVZOXc7+fKbOzeCztXsY3rUlD40dSFLLhkHHEpEwCuUslx+fYLsDvwxbIgmr0lLn1X9t4YF3swG47wf9ueacJE3lInFIPykax7buy2dKajr/3LCX87q34sGxA+jUQlO5SLxSoceh0lLnr0s28+DCVdQy44ExAxg/JJGyH+oVkXilQo8zm/ceYUpqOks27uP8nq15YMwAOjZvEHQsEakGKvQ4UVrqvPjFJma+v4qEWrWYOXYgV6d00lQuUoOo0OPAht2HmZKaztLN+7moV2v+MGYA7ZtpKhepaVToMayk1Hnh8408/P5q6tWpxR+vPpOxgztqKhepoVToMWrdrsNMSU1j+ZYDXNKnDff/cABtm9YPOpaIBEiFHmNKSp1nP9vAnz5cQ8O6tXnkR4MYPaiDpnIRUaHHkrU7DzEpNZ20rQe4tG9b7vthf9o00VQuImVU6DGguKSUZxZv4NGP1tKoXm0e+/FZXDWwvaZyEfkaFXqUW73jEJNT00jPOcjlA9oxY3R/WjWuF3QsEYlCKvQoVVRSyjN/X8+jH6+laf0EnrhmMFcMbB90LBGJYir0KJSdm8ek2Wlkbc/jqjM7MP2qvrTUVC4iJ6BCjyKFxaU8uWgdj3+yjuYNE3j62sGM7K+pXERCo0KPEpnbDjI5NZ3s3DxGD+rA9Kv60aJR3aBjiUgMUaEHrLC4lMc/WcuTi9bTolFdZl13Npf2axd0LBGJQSr0AGXkHGRyahqrdhxizOCOTLuyL80baioXkVOjQg/AseISHvt4LU//fQOtGtfluetTuLhP26BjiUiMqxXKIjMbaWarzWydmd1RxfYJZrbbzFaUf/ws/FHjw4qtB7jysX/wxKfrGXNWRz749QUqcxEJi1AuEl0beAL4HpADfGVm8919ZaWlb7j7rRHIGBcKikr434/W8JfFG2jbtD4v3DCEi3q1CTqWiMSRUA65nAOsc/cNAGb2OjAaqFzochzLNu9nSmoa63cfYfyQRO68og9N6ycEHUtE4kwohd4R2Frhfg4wtIp1Y83sfGAN8Gt331p5gZlNBCYCJCUlnXzaGFNQVMKfPljNs//YSIdmDXj5p+dwfs/WQccSkTgVSqFX9RugvNL9BcBr7n7MzG4GXgK++41Pcp8FzAJISUmp/BxxZemmfUxJTWfDniP899Ak7risN000lYtIBIVS6DlAYoX7nYDtFRe4+94Kd/8CPHT60WLT0cISHn5/NS98UTaV/+1nQxnRvVXQsUSkBgil0L8CephZF2AbMB64puICM2vv7rnld0cB2WFNGSOWbNjL7XPS2bQ3n+uGdeb2y3rTuJ7ODBWR6nHCtnH3YjO7FXgfqA087+5ZZjYDWOru84HbzGwUUAzsAyZEMHPUyS8sZuZ7q3nxi00kntGA134+jOHdWgYdS0RqGHMP5lB2SkqKL126NJDXDqd/ri+byrfsy2fCuclMGdmLhnU1lYtIZJjZMndPqWqbmucUHTlWzIMLV/HKl5vp3LIhb0wcxtCumspFJDgq9FPw+bo93D4nnW0HjnLjeV2YdGkvGtStHXQsEanhVOgn4VBBEQ8sXMWrS7bQpVUjZt80nJTkM4KOJSICqNBDtnjNbqbOzSD34FEmnt+V33yvJ/UTNJWLSPRQoZ9AXkERf3gnm9e/2kq31o1IveVcBie1CDqWiMg3qNC/xaLVu5g6N4OdeQXcfEE3fnVJD03lIhK1VOhVOJhfxL3vrCR1WQ492jTmqV+MYFBi86BjiYh8KxV6JR9n7+TONzPYc7iQX17Ujdsu7kG9OprKRST6qdDLHcgvZMaClcz99zZ6t2vCsz8ZwoBOzYKOJSISMhU68EHWDu56K5P9Rwq57eIe3HpRd+rWCeliTiIiUaNGF/q+I4VMn5/F/LTt9GnflBcmDKF/R03lIhKbamyhv5eZy91vZXLwaBG/vqQnv7ioGwm1NZWLSOyqcYW+9/Ax7pmfxdvpufTv2JRXbhxKn/ZNg44lInLaalShv5Oey7R5meQVFDH5+72YeH5XTeUiEjdqRKHvPnSMafMyWZi5g4GdmvHquGH0atck6FgiImEV14Xu7sxP2870+VkcOVbClJG9mPidrtTRVC4icShuC33XoQLufjOTD1buZFBicx4eN5AebTWVi0j8irtCd3fmrdjO9AVZ5BeWcOflvbnxvK7UrmVBRxMRiai4KvSdeQXc9WYGH2XvYnBSc2aOO5PubRoHHUtEpFqEVOhmNhJ4lLKLRD/r7g9W2l4PeBk4G9gL/MjdN4U36td9Nf8ZEpc/TBvfzU5a89fEe3glpw3Hiku5+4o+3DCii6ZyEQlcxa7aZa3ZOngyQ0bdFJHXOmGhm1lt4Ange0AO8JWZzXf3lRWW3Qjsd/fuZjYeeAj4USQCQ9kfUP9ld9PACtlBC+4smsCn686gd5MjPHXr9+nSqlGkXlpEJGQVuwqDduym2bK7+QoiUuqhnO5xDrDO3Te4eyHwOjC60prRwEvlt1OBi80sYuNx4vKHaWCFfFoyiO8dm8k/SwoU9lUAAAUhSURBVPtyT52XeL7wdpW5iESN/3RVRQ2skMTlD0fk9UI55NIR2Frhfg4w9Hhr3L3YzA4CLYE9FReZ2URgIkBSUtIpRoY2vhsMkm0Hg2utZUadF+lcaxelrkMsIhI9/tNV33x8zzcfDINQJvSqWtJPYQ3uPsvdU9w9pXXr1qHkq9IuK/vcLrV28FLdmXSutav88Van/JwiIuH2n6765uOR6apQCj0HSKxwvxOw/XhrzKwO0AzYF46AVdk6eDJHve7XHjvqddk6eHKkXlJE5KRVd1eFUuhfAT3MrIuZ1QXGA/MrrZkPXF9+exzwibt/Y0IPlyGjbiLz7PvYQWtK3dhBazLPvi9i7xyLiJyK6u4qC6V3zexy4BHKTlt83t3vN7MZwFJ3n29m9YFXgLMom8zHu/uGb3vOlJQUX7p06WnvgIhITWJmy9w9paptIZ2H7u7vAu9WemxahdsFwNWnE1JERE6PfkuViEicUKGLiMQJFbqISJxQoYuIxImQznKJyAub7QY2h+GpWlHpJ1LjnPY3ftWkfQXt76nq7O5V/sRSYIUeLma29Hin8MQj7W/8qkn7CtrfSNAhFxGROKFCFxGJE/FQ6LOCDlDNtL/xqybtK2h/wy7mj6GLiEiZeJjQRUQEFbqISNyImUI3s5FmttrM1pnZHVVsr2dmb5RvX2JmydWfMnxC2N/fmNlKM0s3s4/NrHMQOcPlRPtbYd04M3Mzi9nT3ULZVzP7r/Kvb5aZvVrdGcMphL/LSWb2qZn9u/zv8+VB5AwHM3vezHaZWeZxtpuZPVb+Z5FuZoPDGsDdo/6Dsl/bux7oCtQF0oC+ldb8Ani6/PZ44I2gc0d4fy8CGpbfviXe97d8XRNgMfAlkBJ07gh+bXsA/wZalN9vE3TuCO/vLOCW8tt9gU1B5z6N/T0fGAxkHmf75cBCyq7yNgxYEs7Xj5UJPeouVB1hJ9xfd//U3fPL735J2ZWkYlUoX1+Ae4GZQEF1hguzUPb158AT7r4fwN13VXPGcAplfx1oWn67Gd+8IlrMcPfFfPvV2kYDL3uZL4HmZtY+XK8fK4Ve1YWqOx5vjbsXA/+5UHUsCmV/K7qRsv/rx6oT7q+ZnQUkuvvb1RksAkL52vYEeprZ52b2pZmNrLZ04RfK/k4HrjWzHMquu/A/1RMtECf7vX1SQrrARRQI24WqY0TI+2Jm1wIpwAURTRRZ37q/ZlYL+F9gQnUFiqBQvrZ1KDvsciFl//L6zMz6u/uBCGeLhFD298fAi+7+JzMbDrxSvr+lkY9X7SLaU7EyoUfdhaojLJT9xcwuAe4CRrn7sWrKFgkn2t8mQH9gkZltouzY4/wYfWM01L/L89y9yN03AqspK/hYFMr+3gj8H4C7/xOoT9kvsopHIX1vn6pYKfSou1B1hJ1wf8sPQTxDWZnH8jFWOMH+uvtBd2/l7snunkzZewaj3D0WL0obyt/ltyh70xsza0XZIZhvvUZvFAtlf7cAFwOYWR/KCn13taasPvOBn5Sf7TIMOOjuuWF79qDfFT6Jd48vB9ZQ9o75XeWPzaDsGxvK/hLMBtYB/wK6Bp05wvv7EbATWFH+MT/ozJHc30prFxGjZ7mE+LU14M/ASiCDsouuB547gvvbF/icsjNgVgCXBp35NPb1NSAXKKJsGr8RuBm4ucLX9onyP4uMcP891o/+i4jEiVg55CIiIiegQhcRiRMqdBGROKFCFxGJEyp0EZE4oUIXEYkTKnQRkTjx/wC7CNXoo0tMygAAAABJRU5ErkJggg==\n" }, "metadata": { "needs_background": "light" } } ], "source": [ "# Beispiel mit XOR\n", "train_input_XOR = np.array([\n", " [0, 0],\n", " [0, 1],\n", " [1, 0],\n", " [1, 1]\n", " ])\n", "\n", "labels_XOR = np.array([-1, 1, 1, -1])\n", "\n", "# Dein Code kommt hier hin:\n", "# Perceptron anlegen und trainieren\n", "perceptron_XOR = Perceptron(len(train_input_XOR[0]),100,0.1)\n", "perceptron_XOR.fit(train_input_XOR,labels_XOR)\n", "\n", "# Geradengleichung berechnen und plotten\n", "weights = perceptron_XOR.getWeights()\n", "print(weights)\n", "\n", "slope = -weights[1]/weights[2]\n", "offset = -weights[0]/weights[2]\n", "x_XOR = np.linspace(0,1)\n", "y_XOR = slope * x_XOR + offset\n", "\n", "fig, ax = plt.subplots()\n", "ax.scatter(train_input_XOR[(labels_XOR==-1),0] , train_input_XOR[(labels_XOR==-1),1])\n", "ax.scatter(train_input_XOR[(labels_XOR==1),0] , train_input_XOR[(labels_XOR==1),1])\n", "plt.plot(x_XOR,y_XOR)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**Aufgabe 3:** Warum wird im Perzeptron der Bias $x_0$ benötigt beziehungsweise wieso werden bei $n$ Merkmalen ($x_1, \\ldots, x_n$), $n+1$ Gewichte ($w_0, \\ldots, w_n$) benötigt? " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**Antwort:**\n", "Das Bias stellt einen Schwellwert dar. \n", "Die Summe der Produkte von Eingabewerten und ihren Gewichtungen müssen diesen Schwellwert überschreiten, damit das Perzepton einen Effekt hat." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**Aufgabe 4:** Wenden Sie das Perzeptron auf den Iris-Datensatz der letzten Übung an.\n", "Wählen Sie dazu wieder zwei Merkmale und zwei Zielklassen des Datensatzes. Wie gut funktioniert Ihr Perzeptron?\n" ] }, { "cell_type": "code", "execution_count": 20, "metadata": {}, "outputs": [ { "output_type": "display_data", "data": { "text/plain": "
", "image/svg+xml": "\n\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n", "image/png": "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\n" }, "metadata": { "needs_background": "light" } } ], "source": [ "# Hier wird der Iris-Datensatz geladen und vorbereitet (siehe letzte Übung)\n", "\n", "# Datensatz laden\n", "names = [\"sepal-length\", \"sepal-width\", \"petal-length\", \"petal-width\", \"class\"]\n", "iris_data = pd.read_csv(\"iris.csv\", names = names)\n", "\n", "# Klassen auswählen (Bei Bedarf ändern)\n", "iris_data = iris_data.loc[lambda x: x['class'] != 'Iris-setosa']\n", "\n", "# Merkmale auswählen (Bei Bedarf ändern)\n", "iris_features = ['petal-length', 'petal-width']\n", "X = iris_data[iris_features]\n", "\n", "# Pandas-Datenformat in reine Liste umwandeln\n", "X = X.values\n", "\n", "# Label vorbereiten\n", "from sklearn.preprocessing import LabelEncoder\n", "lb_make = LabelEncoder()\n", "iris_data[\"class_code\"] = lb_make.fit_transform(iris_data[\"class\"])\n", "y = iris_data.class_code\n", "# Pandas-Datenformat in reine Liste umwandeln\n", "y = y.values\n", "# Die Signum-Funktion unseres Perzeptrons benötigt die Label -1, 1\n", "y[y==0] = -1\n", " \n", "# Trainings- und Testdatensplit\n", "from sklearn.model_selection import train_test_split\n", "X_train, X_test, y_train, y_test = (\n", " train_test_split(X, y, test_size=.2, random_state=np.random.seed(42)))\n", "\n", "# Scatterplot der ausgewählten Merkmale und Klie das Perzeptron auf das Problem der Banknotenklassifizierung der letzten Übung an. Wählen und berechnen Sie dafür wieder zwei geeignete Merkmale der Trainingsbanknoten (Momentenberechnung auf den Farbkanälen mit `banknotes[i].compute_feature(moment, color)`). Mit welcher Genauigkeit (engl. *accuracy*) werden die Testbanknoten klassifiziert? Wie sind die erreichten Ergebnisse des Perzeptrons im Vergleich zum linearen Klassifikator der letzten Übung zu bewerten?assen\n", "fig, ax = plt.subplots()\n", "ax.scatter(X[(y==-1),0] , X[(y==-1),1])\n", "ax.scatter(X[(y==1),0] , X[(y==1),1])\n", "ax.set(xlabel = iris_features[0], ylabel = iris_features[1])\n", "plt.show()" ] }, { "cell_type": "code", "execution_count": 37, "metadata": {}, "outputs": [ { "output_type": "stream", "name": "stdout", "text": [ "[-22.2 1.9 8. ]\n" ] }, { "output_type": "display_data", "data": { "text/plain": "
", "image/svg+xml": "\n\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n", "image/png": "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\n" }, "metadata": { "needs_background": "light" } } ], "source": [ "# Perzeptron auf Iris-Datensatz trainieren und anwenden\n", "# Dein Code kommt hierhin:\n", "percepton_iris = Perceptron(2, 100, 0.1)\n", "percepton_iris.fit(X_train,y_train)\n", "\n", "weights = percepton_iris.getWeights()\n", "print(weights)\n", "\n", "slope = -weights[1]/weights[2]\n", "offset = -weights[0]/weights[2]\n", "x_iris = np.linspace(min(X_train[0]),max(X_train[0]))\n", "y_iris = slope * x_iris + offset\n", "\n", "fig, ax = plt.subplots()\n", "ax.scatter(X[(y==-1),0] , X[(y==-1),1])\n", "ax.scatter(X[(y==1),0] , X[(y==1),1])\n", "ax.set(xlabel = iris_features[0], ylabel = iris_features[1])\n", "plt.plot(x_iris, y_iris)\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**Aufgabe 5:** Welche(n) Nachteil(e) könnte die symmetrische Aktualisierungsfunktion in Bezug\n", "auf das Anlernen der Gewichte haben?" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**Antwort:** \n", "- Ausreißer haben einen großen Effekt auf die Gewichtung\n", "- Die Lernfähigkeit lässt nach" ] } ], "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.7.6-final" } }, "nbformat": 4, "nbformat_minor": 2 }