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,