diff --git a/05-skalierung-und-optimierung/01-autoklassen-sklearn-sol.ipynb b/05-skalierung-und-optimierung/01-autoklassen-sklearn-sol.ipynb
index a5d621ba00caa38aa04fc267ec2a168398ffcbf9..810c9f0b90362ef40deb3b3ae9f890709db9f2d1 100644
--- a/05-skalierung-und-optimierung/01-autoklassen-sklearn-sol.ipynb
+++ b/05-skalierung-und-optimierung/01-autoklassen-sklearn-sol.ipynb
@@ -90,9 +90,9 @@
    "metadata": {},
    "source": [
     "Die Genauigkeit beträgt ungefähr – je nach zufälliger Aufteilung der\n",
-    "Trainings- und Testmengen – zwischen 41% und 70% und im Mittel ungefähr:"
+    "Trainings- und Testmengen – zwischen 44% und 68% und im Mittel ungefähr:"
    ],
-   "id": "0009-19f963d04e0849544556edd745a9be471ceb58af797b4db2b38d22fa480"
+   "id": "0009-ec3faf868b9fd06d732d32259934a4e0d4efcb34b9dea469c3f0e15359c"
   },
   {
    "cell_type": "code",
@@ -103,23 +103,23 @@
      "output_type": "stream",
      "name": "stdout",
      "text": [
-      "56.91%"
+      "56.9%"
      ]
     }
    ],
    "source": [
-    "print(f'{score:.2%}')"
+    "print(f'{score:.1%}')"
    ],
-   "id": "0010-851f37ceb0a7044dfa1fd10aaaa6c95b36520a0daa77af6d92a2ffc565c"
+   "id": "0010-ce3c158735c9ccc98fbaccd48e82ac864bd06d11baee65cf59bee8af7c6"
   },
   {
    "cell_type": "markdown",
    "metadata": {},
    "source": [
     "Wenn wir eine Toleranz von 1 Fahrzeugklasse verwenden, liegt die\n",
-    "Genauigkeit ungefähr zwischen und 83% und 100% und im Mittel ungefähr:"
+    "Genauigkeit ungefähr zwischen und 87% und 100% und im Mittel ungefähr:"
    ],
-   "id": "0011-c808456d33568ef391dd7f3b317070d77e2bf593a17ab55b3c39720291d"
+   "id": "0011-b528b01b16630de1ea4e40535ed8b41a636a13f3baeead08cd4ebe0f7d1"
   },
   {
    "cell_type": "code",
@@ -130,15 +130,15 @@
      "output_type": "stream",
      "name": "stdout",
      "text": [
-      "93.50%"
+      "92.7%"
      ]
     }
    ],
    "source": [
     "near_miss_score = ((y_test - y_pred).abs() <= 1).mean()\n",
-    "print(f'{near_miss_score:.2%}')"
+    "print(f'{near_miss_score:.1%}')"
    ],
-   "id": "0012-1a056c770eab1c5dbdead803360ee3d448c0fd07feafcd3cca3af571230"
+   "id": "0012-d9d61bda13f255b0bcb6b0571e469e15514da2e324299034c21b8b5ca97"
   },
   {
    "cell_type": "markdown",
@@ -185,10 +185,10 @@
    "cell_type": "markdown",
    "metadata": {},
    "source": [
-    "Nun beträgt die Genauigkeit ungefähr zwischen 53% und 80% (anstatt 41%\n",
-    "und 70% ohne Skalierung) und im Mittel ungefähr:"
+    "Nun beträgt die Genauigkeit ungefähr zwischen 56% und 80% (anstatt 44%\n",
+    "und 68% ohne Skalierung) und im Mittel ungefähr:"
    ],
-   "id": "0019-0bf204d53815dfc0965e543aae77b558e780a212333b5db15702b0d78ae"
+   "id": "0019-4d1acdf985d02fef5a0cb6d08fba7376c042e81bf361de92247171a6136"
   },
   {
    "cell_type": "code",
@@ -199,14 +199,14 @@
      "output_type": "stream",
      "name": "stdout",
      "text": [
-      "67.48%"
+      "67.5%"
      ]
     }
    ],
    "source": [
-    "print(f'{score_scaled:.2%}')"
+    "print(f'{score_scaled:.1%}')"
    ],
-   "id": "0020-7371b9a07c7f1fe25d35f203d86a7e69a1192272662e6ac06a14fe78ab2"
+   "id": "0020-2b227bfac245954cca77944ae660f99c7225c910eb3334e6717243ee9e2"
   },
   {
    "cell_type": "markdown",
@@ -259,10 +259,10 @@
    "cell_type": "markdown",
    "metadata": {},
    "source": [
-    "Nun beträgt die Genauigkeit ungefähr zwischen 63.5% und 70.5% (anstatt\n",
-    "53% und 80% ohne Kreuzvalidierung) und im Mittel unverändert ungefähr:"
+    "Nun beträgt die Genauigkeit ungefähr zwischen 63.6% und 70.4% (anstatt\n",
+    "56% und 80% ohne Kreuzvalidierung) und im Mittel unverändert ungefähr:"
    ],
-   "id": "0027-3bfb561f3875f077095b32a0c7d0377f93fe688d38d4bb75de6898ef257"
+   "id": "0027-e8da2d1d8de5024f297751a4bff906c35c2edf2860ffdc8a9c5615a187f"
   },
   {
    "cell_type": "code",
@@ -273,23 +273,23 @@
      "output_type": "stream",
      "name": "stdout",
      "text": [
-      "67.15%"
+      "67.2%"
      ]
     }
    ],
    "source": [
-    "print(f'{score_scaled_cv:.2%}')"
+    "print(f'{score_scaled_cv:.1%}')"
    ],
