{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "
\n", "\n", "

Supervised ML Modelle: K-Nearest-Neighbour

\n", "

DSAI

\n", "

Jakob Eggl

\n", "\n", "
\n", " \"Logo\"\n", "
\n", " © 2024/25 Jakob Eggl. Nutzung oder Verbreitung nur mit ausdrücklicher Genehmigung des Autors.\n", "
\n", "
\n", "
" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Teile (adaptiert) von *AI Inside Seminar KI Mag. Otto Reichel*!" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# k-Nearest Neighbour Klassifizierer" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Wir sehen uns nun den $k$-Nearest Neighbor *Klassifizierer* an! Dieser ist ein sehr einfacher und leicht verständlicher Machine Learning Algorithmus, welcher aber dennoch in vielen Fällen eine erstaunlich gute Performance liefert." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Der *kNN*-Klassifizierer $\\ldots$\n", "* $\\ldots$ wird bei uns verwendet zur *Klassifizierung*\n", "* $\\ldots$ wird durch sehr wenige **Hyperparameter** parametrisiert ($k$: Die Anazahl der Nachbarn; $d(x,y)$ Funktion zur Distanzmessung zwischen Datenpunkten $x$ und $y$.)\n", "* $\\ldots$ zieht zur Klassifizierung die Labels der nächsten Nachbarn in Betracht " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**Info:** Ein **Hyperparameter** ist ein Parameter, welcher am Anfang vom Benutzer (von uns) eingestellt wird und das Model bzw. ggf. den Lernvorgang parametrisiert." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Beschreibung des Algorithmus" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "![KNN-Classifier_for_k=3](../resources/knn_classifier.png)\n", "\n", "(von https://mlarchive.com/machine-learning/k-nearest-neighbor-knn-explained/)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Die Beschreibung dieses Models wird nun anhand von einem Beispiel erklärt." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Ein Beispiel als Erklärung" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Wir gehen davon aus, dass ein Datensatz über **Hunde** und **Pferde** vorliegen, von denen jeweils **Größe** und **Gewicht** bekannt ist. An Hand dieser beiden Eingangsfeatures soll klassifiziert werden, ob es sich um einen Hund oder ein Pferd handelt. Trägt man die Features in ein Diagramm ein so könnte sich das folgende Bild ergeben." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "![KNN_Hund_vs_Katze](../resources/knn_hund_vs_katze.png)\n", "\n", "(von AI Inside Seminar KI Mag. Otto Reichel)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Möchte man nun für einen neuen Datenpunkt $x=(a\\textrm{ [lbs]}, b\\textrm{ [ft]})$ feststellen, ob es sich um einen Hund oder ein Pferd handelt, kann man die $k$ nächsten Nachbarn betrachten. Gibt es unter diesen Nachbarn mehr Hunde, so wird der neue Datenpunkt als Hund klassifiziert, andernfalls als Pferd." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Dabei wird folgendermaßen vorgegangen:\n", "1) Man berechnet die Distanz von $x$ zu allen anderen gegebenen Datenpunkten\n", "2) Man sortiert die Punkte nach zunehmender Distanz zu $x$\n", "3) Man bestimmt unter den ersten $k$ der sortierten Punkte das am häufigsten auftretende Label. Dies ist nun auch das Label für den neuen Datenpunkt $x$. " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Zusammenfassend kann man also für den **Lernvorgang** und die **Vorhersage** folgendes sagen:\n", "\n", "Der Lernprozess (Trainingsphase) für den kNN-Klassifizierer ist sehr einfach und beinhaltet nur indirekt \"Lernen\".\n", "\n", "Die Trainingsdaten $X$ (samt Label $y$) werden im Model effizient gespeichert. Bei der Prediction von einem neuen Datenpunkt können so die nächsten Nachbarn schnell gefunden werden. Dies wird auch *Lazy Learning* genannt.\n", "\n", "Wie wird eine Vorhersage (Prediction) gemacht?\n", "\n", "* Je nach gewählter Abstandfunktion wird *der Abstand* zu den Datenpunkten *berechnet*.\n", "* Nun werden die Datenpunkte sortiert, sodass die Datenpunkte mit einem geringen Abstand am Anfang gereiht sind." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Die Wahl von $k$" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "![kNN_Choice_of_k_matters](../resources/knn_3_vs_7.png)\n", "\n", "(von https://ai.plainenglish.io/introduction-to-k-nearest-neighbors-knn-algorithm-e8617a448fa8)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Insgesamt ist die Wahl von $k$ frei wählbar. Es gibt aber trotzdem ein paar Dinge, die es zu beachten gibt!\n", "\n", "* Ein gerader Wert von $k$ könnte zu einem Gleichstand führen, in solchen Fällen wird entweder ein zufälliger Wert verwendet, oder nähere Nachbarn werden stärker gewichtet.\n", "* Es kann aber auch bei ungeradem $k$ ein Gleichstand entstehen. Beispiel: Labels 0, 1, 2 für Katze, Hund, Pferd. Nun verwenden wir $k=3$ und erhalten möglicherweise jedes Label einmal.\n", "* *Faustregel:* Beim ersten Durchlauf kann $k\\approx\\sqrt{\\vert X_{\\text{train}}\\vert}$ verwendet werden, wobei $\\vert X_{\\text{train}}\\vert$ die Anzahl der Datenpunkte im Trainingsset ist.\n", "* Falls *viele Ausreißer* und möglicherweise *Fehler* in den Daten vorhanden sind, ist ein *größerer Wert* für $k$ vorteilhaft, da dies dann diese Punkte etwas ausgleicht, indem mehr \"normale\" Punkte in Betracht gezogen werden." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "![kNN_Choice_k_underfitting_overfitting](../resources/knn_overfitting_underfitting.png)\n", "\n", "(von https://medium.com/@jwbtmf/classifying-customer-churn-using-k-nearest-neighbour-supervised-machine-learning-algorithm-3254441ec7be)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Welcher dieser Fälle beschreibt **overfitting** und welcher dieser Fälle beschreibt **underfitting**?" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Die Wahl der Distanz Funktion" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Neben dem Wert $k$ als Anzahl der Nachbarn kann man auch entscheiden, welche Funktion als Distanzfunktion verwendet werden soll.\n", "\n", "Für numerische Features wird standardmäßig die **euklidische Distanz** $d(x,y)$ verwendet. Sie berechnet sich genauso wie der Betrag von einem Vektor. Für Daten mit $n$ Features, haben wir also\n", "\\begin{equation*}\n", " d(x,y) = \\sqrt{(x_1-y_1)^2 + (x_2-y_2)^2 + \\ldots + (x_n-y_n)^2}.\n", "\\end{equation*}\n", "Hier ist $y$ der neue Datenpunkt und $x$ steht für einen Datenpunkt in den (Trainings)daten!\n", "\n", "Je nach Anwendungsfall kann aber auch eine andere Distanzfunktion verwendet werden. So gibt es auch zum Beispiel noch die **Manhattan**-Distanz.\n", "\n", "Die Manhattan Distanz ist folgendermaßen definiert\n", "\\begin{equation*}\n", " d(x,y) = \\vert x_1-y_1 \\vert + \\vert x_2 - y_2 \\vert + \\ldots + \\vert x_n - y_n \\vert.\n", "\\end{equation*}" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Befinden sich in den Daten **kateogrische** (categorical) Features oder **ordinale** **Features**, so muss eine andere Distanzfunktion (zum Beispiel *Hamming* (Referat?)) verwendet werden, *oder* es werden die Daten zuvor mit einem Ordinalencoder oder einem OneHot-Encoder encodiert." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Normalisieren der Daten" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Da beim Berechnen der Distanz die Größenordnung einen riesen Einfluss hat, müssen wir vor der Verwendung eines kNN-Klassifizierers sicherstellen, dass die Daten einen vernünftigen Bereich haben (alle in etwa den selben Bereich).\n", "\n", "Warum ist das so?\n", "\n", "Wir können die Daten alle auf einen gleichen Bereich bringen, indem wir eine $z$-score Normalisierung machen.\n", "\n", "Zur Wiederholung, die $z$-score Normalisierung eines Features $X$ sieht folgendermaßen aus\n", "\\begin{equation*}\n", " z_i = \\frac{x_i-\\mu}{\\sigma},\n", "\\end{equation*}\n", "wobei $\\mu$ und $\\sigma$ der Mittelwert bzw. die Standardabweichung des Features $X$ sind. $z_i$ ist der standardisierte Wert vom ursprünglichen Wert $x_i$ und $i$ steht für den Index des Datenpunktes." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Wäre eine Min-Max Normalisierung auch möglich?" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Vorteile und Nachteile von kNN" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**Vorteile**:\n", "* Sehr einfach\n", "* Extrem gut nachvollziehbar\n", "* Funktioniert in vielen Fällen sehr gut\n", "* Nur wenige Parameter ($k$ und Distanzfunktion)\n", "\n", "**Nachteile**:\n", "* Performance nimmt mit der Anzahl der Features ab (In hohen Dimensionen sind alle Punkte etwa gleich weit voneinander entfernt. Dieses Phänomen nennt man **Curse of Dimensionality**)\n", "* Stark abhängig von gewählter Distanzfunktion und gewähltem $k$\n", "* Ohne Normalisieren ($z$-Score Normalisierung) würden die einzelnen Features falsch (sprich stark unterschiedlich) gewichtet werden\n", "* Wird bei großen Datasets sehr rechenintensiv und somit langsam" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**Info:** Als Beispiel für den **Curse of Dimensionality** kann man sich folgendes vorstellen: \n", "\n", "Annahme du vergleichst die Attribute: Wohnadresse, Name des Vaters, Name der Mutter und Telefonnummer mit deinem Bruder/deiner Schwester. In diesem Fall seit du und dein/deine Bruder/Schwester sehr ähnlich. Bis auf Telefonnummer sind alle Attribute gleich und im Vergleich zu anderen Personen (zum Beispiel in der Klasse) seit ihr beide euch am nächsten. Nun erweitern wir die gegebenen Features pro Person mit den Features: \"Lieblingsfarbe, Alter, Schuhgröße, Ausbildung, Name, Einkommen, $\\ldots$ etc.\". Mit diesen Features sind plötzlich du und deine Schwester/dein Bruder nicht mehr wirklich ähnlich. Genauer gesagt gibt es jetzt genügend weitere Personen die gleich viele Attribute gleich/ähnlich haben." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Tipps und Tricks" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "* Wir können bei nicht allzu großen Datasets auch mehrere $k$-Werte nacheinander probieren und dann den besten Wert verwenden\n", "* Features müssen normalisiert werden ($z$-score normalisiert (=standardisiert))\n", "* Dimension verringern bei schlechter Performance (eventuell mit Korrelationsmatrix bzw. offensichtlich unbrauchbare Features zur Klassifikation)\n", "* Falls ein Label viel öfter vorkommt als ein anderes (unbalanciert), dann könnte man diese Nachbarn höher gewichten (kann in Python/Scikit-Learn einfach gemacht werden, indem ein zusätzlicher Wert übergeben wird.)\n", "* Die $k$ nächsten Nachbarn können auch verwendet werden, um die fehlenden Werte zu ersetzen. Sprich wenn zum Beispiel das Feature \"Alter\" fehlt, dann können wir die $k$ nächsten Datenpunkte ansehen und schauen, wie das Alter bei diesen Punkte ist. Anschließend können wir zum Beispiel den Durschnitt bilden." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## kNN in Python" ] }, { "cell_type": "code", "execution_count": 26, "metadata": {}, "outputs": [], "source": [ "import pandas as pd\n", "import numpy as np\n", "import matplotlib.pyplot as plt\n", "from sklearn.datasets import fetch_openml\n", "from sklearn.model_selection import train_test_split\n", "from sklearn.preprocessing import StandardScaler, LabelEncoder\n", "from sklearn.neighbors import KNeighborsClassifier\n", "from sklearn.metrics import accuracy_score" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ " id gender age hypertension heart_disease ever_married \\\n", "0 9046 Male 67.0 0 1 Yes \n", "1 51676 Female 61.0 0 0 Yes \n", "2 31112 Male 80.0 0 1 Yes \n", "3 60182 Female 49.0 0 0 Yes \n", "4 1665 Female 79.0 1 0 Yes \n", "... ... ... ... ... ... ... \n", "5105 18234 Female 80.0 1 0 Yes \n", "5106 44873 Female 81.0 0 0 Yes \n", "5107 19723 Female 35.0 0 0 Yes \n", "5108 37544 Male 51.0 0 0 Yes \n", "5109 44679 Female 44.0 0 0 Yes \n", "\n", " work_type Residence_type avg_glucose_level bmi smoking_status \\\n", "0 Private Urban 228.69 36.6 formerly smoked \n", "1 Self-employed Rural 202.21 NaN never smoked \n", "2 Private Rural 105.92 32.5 never smoked \n", "3 Private Urban 171.23 34.4 smokes \n", "4 Self-employed Rural 174.12 24.0 never smoked \n", "... ... ... ... ... ... \n", "5105 Private Urban 83.75 NaN never smoked \n", "5106 Self-employed Urban 125.20 40.0 never smoked \n", "5107 Self-employed Rural 82.99 30.6 never smoked \n", "5108 Private Rural 166.29 25.6 formerly smoked \n", "5109 Govt_job Urban 85.28 26.2 Unknown \n", "\n", " stroke \n", "0 1 \n", "1 1 \n", "2 1 \n", "3 1 \n", "4 1 \n", "... ... \n", "5105 0 \n", "5106 0 \n", "5107 0 \n", "5108 0 \n", "5109 0 \n", "\n", "[5110 rows x 12 columns]\n" ] } ], "source": [ "# Load dataset (Vehicle Silhouettes dataset)\n", "ds = pd.read_csv(\"../../_data/stroke.csv\") # ggf. etwas anders als unser bisheriges Dataset\n", "print(ds)\n", "ds = ds.dropna()\n", "y = ds.stroke\n", "X = ds.drop('stroke', axis=1)\n", "X = X.select_dtypes(include=[np.number])" ] }, { "cell_type": "code", "execution_count": 107, "metadata": {}, "outputs": [ { "data": { "application/vnd.microsoft.datawrangler.viewer.v0+json": { "columns": [ { "name": "index", "rawType": "int64", "type": "integer" }, { "name": "id", "rawType": "int64", "type": "integer" }, { "name": "age", "rawType": "float64", "type": "float" }, { "name": "hypertension", "rawType": "int64", "type": "integer" }, { "name": "heart_disease", "rawType": "int64", "type": "integer" }, { "name": "avg_glucose_level", "rawType": "float64", "type": "float" }, { "name": "bmi", "rawType": "float64", "type": "float" } ], "conversionMethod": "pd.DataFrame", "ref": "4a023f6d-2f15-4c73-bc34-1cc2357abf53", "rows": [ [ "0", "9046", "67.0", "0", "1", "228.69", "36.6" ], [ "2", "31112", "80.0", "0", "1", "105.92", "32.5" ], [ "3", "60182", "49.0", "0", "0", "171.23", "34.4" ], [ "4", "1665", "79.0", "1", "0", "174.12", "24.0" ], [ "5", "56669", "81.0", "0", "0", "186.21", "29.0" ], [ "6", "53882", "74.0", "1", "1", "70.09", "27.4" ], [ "7", "10434", "69.0", "0", "0", "94.39", "22.8" ], [ "9", "60491", "78.0", "0", "0", "58.57", "24.2" ], [ "10", "12109", "81.0", "1", "0", "80.43", "29.7" ], [ "11", "12095", "61.0", "0", "1", "120.46", "36.8" ], [ "12", "12175", "54.0", "0", "0", "104.51", "27.3" ], [ "14", "5317", "79.0", "0", "1", "214.09", "28.2" ], [ "15", "58202", "50.0", "1", "0", "167.41", "30.9" ], [ "16", "56112", "64.0", "0", "1", "191.61", "37.5" ], [ "17", "34120", "75.0", "1", "0", "221.29", "25.8" ], [ "18", "27458", "60.0", "0", "0", "89.22", "37.8" ], [ "20", "70630", "71.0", "0", "0", "193.94", "22.4" ], [ "21", "13861", "52.0", "1", "0", "233.29", "48.9" ], [ "22", "68794", "79.0", "0", "0", "228.7", "26.6" ], [ "23", "64778", "82.0", "0", "1", "208.3", "32.5" ], [ "24", "4219", "71.0", "0", "0", "102.87", "27.2" ], [ "25", "70822", "80.0", "0", "0", "104.12", "23.5" ], [ "26", "38047", "65.0", "0", "0", "100.98", "28.2" ], [ "28", "54827", "69.0", "0", "1", "195.23", "28.3" ], [ "30", "43717", "57.0", "1", "0", "212.08", "44.2" ], [ "31", "33879", "42.0", "0", "0", "83.41", "25.4" ], [ "32", "39373", "82.0", "1", "0", "196.92", "22.2" ], [ "33", "54401", "80.0", "0", "1", "252.72", "30.5" ], [ "34", "14248", "48.0", "0", "0", "84.2", "29.7" ], [ "35", "712", "82.0", "1", "1", "84.03", "26.5" ], [ "36", "47269", "74.0", "0", "0", "219.72", "33.7" ], [ "37", "24977", "72.0", "1", "0", "74.63", "23.1" ], [ "38", "47306", "58.0", "0", "0", "92.62", "32.0" ], [ "39", "62602", "49.0", "0", "0", "60.91", "29.9" ], [ "40", "4651", "78.0", "0", "0", "78.03", "23.9" ], [ "41", "1261", "54.0", "0", "0", "71.22", "28.5" ], [ "42", "61960", "82.0", "0", "1", "144.9", "26.4" ], [ "44", "7937", "60.0", "1", "0", "213.03", "20.2" ], [ "45", "19824", "76.0", "1", "0", "243.58", "33.6" ], [ "47", "47472", "58.0", "0", "0", "107.26", "38.6" ], [ "48", "35626", "81.0", "0", "0", "99.33", "33.7" ], [ "49", "36338", "39.0", "1", "0", "58.09", "39.2" ], [ "52", "59190", "79.0", "0", "1", "127.29", "27.7" ], [ "53", "47167", "77.0", "1", "0", "124.13", "31.4" ], [ "55", "25831", "63.0", "0", "1", "196.71", "36.5" ], [ "56", "38829", "82.0", "0", "0", "59.32", "33.2" ], [ "58", "58631", "73.0", "1", "0", "194.99", "32.8" ], [ "59", "5111", "54.0", "1", "0", "180.93", "27.7" ], [ "60", "10710", "56.0", "0", "0", "185.17", "40.4" ], [ "61", "55927", "80.0", "1", "0", "74.9", "22.2" ] ], "shape": { "columns": 6, "rows": 4909 } }, "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
idagehypertensionheart_diseaseavg_glucose_levelbmi
0904667.001228.6936.6
23111280.001105.9232.5
36018249.000171.2334.4
4166579.010174.1224.0
55666981.000186.2129.0
.....................
51041418013.000103.0818.6
51064487381.000125.2040.0
51071972335.00082.9930.6
51083754451.000166.2925.6
51094467944.00085.2826.2
\n", "

4909 rows × 6 columns

\n", "
" ], "text/plain": [ " id age hypertension heart_disease avg_glucose_level bmi\n", "0 9046 67.0 0 1 228.69 36.6\n", "2 31112 80.0 0 1 105.92 32.5\n", "3 60182 49.0 0 0 171.23 34.4\n", "4 1665 79.0 1 0 174.12 24.0\n", "5 56669 81.0 0 0 186.21 29.0\n", "... ... ... ... ... ... ...\n", "5104 14180 13.0 0 0 103.08 18.6\n", "5106 44873 81.0 0 0 125.20 40.0\n", "5107 19723 35.0 0 0 82.99 30.6\n", "5108 37544 51.0 0 0 166.29 25.6\n", "5109 44679 44.0 0 0 85.28 26.2\n", "\n", "[4909 rows x 6 columns]" ] }, "execution_count": 107, "metadata": {}, "output_type": "execute_result" } ], "source": [ "X" ] }, { "cell_type": "code", "execution_count": 108, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "(4909, 6)" ] }, "execution_count": 108, "metadata": {}, "output_type": "execute_result" } ], "source": [ "X.shape" ] }, { "cell_type": "code", "execution_count": 109, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "0 1\n", "2 1\n", "3 1\n", "4 1\n", "5 1\n", " ..\n", "5104 0\n", "5106 0\n", "5107 0\n", "5108 0\n", "5109 0\n", "Name: stroke, Length: 4909, dtype: int64" ] }, "execution_count": 109, "metadata": {}, "output_type": "execute_result" } ], "source": [ "y" ] }, { "cell_type": "code", "execution_count": 110, "metadata": {}, "outputs": [], "source": [ "le = LabelEncoder()\n", "y = le.fit_transform(y)" ] }, { "cell_type": "code", "execution_count": 111, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([1, 1, 1, ..., 0, 0, 0])" ] }, "execution_count": 111, "metadata": {}, "output_type": "execute_result" } ], "source": [ "y" ] }, { "cell_type": "code", "execution_count": 112, "metadata": {}, "outputs": [], "source": [ "scaler = StandardScaler()\n", "X_scaled = scaler.fit_transform(X)" ] }, { "cell_type": "code", "execution_count": 113, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([[-1.33465284, 1.07013796, -0.31806673, 4.38196829, 2.77769839,\n", " 0.98134488],\n", " [-0.28353855, 1.64656262, -0.31806673, 4.38196829, 0.0138418 ,\n", " 0.45926914],\n", " [ 1.10121139, 0.27201152, -0.31806673, -0.22820795, 1.48413156,\n", " 0.70120668],\n", " ...,\n", " [-0.82605376, -0.34875349, -0.31806673, -0.22820795, -0.50236926,\n", " 0.21733161],\n", " [ 0.02284987, 0.36069224, -0.31806673, -0.22820795, 1.37291993,\n", " -0.41934612],\n", " [ 0.36272572, 0.05030973, -0.31806673, -0.22820795, -0.45081569,\n", " -0.34294479]])" ] }, "execution_count": 113, "metadata": {}, "output_type": "execute_result" } ], "source": [ "X_scaled" ] }, { "cell_type": "code", "execution_count": 114, "metadata": {}, "outputs": [], "source": [ "X_train, X_test, y_train, y_test = train_test_split(X_scaled, y, test_size=0.2, random_state=42)" ] }, { "cell_type": "code", "execution_count": 115, "metadata": {}, "outputs": [], "source": [ "k_values = range(1, 31)\n", "accuracies = []" ] }, { "cell_type": "code", "execution_count": 116, "metadata": {}, "outputs": [], "source": [ "for k in k_values:\n", " knn = KNeighborsClassifier(n_neighbors=k)\n", " knn.fit(X_train, y_train)\n", " y_pred = knn.predict(X_test)\n", " accuracies.append(accuracy_score(y_test, y_pred))" ] }, { "cell_type": "code", "execution_count": 117, "metadata": {}, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAA18AAAIjCAYAAAD80aFnAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjkuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8hTgPZAAAACXBIWXMAAA9hAAAPYQGoP6dpAACAkElEQVR4nO3dd3hUVf7H8c+kd1qAkBBaQCItYJAiVVokijRFlF1CVFQEFWJFkWYBCwjLIqCr4IIoixRdXdBIR2lSpKNElB6kNwkhub8/5jcDQwqTkJlJZt6v58mTmTtnzvnee+YO+XLOPddkGIYhAAAAAIBDebk6AAAAAADwBCRfAAAAAOAEJF8AAAAA4AQkXwAAAADgBCRfAAAAAOAEJF8AAAAA4AQkXwAAAADgBCRfAAAAAOAEJF8AAAAA4AQkX4CbGTlypEwmk44fP+7qUIpEtWrV1K9fP5e1369fP1WrVs1m2/nz5/Xoo48qIiJCJpNJgwcP1u+//y6TyaQZM2a4JE5HWrx4sRo2bKiAgACZTCadPn3a1SEBAFAikXwBHqpfv34ymUxq0KCBDMPI8brJZNKgQYOszy3Jhclk0rx583KUL2jSl5aWpscff1w1atRQQECAwsLC1KJFC02cOFF//fVX4XfMCd58803NmDFDAwYM0MyZM/X3v//dqe1f2xcmk0ne3t6qUqWKunfvri1bthRpWydOnFCvXr0UGBioyZMna+bMmQoODi7SNlD0LOej5cfLy0uVKlXSPffco7Vr17o6vHz973//08iRIwv8vgULFqhz584KDw+Xn5+fIiMj1atXLy1durTogywmrv8u8PX1VXh4uO644w69/PLL2r9/f6HrPnz4sEaOHFnk3ymFVdjPBVDc+Lg6AACutW3bNs2fP189e/a0+z2jR49Wjx49ZDKZCtXmN998o/vvv1/+/v7q27ev6tWrp8uXL2v16tV6/vnntWPHDn3wwQeFqruoffjhh8rOzrbZtnTpUjVr1kwjRoywbjMMQ3/99Zd8fX2dFtuDDz6oxMREZWVladeuXZoyZYoWLVqktWvXqmHDhkXSxoYNG3Tu3Dm99tpr6tChQ5HUCeeZMmWKQkJClJ2drQMHDujDDz9U69attX79+iL7jBS1//3vf5o8ebLdf2gbhqGHH35YM2bMUKNGjZSSkqKIiAgdOXJECxYsUPv27fXDDz/ojjvucGzgLmT5LsjOztapU6e0YcMGTZgwQRMnTtRHH32k3r17F7jOw4cPa9SoUapWrVqx+KwU9HMBFFckX4AHCwwMVHR0dIGSqYYNG2rLli1asGCBevToUeA29+3bp969e6tq1apaunSpKlWqZH1t4MCB2rt3r7755psC1+souSVTx44dU506dWy2mUwmBQQEFFm7Fy5cuOEI02233aa//e1v1uctWrTQvffeqylTpmjatGlF0v6xY8ckSaVLl76p+nKrG4533333KTw83Pq8W7duqlevnubOnZvvH9SXLl2Sn5+fvLyK/wSZcePGacaMGRo8eLDGjx9v8z32yiuvaObMmfLxKbl/7hTmu0CS/vjjD3Xq1ElJSUm69dZbFRcX58gwAdip+H+rArhpf/zxh2rWrKl69eopPT3dut3Ly0vDhg3T1q1btWDBArvq6t27t2655RaNHj061+mKN/L222/r/Pnz+uijj2wSL4uaNWvqmWeeyfP9J0+e1HPPPaf69esrJCREYWFh6ty5s37++eccZSdNmqS6desqKChIZcqUUePGjTV79mzr6+fOndPgwYNVrVo1+fv7q0KFCurYsaM2bdpkLXPtNV/Lly+XyWTSvn379M0331in+vz+++95XvO1e/du3XfffSpbtqwCAgLUuHFjffXVVzZlZsyYIZPJpBUrVujJJ59UhQoVVLlyZXsOp4127dpJMie4FuvWrdNdd92lUqVKKSgoSG3atNEPP/xg8z7LFLWdO3fqoYceUpkyZdSyZUu1bdtWSUlJkqTbb79dJpPJ5vq7uXPnKj4+XoGBgQoPD9ff/vY3HTp0yKbufv36KSQkRGlpaUpMTFRoaKj69Okj6erU1rlz56pOnToKDAxU8+bNtW3bNknStGnTVLNmTQUEBKht27b6/fffbepetWqV7r//flWpUkX+/v6Kjo7WkCFDckxbtcRw6NAhdevWTSEhISpfvryee+45ZWVl2ZTNzs7WxIkTVb9+fQUEBKh8+fK666679NNPP9mUmzVrlnXfy5Ytq969e+vAgQP2dJM2b96szp07KywsTCEhIWrfvn2OqYCWz8QPP/yglJQUlS9fXsHBwerevbv+/PNPu9rJTUREhCTZJCOWz/Xnn3+uYcOGKSoqSkFBQTp79qwk+z5Df/zxh5588knVrl1bgYGBKleunO6///4cfZaZmalRo0apVq1aCggIULly5dSyZUulpqZKMvfV5MmTJclmOl1e/vrrL40ZM0axsbF69913cy3797//XU2aNJFk//eH5Zj85z//0RtvvKHKlSsrICBA7du31969e3O0sW7dOiUmJqpMmTIKDg5WgwYNNHHiRJsyzvwukKSqVatqxowZunz5st5++23rdnuOwfLly3X77bdLkpKTk639YPl+s/fcO3r0qJKTk1W5cmX5+/urUqVK6tq1a47PxaJFi9SqVSsFBwcrNDRUd999t3bs2GF9vaCfC6A4K7n/FQTALmlpaWrXrp3Kli2r1NRUm/8Fl6SHHnpIr732mkaPHq3u3bvf8B80b29vDRs2TH379i3U6Nd///tf1ahRo9BTgH777TctXLhQ999/v6pXr6709HRNmzZNbdq00c6dOxUZGSnJPF3w6aef1n333adnnnlGly5d0tatW7Vu3To99NBDkqQnnnhCX3zxhQYNGqQ6deroxIkTWr16tXbt2qXbbrstR9u33nqrZs6cqSFDhqhy5cp69tlnJUnly5fP9Q/iHTt2qEWLFoqKitJLL72k4OBg/ec//1G3bt00b948de/e3ab8k08+qfLly2v48OG6cOFCgY9NWlqaJKlcuXKSzNMjO3furPj4eI0YMUJeXl6aPn262rVrp1WrVln/ILW4//77VatWLb355psyDEO1atVS7dq19cEHH2j06NGqXr26YmJiJJn/SExOTtbtt9+uMWPGKD09XRMnTtQPP/ygzZs324yUXblyRQkJCWrZsqXeffddBQUFWV9btWqVvvrqKw0cOFCSNGbMGN1zzz164YUX9P777+vJJ5/UqVOn9Pbbb+vhhx+2uX5n7ty5unjxogYMGKBy5cpp/fr1mjRpkg4ePKi5c+fa7FtWVpYSEhLUtGlTvfvuu/r+++81btw4xcTEaMCAAdZyjzzyiGbMmKHOnTvr0Ucf1ZUrV7Rq1SqtXbtWjRs3liS98cYbevXVV9WrVy89+uij+vPPPzVp0iS1bt06x75fb8eOHWrVqpXCwsL0wgsvyNfXV9OmTVPbtm21YsUKNW3a1Kb8U089pTJlymjEiBH6/fffNWHCBA0aNEhz5szJ97NgcfLkSUnmpPLQoUN67bXXFBAQoF69euUo+9prr8nPz0/PPfecMjIy5OfnZ/dnaMOGDfrxxx/Vu3dv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Lv/8809dvHgx1+N26623WlckrFu3rnX79cfH0l95/TF7vdatW9tMNb7vvvtUq1YtPfXUU9q4caNN2ev7vyCfIcu1V9OnT9ehQ4ds/hPn2r4YPXq0unbtqltuuUX16tXTXXfdpb///e9q0KCBXftzvYJ+p9j7/WFxo+Nvmepbr169PNt0xndBfs6fPy/paoJa0GOQG3vOPX9/f7311lt69tlnVbFiRTVr1kz33HOP+vbta7320PIZs1yvej1L/wLuhOQLcFM9e/bUJ598ok8//VSPP/74DcsXNJmyJGz9+vXTl19+aVdMYWFhioyM1Pbt2+0qn5s333xTr776qh5++GG99tprKlu2rLy8vDR48GCbkZxbb71Ve/bs0ddff63Fixdr3rx5ev/99zV8+HCNGjVKktSrVy+1atVKCxYs0Hfffad33nlHb731lubPn6/OnTsXOkZJ1liee+45JSQk5FqmZs2aNs+v/d9ke9SqVSvP5d8t7b/zzjt5rmp3fVJe0Pbtde3/tF8vr//dz2u75Y/6rKwsdezYUSdPntSLL76o2NhYBQcH69ChQ+rXr1+OUb2iGkXIzs6WyWTSokWLcq3zRv/RUVA3Og4FFRISoqZNm+rLL7/MsYre9f1fkM/QU089penTp2vw4MFq3ry5SpUqJZPJpN69e9v0RevWrZWWlqYvv/xS3333nf71r3/pvffe09SpU/Xoo48WeH9iY2MlmW+ZYc/3lr3fHxZFcfyd8V2Qn+3bt6tChQrWRKagx+B6BTn3Bg8erC5dumjhwoX69ttv9eqrr2rMmDFaunSpGjVqZC07c+ZMa0J2rZK8SiWQFz7VgJt655135OPjoyeffFKhoaHWRSbyUphk6m9/+5tef/11jRo1Svfee69d77nnnnv0wQcfaM2aNWrevLld77nWF198oTvvvFMfffSRzfbTp0/nWEwkODhYDzzwgB544AFdvnxZPXr00BtvvKGhQ4dap8tVqlRJTz75pJ588kkdO3ZMt912m954442bTr4so2e+vr4uuT+WZWGMsLCwIm+/atWqkqQ9e/bk+B/rPXv2WF93pG3btumXX37RJ598or59+1q3X7uwQEHFxMTo22+/1cmTJ/Mc/YqJiZFhGKpevbpuueWWAtVfvnx5BQUFac+ePTle2717t7y8vHKM+DnClStXJJlHRPJbwrwgn6EvvvhCSUlJGjdunHXbpUuXdPr06Rxly5Ytq+TkZCUnJ+v8+fNq3bq1Ro4caU2+CrKKXcuWLVWmTBl99tlnevnll2+YZBfk+8MelmO0ffv2PI+RK78L1qxZo7S0NJtl6O09Bnn1Q0HPvZiYGD377LN69tln9euvv6phw4YaN26cZs2aZT1+FSpUuOGxYXVDuAuu+QLclMlk0gcffKD77rtPSUlJOZY0zs3f/vY31axZ0zoydCOWhG3Lli121S9JL7zwgoKDg/Xoo4/aLHtvkZaWlmOJ5uvbvP5/nefOnZvjmokTJ07YPPfz81OdOnVkGIYyMzOVlZWVY2pahQoVFBkZqYyMDLv2JT8VKlRQ27ZtNW3aNB05ciTH6zezXLg94uPjFRMTo3fffdc67aio2m/cuLEqVKigqVOn2hyrRYsWadeuXbr77rsLXbe9LH9kX/tZMAwj38/OjfTs2VOGYeT6+be006NHD3l7e2vUqFE5PoeGYeT43F0fc6dOnfTll1/aLLWdnp6u2bNnq2XLlg6fZnXy5En9+OOPioiIUIUKFfItW5DPUG7n5aRJk3Is5X/98QkJCVHNmjVtPkeWhDC3xO16QUFBevHFF7Vr1y69+OKLuY5IzZo1S+vXr88zzty+P+x12223qXr16powYUKOeC3tuOq74I8//lC/fv3k5+en559/3rrd3mOQVz/Ye+5dvHhRly5dstkWExOj0NBQa38nJCQoLCxMb775pjIzM3Psw7XHpiCfC6A4Y+QLcGNeXl6aNWuWunXrpl69eul///tfnnPrJfM/qq+88oqSk5PtbsMyXXHLli12lY+JidHs2bP1wAMP6NZbb1Xfvn1Vr149Xb58WT/++KPmzp1rcy+p691zzz0aPXq0kpOTdccdd2jbtm369NNPc1yn1alTJ0VERKhFixaqWLGidu3apX/+85+6++67FRoaqtOnT6ty5cq67777FBcXp5CQEH3//ffasGGDzf/e34zJkyerZcuWql+/vvr3768aNWooPT1da9as0cGDB3O9N1lR8fLy0r/+9S917txZdevWVXJysqKionTo0CEtW7ZMYWFh+u9//1uoun19ffXWW28pOTlZbdq00YMPPmhdar5atWoaMmRIEe9NTrGxsYqJidFzzz2nQ4cOKSwsTPPmzbP7Wqjc3Hnnnfr73/+uf/zjH/r111911113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2fryyy8VGhpqvf6jVKlSCgwMVKlSpfTII48oJSVFZcuWVVhYmJ566ik1b95czZo1c3H0sMeN+jgtLU2zZ89WYmKiypUrp61bt2rIkCFq3bq1GjRo4OLoYa+hQ4eqc+fOqlKlis6dO6fZs2dr+fLl+vbbb0vmeezq5Rbd3aRJk4wqVaoYfn5+RpMmTYy1a9e6OiQUoQceeMCoVKmS4efnZ0RFRRkPPPCAsXfvXleHhZu0bNkyQ1KOn6SkJMMwzMvNv/rqq0bFihUNf39/o3379saePXtcGzQKJL8+vnjxotGpUyejfPnyhq+vr1G1alWjf//+xtGjR10dNgogt/6VZEyfPt1a5q+//jKefPJJo0yZMkZQUJDRvXt348iRI64LGgVyoz7ev3+/0bp1a6Ns2bKGv7+/UbNmTeP55583zpw549rAUSAPP/ywUbVqVcPPz88oX7680b59e+O7776zvl7SzmOTYRiGM5M9AAAAAPBEXPMFAAAAAE5A8gUAAAAATkDyBQAAAABOQPIFAAAAAE5A8gUAAAAATkDyBQAAAABOQPIFAAAAAE5A8gUAAAAATkDyBQBwmt9//10mk0lbtmxxdShWu3fvVrNmzRQQEKCGDRs6vL1q1appwoQJdpe355jNmDFDpUuXvunYisqJEydUoUIF/f7775Kk5cuXy2Qy6fTp07mWP378uCpUqKCDBw86L0gAcAGSLwDwIP369ZPJZNLYsWNtti9cuFAmk8lFUbnWiBEjFBwcrD179mjJkiW5linK47ZhwwY99thjhY63JHjjjTfUtWtXVatWza7y4eHh6tu3r0aMGOHYwADAxUi+AMDDBAQE6K233tKpU6dcHUqRuXz5cqHfm5aWppYtW6pq1aoqV65cnuWK6riVL19eQUFBN1WHs2RmZhb4PRcvXtRHH32kRx55pEDvS05O1qeffqqTJ08WuE0AKClIvgDAw3To0EEREREaM2ZMnmVGjhyZYwrehAkTbEYy+vXrp27duunNN99UxYoVVbp0aY0ePVpXrlzR888/r7Jly6py5cqaPn16jvp3796tO+64QwEBAapXr55WrFhh8/r27dvVuXNnhYSEqGLFivr73/+u48ePW19v27atBg0apMGDBys8PFwJCQm57kd2drZGjx6typUry9/fXw0bNtTixYutr5tMJm3cuFGjR4+WyWTSyJEjb+q4SdLq1avVqlUrBQYGKjo6Wk8//bQuXLhgff36aYe7d+9Wy5YtFRAQoDp16uj777+XyWTSwoULber97bffdOeddyooKEhxcXFas2ZNjrYXLlyoWrVqKSAgQAkJCTpw4IDN61OmTFFMTIz8/PxUu3ZtzZw50+Z1k8mkKVOm6N5771VwcLDeeOMNnTp1Sn369FH58uUVGBioWrVq5dqnFv/73//k7++vZs2a5Vnm4sWL6ty5s1q0aGGdili3bl1FRkZqwYIFeb4PAEo6ki8A8DDe3t568803NWnSpJu+xmbp0qU6fPiwVq5cqfHjx2vEiBG65557VKZMGa1bt05PPPGEHn/88RztPP/883r22We1efNmNW/eXF26dNGJEyckSadPn1a7du3UqFEj/fTTT1q8eLHS09PVq1cvmzo++eQT+fn56YcfftDUqVNzjW/ixIkaN26c3n33XW3dulUJCQm699579euvv0qSjhw5orp16+rZZ5/VkSNH9Nxzz+W5r/Yct7S0NN11113q2bOntm7dqjlz5mj16tUaNGhQruWzsrLUrVs3BQUFad26dfrggw/0yiuv5Fr2lVde0XPPPactW7bolltu0YMPPqgrV65YX7948aLeeOMN/fvf/9YPP/yg06dPq3fv3tbXFyxYoGeeeUbPPvustm/frscff1zJyclatmyZTTsjR45U9+7dtW3bNj388MN69dVXtXPnTi1atEi7du3SlClTFB4enudxWrVqleLj4/N8/fTp0+rYsaOys7OVmppqc61akyZNtGrVqjzfCwAlngEA8BhJSUlG165dDcMwjGbNmhkPP/ywYRiGsWDBAuPafxJGjBhhxMXF2bz3vffeM6pWrWpTV9WqVY2srCzrttq1axutWrWyPr9y5YoRHBxsfPbZZ4ZhGMa+ffsMScbYsWOtZTIzM43KlSsbb731lmEYhvHaa68ZnTp1smn7wIEDhiRjz549hmEYRps2bYxGjRrdcH8jIyONN954w2bb7bffbjz55JPW53FxccaIESPyrcfe4/bII48Yjz32mM17V61aZXh5eRl//fWXYRiGUbVqVeO9994zDMMwFi1aZPj4+BhHjhyxlk9NTTUkGQsWLDAM4+ox+9e//mUts2PHDkOSsWvXLsMwDGP69OmGJGPt2rXWMrt27TIkGevWrTMMwzDuuOMOo3///jax3X///UZiYqL1uSRj8ODBNmW6dOliJCcn53t8rtW1a1fr8bFYtmyZNd4GDRoYPXv2NDIyMnK8d8iQIUbbtm3tbgsAShpGvgDAQ7311lv65JNPtGvXrkLXUbduXXl5Xf2npGLFiqpfv771ube3t8qVK6djx47ZvK958+bWxz4+PmrcuLE1jp9//lnLli1TSEiI9Sc2NlaSeWTJIr/RFUk6e/asDh8+rBYtWthsb9GixU3tc37H7eeff9aMGTNsYk9ISFB2drb27duXo/yePXsUHR2tiIgI67YmTZrk2m6DBg2sjytVqiRJNsfVx8dHt99+u/V5bGysSpcubY1z165ddh2Lxo0b2zwfMGCAPv/8czVs2FAvvPCCfvzxx1zjs/jrr78UEBCQ62sdO3ZUzZo1NWfOHPn5+eV4PTAwUBcvXsy3fgAoyUi+AMBDtW7dWgkJCRo6dGiO17y8vGQYhs223BZf8PX1tXluMply3ZadnW13XOfPn1eXLl20ZcsWm59ff/1VrVu3tpYLDg62u86ilN9xO3/+vB5//HGbuH/++Wf9+uuviomJual2rz2ulhUWC3Jc7XX9ce3cubP++OMPDRkyRIcPH1b79u3znZ4ZHh6e56Ikd999t1auXKmdO3fm+vrJkydVvnz5wgcPAMUcyRcAeLCxY8fqv//9b47FG8qXL6+jR4/aJGBFeW+utWvXWh9fuXJFGzdu1K233ipJuu2227Rjxw5Vq1ZNNWvWtPkpSMIVFhamyMhI/fDDDzbbf/jhB9WpU+em4s/ruN12223auXNnjrhr1qyZ60hP7dq1deDAAaWnp1u3bdiwoVAxXblyRT/99JP1+Z49e3T69Gnrcb311lsLfSzKly+vpKQkzZo1SxMmTNAHH3yQZ9lGjRrlmVyNHTtWSUlJat++fa5ltm/frkaNGt0wHgAoqUi+AMCD1a9fX3369NE//vEPm+1t27bVn3/+qbfffltpaWmaPHmyFi1aVGTtTp48WQsWLNDu3bs1cOBAnTp1Sg8//LAkaeDAgTp58qQefPBBbdiwQWlpafr222+VnJysrKysArXz/PPP66233tKcOXO0Z88evfTSS9qyZYueeeaZm4o/r+P24osv6scff9SgQYOso3VffvllngtudOzYUTExMUpKStLWrVv1ww8/aNiwYZJU4PuH+fr66qmnntK6deu0ceNG9evXT82aNbNOY3z++ec1Y8YMTZkyRb/++qvGjx+v+fPn5zuKJUnDhw/Xl19+qb1792rHjh36+uuvrQldbhISErRjx448R7/effdd9enTR+3atdPu3but2y9evKiNGzeqU6dOBdpvAChJSL4AwMONHj06x/S1W2+9Ve+//74mT56suLg4rV+//oZ/pBfE2LFjNXbsWMXFxWn16tX66quvrCvoWUarsrKy1KlTJ9WvX1+DBw9W6dKlba4vs8fTTz+tlJQUPfvss6pfv74WL16sr776SrVq1brpfcjtuDVo0EArVqzQL7/8olatWqlRo0YaPny4IiMjc63D29tbCxcu1Pnz53X77bfr0Ucfta52mNd1U3kJCgrSiy++qIceekgtWrRQSEiI5syZY329W7dumjhxot59913VrVtX06ZN0/Tp09W2bdt86/Xz89PQoUPVoEEDtW7dWt7e3vr888/zLF+/fn3ddttt+s9//pNnmffee0+9evVSu3bt9Msvv0iSvvzyS1WpUkWtWrUq0H4DQEliMq6f1A8AAFzmhx9+UMuWLbV3796bvk7MVb755hs9//zz2r59u90Jc7NmzfT000/roYcecnB0AOA6Pq4OAAAAT7ZgwQKFhISoVq1a2rt3r5555hm1aNGixCZeknlhjV9//VWHDh1SdHT0DcsfP35cPXr00IMPPuiE6ADAdRj5AgDAhf7973/r9ddf1/79+xUeHq4OHTpo3LhxKleunKtDAwAUMZIvAAAAAHACFtwAAAAAACcg+QIAAAAAJyD5AgAAAAAnIPkCAAAAACcg+QIAAAAAJyD5AgAAAAAnIPkCAAAAACcg+QIAAAAAJ/g/q6+eJIwemssAAAAASUVORK5CYII=", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# Plot accuracy vs. k\n", "plt.figure(figsize=(10, 6))\n", "plt.plot(k_values, accuracies, marker='o', linestyle='dashed', color='b')\n", "plt.xlabel('Number of Neighbors (k)')\n", "plt.ylabel('Accuracy')\n", "plt.title('kNN Classifier Performance on Breast Cancer Dataset')\n", "plt.grid(True)\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Aufgabe" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "* Verwende nun die folgenden Datasets und versuche die bestmögliche Performance zu erreichen.\n", "* Lade dazu das Dataset mit den bekannten Methoden (Laden mit Hilfe von `pd.read_csv`)\n", "* Überlege, wie du bei schlechter Performance diese verbessern kannst. Zum Beipsiel: Normalisieren, Ausreißer entfernen etc.\n", "* Müssen wir ggf. Features entfernen?\n", "* Gehören ggf. Features mit einem Ordinal-Encoder oder mit einem Onehot-Encoder encodiert?\n", "* Verwende für jedes Dataset eigene Code-Zellen und dokumentiere für die verschiedenen Durchläufe die Ergebnisse (zBsp. Accuracy, Confusion Matrix oder den MSE)\n", "\n", "**Datasets:**\n", "* Breast Cancer `breast_cancer.csv` (verwendet von https://archive.ics.uci.edu/dataset/17/breast+cancer+wisconsin+diagnostic)\n", "* Diabetes `diabetes.csv` (verwendet von https://www.kaggle.com/uciml/pima-indians-diabetes-database)\n", "* Stroke Prediction `stroke.csv` (verwendet von https://www.kaggle.com/datasets/fedesoriano/stroke-prediction-dataset)\n", "\n", "*Hinweis:* Überlege dir stets, welchen Problemtyp du verwendest und verwende dementsprechend das richtige Model! " ] }, { "cell_type": "markdown", "metadata": {}, "source": [] }, { "cell_type": "markdown", "metadata": {}, "source": [] }, { "cell_type": "code", "execution_count": 119, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ " radius1 texture1 perimeter1 area1 smoothness1 compactness1 \\\n", "0 17.99 10.38 122.80 1001.0 0.11840 0.27760 \n", "1 20.57 17.77 132.90 1326.0 0.08474 0.07864 \n", "2 19.69 21.25 130.00 1203.0 0.10960 0.15990 \n", "3 11.42 20.38 77.58 386.1 0.14250 0.28390 \n", "4 20.29 14.34 135.10 1297.0 0.10030 0.13280 \n", ".. ... ... ... ... ... ... \n", "564 21.56 22.39 142.00 1479.0 0.11100 0.11590 \n", "565 20.13 28.25 131.20 1261.0 0.09780 0.10340 \n", "566 16.60 28.08 108.30 858.1 0.08455 0.10230 \n", "567 20.60 29.33 140.10 1265.0 0.11780 0.27700 \n", "568 7.76 24.54 47.92 181.0 0.05263 0.04362 \n", "\n", " concavity1 concave_points1 symmetry1 fractal_dimension1 ... \\\n", "0 0.30010 0.14710 0.2419 0.07871 ... \n", "1 0.08690 0.07017 0.1812 0.05667 ... \n", "2 0.19740 0.12790 0.2069 0.05999 ... \n", "3 0.24140 0.10520 0.2597 0.09744 ... \n", "4 0.19800 0.10430 0.1809 0.05883 ... \n", ".. ... ... ... ... ... \n", "564 0.24390 0.13890 0.1726 0.05623 ... \n", "565 0.14400 0.09791 0.1752 0.05533 ... \n", "566 0.09251 0.05302 0.1590 0.05648 ... \n", "567 0.35140 0.15200 0.2397 0.07016 ... \n", "568 0.00000 0.00000 0.1587 0.05884 ... \n", "\n", " texture3 perimeter3 area3 smoothness3 compactness3 concavity3 \\\n", "0 17.33 184.60 2019.0 0.16220 0.66560 0.7119 \n", "1 23.41 158.80 1956.0 0.12380 0.18660 0.2416 \n", "2 25.53 152.50 1709.0 0.14440 0.42450 0.4504 \n", "3 26.50 98.87 567.7 0.20980 0.86630 0.6869 \n", "4 16.67 152.20 1575.0 0.13740 0.20500 0.4000 \n", ".. ... ... ... ... ... ... \n", "564 26.40 166.10 2027.0 0.14100 0.21130 0.4107 \n", "565 38.25 155.00 1731.0 0.11660 0.19220 0.3215 \n", "566 34.12 126.70 1124.0 0.11390 0.30940 0.3403 \n", "567 39.42 184.60 1821.0 0.16500 0.86810 0.9387 \n", "568 30.37 59.16 268.6 0.08996 0.06444 0.0000 \n", "\n", " concave_points3 symmetry3 fractal_dimension3 Diagnosis \n", "0 0.2654 0.4601 0.11890 M \n", "1 0.1860 0.2750 0.08902 M \n", "2 0.2430 0.3613 0.08758 M \n", "3 0.2575 0.6638 0.17300 M \n", "4 0.1625 0.2364 0.07678 M \n", ".. ... ... ... ... \n", "564 0.2216 0.2060 0.07115 M \n", "565 0.1628 0.2572 0.06637 M \n", "566 0.1418 0.2218 0.07820 M \n", "567 0.2650 0.4087 0.12400 M \n", "568 0.0000 0.2871 0.07039 B \n", "\n", "[569 rows x 31 columns]\n" ] }, { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAA18AAAIjCAYAAAD80aFnAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjkuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8hTgPZAAAACXBIWXMAAA9hAAAPYQGoP6dpAACXBElEQVR4nOzdeVhU1f8H8Pew7yKCsohsLoggbknumgtKmlvupVJZbqVSWZq5VVqWppmpbdoPM821VYvINfctFxQVNRUVFQUUZb+/P+73DgwMMAMzc2d5v55nHmbunDn3M3NmLvOZc+45CkEQBBAREREREZFeWckdABERERERkSVg8kVERERERGQATL6IiIiIiIgMgMkXERERERGRATD5IiIiIiIiMgAmX0RERERERAbA5IuIiIiIiMgAmHwREREREREZAJMvIiIiIiIiA2DyRWRmZs+eDYVCgbt378odik4EBgZi9OjRsu1/9OjRCAwMVNn28OFDvPTSS/D29oZCocDkyZNx5coVKBQKrF69WpY49Wn79u1o1qwZHBwcoFAokJGRIXdIREREJonJF5GFGj16NBQKBZo2bQpBEMrcr1AoMHHiROVtKblQKBTYtGlTmfLaJn0pKSl45ZVXEBwcDAcHB7i5uaFdu3ZYsmQJHj9+XPUnZgDz5s3D6tWrMW7cOMTHx+P555836P5LtoVCoYC1tTXq1auH/v3748SJEzrdV3p6OgYPHgxHR0csW7YM8fHxcHZ21uk+SPekz6N0sbKygo+PD3r37o0DBw7IHV6Ffv/9d8yePVvrx23ZsgW9evWCp6cn7Ozs4Ovri8GDB+Pvv//WfZBGovSxwNbWFp6enmjbti2mT5+Oq1evVrnuGzduYPbs2To/plRVVd8XRMbGRu4AiEhep06dwubNmzFw4ECNHzN37lwMGDAACoWiSvv87bffMGjQINjb22PkyJEIDw9HXl4e9u7dizfffBNnzpzBl19+WaW6de2rr75CUVGRyra///4bTz75JGbNmqXcJggCHj9+DFtbW4PFNmzYMMTExKCwsBBnz57F8uXLsW3bNhw4cADNmjXTyT4OHz6MBw8e4L333kO3bt10UicZzvLly+Hi4oKioiJcu3YNX331FTp27IhDhw7p7D2ia7///juWLVum8RdtQRDwwgsvYPXq1WjevDni4uLg7e2NmzdvYsuW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ERERkTlj8mXhpOSLiysTEREREekXky8Ld+qU+JfnexERERER6ReTLwvXtCnQtSvQurXckRARERERmTejWGSZ5DNlinghIiIiIiL9Ys8XERERERGRATD5smD37wOZmXJHQURERERkGZh8WbDPPwfc3YFJk+SOhIiIiIjI/DH5smDSNPN168obBxERERGRJWDyZcGkaea5xhcRERERkf4x+bJQubnA+fPida7xRURERESkf0y+LFRyMlBYKJ7z5ecndzREREREROaPyZeFkoYchocDCoW8sRARERERWQImXxZKmmyD53sRERERERkGky8L1b498MorQPfuckdCRERERGQZbOQOgOTx9NPihYiIiIiIDIM9X0RERERERAbA5MsC3b4NHDsGPH4sdyRERERERJaDyZcF+uknoGVLoH9/uSMhIiIiIrIcTL4sUMlp5omIiIiIyDCYfFkgTjNPRERERGR4TL4sjCCw54uIiIiISA5MvizM7dvA3buAQgGEhckdDRERERGR5WDyZWGkXq/69QFHR3ljISIiIiKyJEy+LAyHHBIRERERycNG7gDIsLp1Az7+GAgJkTsSIiIiIiLLwuTLwkREcJZDIiIiIiI5cNghERERERGRATD5siB37gA//gicOyd3JERERERElofJlwXZtw8YMgQYOlTuSIiIiIiILA+TLwty+rT4l+d8EREREREZHpMvCyIlX5xmnoiIiIjI8Jh8WRBpjS/2fBERERERGR6TLwuRlwckJ4vX2fNFRERERGR4TL4sRHIyUFAAuLkB/v5yR0NEREREZHmYfFmIkud7KRTyxkJEREREZIls5A6ADKNrV2DLFsDWVu5IiIiIiIgsE5MvC1G7NtCvn9xREBERERFZLg47JCIiIiIiMgAmXxbg4UNg3jzg558BQZA7GiIiIiIiy8RhhxbgzBngnXcAb2/gmWfkjoaIiIiIyDKx58sClJzpkIiIiIiI5MHkywKcOiX+jYiQNw4iIiIiIkvG5MsCsOeLiIiIiEh+TL4sAHu+iIiIiIjkx+TLzN2+LV4UCiAsTO5oiIiIiIgsF5MvM3fmjPg3OBhwdpY3FiIiIiIiS8ap5s1c+/bisMN79+SOhIiIiIjIsjH5MnO2tpxog4iIiIjIGHDYIRERERERkQEw+TJjggC88gqwaBHw6JHc0RARERERWTYOOzRj//0H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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# Load dataset (Vehicle Silhouettes dataset)\n", "ds = pd.read_csv(\"../../_data/breast_cancer.csv\") # ggf. etwas anders als unser bisheriges Dataset\n", "print(ds)\n", "ds = ds.dropna()\n", "y = ds.Diagnosis\n", "X = ds.drop('Diagnosis', axis=1)\n", "X = X.select_dtypes(include=[np.number])\n", "le = LabelEncoder()\n", "y = le.fit_transform(y)\n", "scaler = StandardScaler()\n", "X_scaled = scaler.fit_transform(X)\n", "X_train, X_test, y_train, y_test = train_test_split(X_scaled, y, test_size=0.2, random_state=42)\n", "k_values = range(1, 31)\n", "accuracies = []\n", "for k in k_values:\n", " knn = KNeighborsClassifier(n_neighbors=k)\n", " knn.fit(X_train, y_train)\n", " y_pred = knn.predict(X_test)\n", " accuracies.append(accuracy_score(y_test, y_pred))\n", "# Plot accuracy vs. k\n", "plt.figure(figsize=(10, 6))\n", "plt.plot(k_values, accuracies, marker='o', linestyle='dashed', color='b')\n", "plt.xlabel('Number of Neighbors (k)')\n", "plt.ylabel('Accuracy')\n", "plt.title('kNN Classifier Performance on Breast Cancer Dataset')\n", "plt.grid(True)\n", "plt.show()" ] }, { "cell_type": "code", "execution_count": 121, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ " Pregnancies Glucose BloodPressure SkinThickness Insulin BMI \\\n", "0 6 148 72 35 0 33.6 \n", "1 1 85 66 29 0 26.6 \n", "2 8 183 64 0 0 23.3 \n", "3 1 89 66 23 94 28.1 \n", "4 0 137 40 35 168 43.1 \n", ".. ... ... ... ... ... ... \n", "763 10 101 76 48 180 32.9 \n", "764 2 122 70 27 0 36.8 \n", "765 5 121 72 23 112 26.2 \n", "766 1 126 60 0 0 30.1 \n", "767 1 93 70 31 0 30.4 \n", "\n", " DiabetesPedigreeFunction Age Outcome \n", "0 0.627 50 1 \n", "1 0.351 31 0 \n", "2 0.672 32 1 \n", "3 0.167 21 0 \n", "4 2.288 33 1 \n", ".. ... ... ... \n", "763 0.171 63 0 \n", "764 0.340 27 0 \n", "765 0.245 30 0 \n", "766 0.349 47 1 \n", "767 0.315 23 0 \n", "\n", "[768 rows x 9 columns]\n" ] }, { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAA1cAAAIjCAYAAADvBuGTAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjkuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8hTgPZAAAACXBIWXMAAA9hAAAPYQGoP6dpAACSQklEQVR4nOzdeVhU1f8H8Pcw7Agqsi8K7rsoKpLikgu5lEZuaalk2ldxpcys3FNSyzAzNcPlZ5mm4lKuuGvuWy4pLqkoAu6iqIAz9/fHbUZGBpjBGe4s79fz8DBz7pl7P/eeuTCfueeeIxMEQQARERERERG9EhupAyAiIiIiIrIETK6IiIiIiIgMgMkVERERERGRATC5IiIiIiIiMgAmV0RERERERAbA5IqIiIiIiMgAmFwREREREREZAJMrIiIiIiIiA2ByRUREREREZABMrojMyIQJEyCTyXDnzh2pQzGIoKAg9OvXT7Lt9+vXD0FBQRpljx8/xocffggfHx/IZDKMGDECV69ehUwmw+LFiyWJ05g2b96MkJAQODo6QiaT4cGDB1KHREREZLaYXBFZoH79+kEmk6Fu3boQBCHfcplMhiFDhqifq5IHmUyG1atX56uvb1J3+fJlfPTRR6hYsSIcHR3h5uaGpk2bYtasWXj69Gnxd6wETJ06FYsXL8agQYOwdOlSvP/++yW6/bxtIZPJIJfLUb58ebz99ts4efKkQbd19+5ddO/eHU5OTpgzZw6WLl0KFxcXg26DDE91Pqp+bGxs4Ovri06dOuHgwYNSh1eojRs3YsKECXq/bs2aNWjfvj08PDxgb28PPz8/dO/eHTt27DB8kCbi5b8FdnZ28PDwwGuvvYbPP/8cKSkpxV73zZs3MWHCBIP/TSmu4r4viEyRrdQBEJHxnD59GomJiXjnnXd0fs2kSZMQFRUFmUxWrG1u2LAB3bp1g4ODA/r06YPatWsjJycH+/btw6hRo3D27Fn89NNPxVq3oS1YsABKpVKjbMeOHWjSpAnGjx+vLhMEAU+fPoWdnV2Jxfbuu++iQ4cOUCgUOHfuHObOnYtNmzbh4MGDCAkJMcg2jhw5gkePHmHy5Mlo06aNQdZJJWfu3LkoVaoUlEolrl+/jgULFqB58+Y4fPiwwd4jhrZx40bMmTNH5w/SgiDggw8+wOLFi1G/fn3ExsbCx8cHaWlpWLNmDVq3bo2//voLr732mnEDl5Dqb4FSqcT9+/dx5MgRxMfHY9asWUhISEDPnj31XufNmzcxceJEBAUFmcR7Rd/3BZEpY3JFZKGcnJwQGBioV7IUEhKCkydPYs2aNYiKitJ7m1euXEHPnj1RoUIF7NixA76+vuplMTExuHTpEjZs2KD3eo1FW7J069Yt1KxZU6NMJpPB0dHRYNvNysoq8gpRgwYN8N5776mfN23aFG+99Rbmzp2L+fPnG2T7t27dAgCUKVPmldanbd1kfF27doWHh4f6eZcuXVC7dm2sXLmy0A/Mz549g729PWxsTL/zyrfffovFixdjxIgRmDlzpsbfsS+++AJLly6Fra35fpQpzt8CALh27RratWuHvn37okaNGqhXr54xwyQiPZj+X1YiKtS1a9dQuXJl1K5dGxkZGepyGxsbfPnllzh16hTWrFmj07p69uyJqlWrYtKkSVq7ExZl+vTpePz4MRISEjQSK5XKlStj+PDhBb7+3r17+OSTT1CnTh2UKlUKbm5uaN++Pf7+++98dWfPno1atWrB2dkZZcuWRcOGDbFs2TL18kePHmHEiBEICgqCg4MDvLy80LZtWxw/flxdJ+89V7t27YJMJsOVK1ewYcMGdVecq1evFnjP1fnz59G1a1e4u7vD0dERDRs2xPr16zXqLF68GDKZDLt378bgwYPh5eWFgIAAXQ6nhtdffx2AmMCqHDp0CG+88QZKly4NZ2dntGjRAn/99ZfG61RdyP755x/06tULZcuWRbNmzdCyZUv07dsXANCoUSPIZDKN+99WrlyJ0NBQODk5wcPDA++99x5SU1M11t2vXz+UKlUKly9fRocOHeDq6orevXsDeNH1dOXKlahZsyacnJwQHh6O06dPAwDmz5+PypUrw9HRES1btsTVq1c11r13715069YN5cuXh4ODAwIDAzFy5Mh83UpVMaSmpqJLly4oVaoUPD098cknn0ChUGjUVSqVmDVrFurUqQNHR0d4enrijTfewNGjRzXq/fLLL+p9d3d3R8+ePXH9+nVdmgknTpxA+/bt4ebmhlKlSqF169b5uuqp3hN//fUXYmNj4enpCRcXF7z99tu4ffu2TtvRxsfHBwA0kg3V+3r58uX48ssv4e/vD2dnZ2RmZgLQ7T107do1DB48GNWqVYOTkxPKlSuHbt265Wuz3NxcTJw4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t26dULNmTcHW1lZjv3U59+7cuSPExMQI1atXF1xcXITSpUsLYWFh+d5/quMdGRkplC5dWnB0dBQqVaok9OvXTzh69Ki6TnHfF0SmSCYIxbxzloiIiIiIiNR4zxUREREREZEBMLkiIiIiIiIyACZXREREREREBsDkioiIiIiIyACYXBERERERERkAkysiIiIiIiID4CTCWiiVSty8eROurq5FTsRIRERERESWSxAEPHr0CH5+frCxKfzaFJMrLW7evInAwECpwyAiIiIiIhNx/fp1BAQEFFqHyZUWrq6uAMQD6ObmVmjd3NxcbN26Fe3atYOdnV1JhEcSYDtbPraxdWA7Wz62seVjG1sHU2rnzMxMBAYGqnOEwjC50kLVFdDNzU2n5MrZ2Rlubm6SNzwZD9vZ8rGNrQPb2fKxjS0f29g6mGI763K7EAe0ICIiIiIiMgAmV0RERERERAbA5IqIiIiIiMgAmFwREREREREZAJMrIiIiIiIiA2ByRUREREREZABMroiIiIiIiAyAyRUREREREZEBMLkiIiIiIiIyACZXREREREREBsDkioiIiIiIyACYXBERERERERkAkysiIiIiIiIDsJU6ACIiIpKeQgHs3QukpQG+vkBEBCCXSx0VEZF5YXJFRERk5RITgeHDgRs3XpQFBACzZgFRUdLFRURkbtgtkIiIyIolJgJdu2omVgCQmiqWJyZKExcRkTlickVERGSlFArxipUg5F+mKhsxQqxHRERFY3JFRERkpfbuzX/FKi9BAK5fF+sREVHRmFwRERFZqbQ0w9YjIrJ2TK6IiIislK+vYesREVk7JldERERWKiJCHBVQJiu4jpeXWI+IiIrG5IqIiMhKyeXicOtA/gRLJhN/5s59Md/V3bslGx8RkblhckVERGSlUlMBR0dg1SrA319zWUCAWK6a5+rcOSA4GJg8maMHEhEVhMkVERGRFRIEYOBAoGNH4MIF4OpVYOdOYNky8feVK5oTCK9cCTx6BIwbB7RvD9y6JVnoREQmy1bqAIiIiKjkLVkCbNwIODgAnTuLXf9atiy4/rhxQPnywODBQFISEBIC/PYb0KJFSUVMRGT6eOWKiIjIyqSmipMDA8DEiUCNGrq9rl8/4MgRoGZNcXj2118HpkwBlEpjRUpEZF6YXBEREVkRQQA++gh4+BBo3Bj4+GP9Xl+rFnD4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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# Load dataset (Vehicle Silhouettes dataset)\n", "ds = pd.read_csv(\"../../_data/diabetes.csv\") # ggf. etwas anders als unser bisheriges Dataset\n", "print(ds)\n", "ds = ds.dropna()\n", "y = ds.Outcome\n", "X = ds.drop('Outcome', axis=1)\n", "X = X.select_dtypes(include=[np.number])\n", "le = LabelEncoder()\n", "y = le.fit_transform(y)\n", "scaler = StandardScaler()\n", "X_scaled = scaler.fit_transform(X)\n", "X_train, X_test, y_train, y_test = train_test_split(X_scaled, y, test_size=0.2, random_state=42)\n", "k_values = range(1, 31)\n", "accuracies = []\n", "for k in k_values:\n", " knn = KNeighborsClassifier(n_neighbors=k)\n", " knn.fit(X_train, y_train)\n", " y_pred = knn.predict(X_test)\n", " accuracies.append(accuracy_score(y_test, y_pred))\n", "# Plot accuracy vs. k\n", "plt.figure(figsize=(10, 6))\n", "plt.plot(k_values, accuracies, marker='o', linestyle='dashed', color='b')\n", "plt.xlabel('Number of Neighbors (k)')\n", "plt.ylabel('Accuracy')\n", "plt.title('kNN Classifier Performance on Breast Cancer Dataset')\n", "plt.grid(True)\n", "plt.show()" ] } ], "metadata": { "kernelspec": { "display_name": "dsai", "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.9.18" } }, "nbformat": 4, "nbformat_minor": 2 }