diff --git a/Maintenance/Prediction of IOT system failures based on sensor data/notebook.ipynb b/Maintenance/Prediction of IOT system failures based on sensor data/notebook.ipynb
index 8455e80b40889fda89bf83a07575616c440a9bdd..c660915944773590d87a4e1ae99f0cfdb6f95268 100644
--- a/Maintenance/Prediction of IOT system failures based on sensor data/notebook.ipynb	
+++ b/Maintenance/Prediction of IOT system failures based on sensor data/notebook.ipynb	
@@ -66,6 +66,133 @@
     "Die Datei PM_truth enthält die Anzahl der Zyklen, nach denen ein Bauteil ausfällt, geordnet nach der Bauteil-ID. Ziel ist es, mittels Sensordaten den Ausfallzeitpunkt der Bauteile vorherzusagen.\n"
    ]
   },
+  {
+   "attachments": {},
+   "cell_type": "markdown",
+   "metadata": {
+    "editable": true,
+    "slideshow": {
+     "slide_type": ""
+    },
+    "tags": []
+   },
+   "source": [
+    "## 3. Datenvorbereitung\n",
+    "\n"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {
+    "editable": true,
+    "include": true,
+    "paragraph": "datenvorbereitung",
+    "slideshow": {
+     "slide_type": ""
+    },
+    "tags": [
+     "datenvorbereitung"
+    ]
+   },
+   "source": [
+    "Zunächst wird überprüft, ob im Datensatz Nullwerte vorhanden sind. (Keine Nullwerte gefunden, daher gibt es keine fehlenden Daten.)\n",
+    "Danach werden die Daten geladen und dem Trainingsdatensatz (PM_train) eine Spalte hinzugefügt, die die verbleibenden Tage bis zum Austausch des Bauteils angibt. Für den Testdatensatz (PM_test) wird eine binäre Klassifikationsspalte erstellt, um festzustellen, ob ein Feuermelder (id) innerhalb von w1-Zyklen (1 Tag) ausfällt.\n",
+    "Die \"cycle\"-Spalte wurde mittels Min-Max-Normalisierung skaliert. Diese Normalisierung wurde sowohl auf den Trainings- (PM_train) als auch auf den Testdatensatz (PM_test) angewendet.\n",
+    "Die Wahrheitsdaten (PM_truth) werden genutzt, um die Labels für die Testdaten (PM_test) zu generieren. Anschließend wird die Datenstruktur überprüft und festgestellt, dass alle Daten entweder den Datentyp float oder int haben und keine kategorialen Variablen enthalten.\n",
+    "Abschließend werden Histogramme der Variablen erstellt, um zu bestimmen ob alle Variablen sinnvoll für das Modell sind.\n"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {
+    "editable": true,
+    "slideshow": {
+     "slide_type": ""
+    },
+    "tags": []
+   },
+   "source": [
+    "## 4. Datenmodell"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {
+    "editable": true,
+    "include": true,
+    "paragraph": "datenmodell",
+    "slideshow": {
+     "slide_type": ""
+    },
+    "tags": [
+     "datenmodell"
+    ]
+   },
+   "source": [
+    "Als Datenmodell wird das Long Short-Term Memory (LSTM)-Modell verwendet, welches eine Unterart der Recurrent Neural Network (LSTM NN) ist. Dies ist gut für das Erkennen von Mustern in Datenreihen, die beispielsweise in Sensordaten auftreten, geeignet. "
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {
+    "editable": true,
+    "slideshow": {
+     "slide_type": ""
+    },
+    "tags": []
+   },
+   "source": [
+    "## 5. Evaluation"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {
+    "editable": true,
+    "include": true,
+    "paragraph": "evaluation",
+    "slideshow": {
+     "slide_type": ""
+    },
+    "tags": [
+     "evaluation"
+    ]
+   },
+   "source": [
+    "Für die Bewertung der Qualität einer Klassifikation werden Metriken wie Accuracy (= allgemeine Genauigkeit der Klassifikation), Precision (= Präzision der Vorhersage der Kundenabwanderung) und Recall (= Menge der abwanderungswilligen Kunden die korrekt klassifiziert wurden) genutzt. In einer ersten Modellstufe wird eine Accuracy von 86% und ein Recall von 98% erreicht.\n",
+    "In einer zweiten Modellstufe werden alle Testdaten verglichen. Hierbei handelt es sich um die letzte Sequenz von jedem Feuermelder in den Testdaten. Durch diese Veränderung wird eine Accuracy von 94%, ein Recall von 87,5% und eine Precision von 77,7778% erreicht. Es werden also fast alle Ausfallzeitpunkte der Bauteile durch das Modell erkannt.\n"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {
+    "editable": true,
+    "slideshow": {
+     "slide_type": ""
+    },
+    "tags": []
+   },
+   "source": [
+    "## 6. Umsetzung"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {
+    "editable": true,
+    "include": true,
+    "paragraph": "umsetzung",
+    "slideshow": {
+     "slide_type": ""
+    },
+    "tags": [
+     "umsetzung"
+    ]
+   },
+   "source": [
+    "Auf Basis der Sensordaten kann automatisiert eine Vorhersage über den Ausfallzeitpunkt von Bauteilen erstellt werden. Auf diese Weise kann die Wartung der Brandschutzssysteme und Ausfallzeiten minimiert werden."
+   ]
+  },
   {
    "attachments": {},
    "cell_type": "markdown",
@@ -518,42 +645,6 @@
     "train_df.head()\n"
    ]
   },
-  {
-   "attachments": {},
-   "cell_type": "markdown",
-   "metadata": {
-    "editable": true,
-    "slideshow": {
-     "slide_type": ""
-    },
-    "tags": []
-   },
-   "source": [
-    "## 3. Datenaufbereitung\n",
-    "\n"
-   ]
-  },
-  {
-   "cell_type": "markdown",
-   "metadata": {
-    "editable": true,
-    "include": true,
-    "paragraph": "datenvorbereitung",
-    "slideshow": {
-     "slide_type": ""
-    },
-    "tags": [
-     "datenvorbereitung"
-    ]
-   },
-   "source": [
-    "Zunächst wird überprüft, ob im Datensatz Nullwerte vorhanden sind. (Keine Nullwerte gefunden, daher gibt es keine fehlenden Daten.)\n",
-    "Danach werden die Daten geladen und dem Trainingsdatensatz (PM_train) eine Spalte hinzugefügt, die die verbleibenden Tage bis zum Austausch des Bauteils angibt. Für den Testdatensatz (PM_test) wird eine binäre Klassifikationsspalte erstellt, um festzustellen, ob ein Feuermelder (id) innerhalb von w1-Zyklen (1 Tag) ausfällt.\n",
-    "Die \"cycle\"-Spalte wurde mittels Min-Max-Normalisierung skaliert. Diese Normalisierung wurde sowohl auf den Trainings- (PM_train) als auch auf den Testdatensatz (PM_test) angewendet.\n",
-    "Die Wahrheitsdaten (PM_truth) werden genutzt, um die Labels für die Testdaten (PM_test) zu generieren. Anschließend wird die Datenstruktur überprüft und festgestellt, dass alle Daten entweder den Datentyp float oder int haben und keine kategorialen Variablen enthalten.\n",
-    "Abschließend werden Histogramme der Variablen erstellt, um zu bestimmen ob alle Variablen sinnvoll für das Modell sind.\n"
-   ]
-  },
   {
    "cell_type": "markdown",
    "metadata": {},
@@ -689,7 +780,7 @@
    },
    "source": [
     "There are no Null values  \n",
-    "there is no missing data"
+    "there is no missing data."
    ]
   },
   {
@@ -2872,36 +2963,6 @@
     "\n"
    ]
   },
-  {
-   "cell_type": "markdown",
-   "metadata": {
-    "editable": true,
-    "slideshow": {
-     "slide_type": ""
-    },
-    "tags": []
-   },
-   "source": [
-    "## 4. Datenmodell"
-   ]
-  },
-  {
-   "cell_type": "markdown",
-   "metadata": {
-    "editable": true,
-    "include": true,
-    "paragraph": "datenmodell",
-    "slideshow": {
-     "slide_type": ""
-    },
-    "tags": [
-     "datenmodell"
-    ]
-   },
-   "source": [
-    "Als Datenmodell wird das Long Short-Term Memory (LSTM)-Modell verwendet, welches eine Unterart der Recurrent Neural Network (LSTM NN) ist. Dies ist gut für das Erkennen von Mustern in Datenreihen, die beispielsweise in Sensordaten auftreten, geeignet. "
-   ]
-  },
   {
    "attachments": {},
    "cell_type": "markdown",
@@ -3263,37 +3324,6 @@
     "model.fit(array_sequenz, ueb_array, epochs=10, batch_size=200, validation_split=0.05, verbose=1)"
    ]
   },
-  {
-   "cell_type": "markdown",
-   "metadata": {
-    "editable": true,
-    "slideshow": {
-     "slide_type": ""
-    },
-    "tags": []
-   },
-   "source": [
-    "## 5. Evaluation"
-   ]
-  },
-  {
-   "cell_type": "markdown",
-   "metadata": {
-    "editable": true,
-    "include": true,
-    "paragraph": "evaluation",
-    "slideshow": {
-     "slide_type": ""
-    },
-    "tags": [
-     "evaluation"
-    ]
-   },
-   "source": [
-    "Für die Bewertung der Qualität einer Klassifikation werden Metriken wie Accuracy (= allgemeine Genauigkeit der Klassifikation), Precision (= Präzision der Vorhersage der Kundenabwanderung) und Recall (= Menge der abwanderungswilligen Kunden die korrekt klassifiziert wurden) genutzt. In einer ersten Modellstufe wird eine Accuracy von 86% und ein Recall von 98% erreicht.\n",
-    "In einer zweiten Modellstufe werden alle Testdaten verglichen. Hierbei handelt es sich um die letzte Sequenz von jedem Feuermelder in den Testdaten. Durch diese Veränderung wird eine Accuracy von 94%, ein Recall von 87,5% und eine Precision von 77,7778% erreicht. Es werden also fast alle Ausfallzeitpunkte der Bauteile durch das Modell erkannt.\n"
-   ]
-  },
   {
    "cell_type": "code",
    "execution_count": 29,
@@ -3770,36 +3800,6 @@
     "results_df\n"
    ]
   },
-  {
-   "cell_type": "markdown",
-   "metadata": {
-    "editable": true,
-    "slideshow": {
-     "slide_type": ""
-    },
-    "tags": []
-   },
-   "source": [
-    "## 6. Umsetzung"
-   ]
-  },
-  {
-   "cell_type": "markdown",
-   "metadata": {
-    "editable": true,
-    "include": true,
-    "paragraph": "umsetzung",
-    "slideshow": {
-     "slide_type": ""
-    },
-    "tags": [
-     "umsetzung"
-    ]
-   },
-   "source": [
-    "Auf Basis der Sensordaten kann automatisiert eine Vorhersage über den Ausfallzeitpunkt von Bauteilen erstellt werden. Auf diese Weise kann die Wartung der Brandschutzssysteme und Ausfallzeiten minimiert werden."
-   ]
-  },
   {
    "cell_type": "code",
    "execution_count": null,