-   "id": "0028-98a7f9a2738231b6905840f64f990616c7cacfb64bc2570d40af1bfa18d"
+   "id": "0028-b37cb549f7ca0b03d5a4d6629c5cafb8f5a20152339f4939100b1f47cb7"
   },
   {
    "cell_type": "markdown",
    "metadata": {},
    "source": [
     "Mit `RepeatedStratifiedKFold` mit Default-Werten (also `n_splits=5` und\n",
-    "`n_repeats=10`) liegt die Genauigkeit zwischen 66.4% und 68.6%. Das ist\n",
-    "eine sehr geringe Spanne, die besser für eine Hyperparameteroptimierung\n",
-    "geeignet ist.\n",
+    "`n_repeats=10`) liegt die Genauigkeit zwischen 66.2% und 68.6% und im\n",
+    "Mittel bei ungefähr 67.5%. Das ist eine sehr geringe Spanne, die besser\n",
+    "für eine Hyperparameteroptimierung geeignet ist.\n",
     "\n",
     "## d) Optuna\n",
     "\n",
@@ -298,10 +298,12 @@
     "\n",
     "1.  Der Startcode implementiert bereits die Optimierung von $k$ und $p$\n",
     "    mit Optuna. Schauen Sie sich den Startcode an und probieren ihn aus.\n",
-    "2.  Fügen Sie in die `objective`-Funktion für jedes Feature jeweils\n",
-    "    einen Skalierungsfaktor als Hyperparameter hinzu, der das Feature\n",
-    "    nach der Skalierung umskaliert. Vielleicht ist es von Vorteil, wenn\n",
-    "    einige Features den Abstand stärker beeinflussen als andere.\n",
+    "2.  Fügen Sie in die `objective`-Funktion für jedes der sechs Feature\n",
+    "    (Grundpreis etc.) jeweils einen Skalierungsfaktor mittels\n",
+    "    `trial.suggest_float(name, low, high)` als Hyperparameter hinzu, der\n",
+    "    das Feature nach der Skalierung umskaliert. *Hinweis: Es gibt noch\n",
+    "    einen Booleschen Parameter `log` um den Wert logarithmisch zu\n",
+    "    optimieren und später auch zu visualisieren.*\n",
     "3.  Führen Sie die Optimierung durch.\n",
     "4.  Betrachten Sie die Ergebnisse im Parallele-Koordinaten-Plot und\n",
     "    wählen Sie gute Parameter.\n",
@@ -313,7 +315,7 @@
     "$[10^{-2}, 10^0] = [0.01, 1]$ genauso wahrscheinlich ist, wie der\n",
     "Bereich $[10^0, 10^2] = [1, 100]$."
    ],
-   "id": "0034-ae5d5a5918f209ffcbd24188436259e7ef46c1b452327ef493c1324aeef"
+   "id": "0034-99b712c6dde4c224091d9e61c112d4d7de601f43c428d8047fbc5cb168e"
   },
   {
    "cell_type": "code",
@@ -351,11 +353,38 @@
    },
    "outputs": [],
    "source": [
-    "study = optuna.create_study(direction='maximize', sampler=optuna.samplers.GPSampler(deterministic_objective=True))  # less duplicate trials\n",
-    "study.optimize(objective, n_trials=100, n_jobs=4)\n",
-    "fig = optuna.visualization.plot_parallel_coordinate(study)"
+    "study = optuna.create_study(direction='maximize')\n",
+    "study.optimize(objective, n_trials=100, n_jobs=4)"
    ],
-   "id": "0037-79487c80368ad85001b24281bc990d3a53e0e926e8d11a2d56ee7b43d52"
+   "id": "0037-64c45d4d68fec04dc857c908355dc28f6b9a085d1aec4c9ce469da8e09c"
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {
+    "style": "python"
+   },
+   "outputs": [],
+   "source": [
+    "fig = optuna.visualization.plot_parallel_coordinate(study)\n",
+    "fig.show()"
+   ],
+   "id": "0038-d681bc8da4b8bed01a50012745e461c2284df7720f1b11dc2298839da91"
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "Aus dem Ergebnis lässt sich ablesen, dass das Leergewicht und der\n",
+    "Verbrauch ungefähr den Faktor 10 bekommen, die Türanzahl 0.01 und der\n",
+    "Rest den Faktor 100. Wenn wir das umsetzen schwankt das Ergebnis mit\n",
+    "einem `RepeatedStratifiedKFold` mit Default-Werten (also `n_splits=5`\n",
+    "und `n_repeats=10`) zwischen 66.8% und 69.5% und liegt im Mittel\n",
+    "ungefähr bei 68.1% anstatt 67.5% ohne optimierte Skalierung. Durch die\n",
+    "Optimierung konnte die Genauigkeit also im Mittel um 0.6 Prozentpunkte\n",
+    "verbessert werden."
+   ],
+   "id": "0039-71ac3459b1f4c926322d9f087ac4b16c2b55bb269c7df97ba19382bf0fa"
   }
  ],
  "nbformat": 4,
diff --git a/05-skalierung-und-optimierung/01-autoklassen-sklearn.ipynb b/05-skalierung-und-optimierung/01-autoklassen-sklearn.ipynb
index 15a76b66bed87e12fc2a03e074d00db7a98cde83..0cfb5cb879de237212f82ebbbd388a39744f5eb6 100644
--- a/05-skalierung-und-optimierung/01-autoklassen-sklearn.ipynb
+++ b/05-skalierung-und-optimierung/01-autoklassen-sklearn.ipynb
@@ -46,7 +46,7 @@
     "import pandas as pd\n",
     "import optuna\n",
     "from sklearn.metrics import accuracy_score\n",
-    "from sklearn.model_selection import cross_val_score, StratifiedKFold, train_test_split\n",
+    "from sklearn.model_selection import cross_val_score, StratifiedKFold, RepeatedStratifiedKFold, train_test_split\n",
     "from sklearn.neighbors import KNeighborsClassifier\n",
     "from sklearn.preprocessing import RobustScaler\n",
     "\n",
@@ -60,7 +60,7 @@
     "\n",
     "# TODO: Genauigkeit ausgeben"
    ],
-   "id": "0005-682ba86e4b2ef1a270871f098102d4349b3f2b0977c41614e4b442895f7"
+   "id": "0005-10e2d5cbeeffb18b853f569fe4d991bd3fa0deb348f46e7a98dfc05777a"
   },
   {
    "cell_type": "markdown",
@@ -126,15 +126,17 @@
     "\n",
     "1.  Der Startcode implementiert bereits die Optimierung von $k$ und $p$\n",
     "    mit Optuna. Schauen Sie sich den Startcode an und probieren ihn aus.\n",
-    "2.  Fügen Sie in die `objective`-Funktion für jedes Feature jeweils\n",
-    "    einen Skalierungsfaktor als Hyperparameter hinzu, der das Feature\n",
-    "    nach der Skalierung umskaliert. Vielleicht ist es von Vorteil, wenn\n",
-    "    einige Features den Abstand stärker beeinflussen als andere.\n",
+    "2.  Fügen Sie in die `objective`-Funktion für jedes der sechs Feature\n",
+    "    (Grundpreis etc.) jeweils einen Skalierungsfaktor mittels\n",
+    "    `trial.suggest_float(name, low, high)` als Hyperparameter hinzu, der\n",
+    "    das Feature nach der Skalierung umskaliert. *Hinweis: Es gibt noch\n",
+    "    einen Booleschen Parameter `log` um den Wert logarithmisch zu\n",
+    "    optimieren und später auch zu visualisieren.*\n",
     "3.  Führen Sie die Optimierung durch.\n",
     "4.  Betrachten Sie die Ergebnisse im Parallele-Koordinaten-Plot und\n",
     "    wählen Sie gute Parameter."
    ],
-   "id": "0015-1a2cb5f0269a7d88b4861ef37715bd33303afa2fbaa8fa3b50c9bcc2ab2"
+   "id": "0015-d383366da2c95086a6bb5d2d706285955ac6e8a9c88a34334363d362458"
   },
   {
    "cell_type": "code",
@@ -171,11 +173,23 @@
    },
    "outputs": [],
    "source": [
-    "study = optuna.create_study(direction='maximize', sampler=optuna.samplers.GPSampler(deterministic_objective=True))  # less duplicate trials\n",
-    "study.optimize(objective, n_trials=100, n_jobs=4)\n",
-    "fig = optuna.visualization.plot_parallel_coordinate(study)"
+    "study = optuna.create_study(direction='maximize')\n",
+    "study.optimize(objective, n_trials=100, n_jobs=4)"
    ],
-   "id": "0018-79487c80368ad85001b24281bc990d3a53e0e926e8d11a2d56ee7b43d52"
+   "id": "0018-64c45d4d68fec04dc857c908355dc28f6b9a085d1aec4c9ce469da8e09c"
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {
+    "style": "python"
+   },
+   "outputs": [],
+   "source": [
+    "fig = optuna.visualization.plot_parallel_coordinate(study)\n",
+    "fig.show()"
+   ],
+   "id": "0019-d681bc8da4b8bed01a50012745e461c2284df7720f1b11dc2298839da91"
   }
  ],
  "nbformat": 4,