From 385697a9c3f72904fb7bedec5562f22e8277f04e Mon Sep 17 00:00:00 2001 From: Patrick Schnepf <patrickschnepf@Patricks-MacBook-Air.fritz.box> Date: Wed, 15 May 2024 21:01:04 +0200 Subject: [PATCH] Notebooks mit Beschreibung --- .../notebook.ipynb | 89 ++++- .../notebook.ipynb | 187 +++++++++- .../notebook.ipynb | 165 ++++++++- Rating/Accommodation rating/notebook.ipynb | 344 ++++++++++++------ .../notebook.ipynb | 153 ++++++-- .../notebook.ipynb | 179 +++++++-- .../notebook.ipynb | 117 +++++- .../notebook.ipynb | 113 +++--- 8 files changed, 1037 insertions(+), 310 deletions(-) diff --git a/Marketing/Generation of Individual Playlists/notebook.ipynb b/Marketing/Generation of Individual Playlists/notebook.ipynb index c7b85de..1ff21f2 100644 --- a/Marketing/Generation of Individual Playlists/notebook.ipynb +++ b/Marketing/Generation of Individual Playlists/notebook.ipynb @@ -5,10 +5,9 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "# 1. Gesch\u00e4ftsverst\u00e4ndnis\n", + "# Geschäftsverständnis\n", "\n", - "Der Audio-Streaming-Dienst wurde 2006 von dem schwedischen Startup Spotify Technology S.A. gegr\u00fcndet und ist in mehr als 90 verschiedenen L\u00e4ndern verf\u00fcgbar. F\u00fcr das Unternehmen Spotify ist eines der wichtigsten Potenziale und Herausforderungen die Erstellung einer einzigartigen personalisierten Playlist f\u00fcr jeden Benutzer, die dem Musikgeschmack des H\u00f6rers entspricht. Dabei wird erwogen, die oben genannten Herausforderungen mithilfe von Spotify KI und Machine-Learning-Algorithmen zu l\u00f6sen, um eine ma\u00dfgeschneiderte Playlist f\u00fcr den Benutzer zu generieren.\n", - "Die \u00fcbergreifende Fragestellung dieser Fallstudie lautet: Wie werden bei Spotify Machine-Learning-Technologien eingesetzt, um das H\u00f6rerlebnis der Kunden zu verbessern?" + "Der Audio-Streaming-Dienst Spotify wurde 2006 von dem schwedischen Startup Spotify Technology S.A. gegründet und ist in mehr als 90 Ländern verfügbar. Eine der größten Herausforderungen und Chancen für Spotify besteht darin, für jeden Benutzer eine personalisierte Playlist zu erstellen, die seinem Musikgeschmack entspricht. Diese Herausforderung soll mithilfe von KI und Machine-Learning-Algorithmen gelöst werden, um das Hörerlebnis der Kunden zu verbessern." ] }, { @@ -16,9 +15,73 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "# 2. Daten und Datenverst\u00e4ndnis\n", + "# Daten und Datenverständnis\n", "\n", - "Die gesammelten Daten f\u00fcr Spotify werden zu einem einheitlichen Datensatz zusammengef\u00fchrt und auf das Problem hin \u00fcberpr\u00fcft, um zu sehen, ob Erkenntnisse aus den Informationen extrahiert werden k\u00f6nnen. Die Attribute haben unterschiedliche Bereiche. Diese Daten werden sorgf\u00e4ltig vorbereitet, damit der endg\u00fcltige Datensatz erstellt oder mittels Data-Mining-Methoden verarbeitet werden kann. Zu diesem Zweck werden die Daten geladen und analysiert. Anschlie\u00dfend bilden diese wiederum die Grundlage f\u00fcr die n\u00e4chste Phase der Modellierung." + "Die Daten für Spotify werden gesammelt, zu einem einheitlichen Datensatz zusammengeführt und auf ihre Eignung für das Problem hin überprüft. Die Daten umfassen verschiedene Attribute, die sorgfältig vorbereitet werden müssen, um einen endgültigen Datensatz zu erstellen oder Data-Mining-Methoden anzuwenden. Der Prozess umfasst das Laden und Analysieren der Daten als Grundlage für die Modellierungsphase." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# ML Strategie\n", + "\n", + "Die Strategie beinhaltet den Einsatz von Machine-Learning-Technologien zur Verbesserung des Hörerlebnisses der Kunden durch personalisierte Playlists. Dazu werden verschiedene Schritte der Datenvorbereitung und -modellierung durchgeführt, um ein geeignetes Modell zu entwickeln und zu evaluieren, das anschließend in die Produktionsumgebung überführt wird." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Datenvorbereitung \n", + "\n", + "### Import von relevanten Modulen:\n", + "Notwendige Bibliotheken und Module werden importiert.\n", + "### Daten einlesen:\n", + "Die Daten werden in das System eingelesen.\n", + "### Datenbereinigung:\n", + "Auf fehlende Werte prüfen und diese gegebenenfalls bereinigen.\n", + "\n", + "Auswahl der relevanten Prädiktoren.\n", + "\n", + "Entfernen irrelevanter Features." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Datenmodellierung\n", + "### Test and Training Sets:\n", + "Die Daten werden in Trainings- und Testdatensätze aufgeteilt.\n", + "\n", + "Vor Verwendung der Modelle werden die Spalten standardisiert.\n", + "### Lineares-Regressionsmodell und Evaluation:\n", + "Ein lineares Regressionsmodell wird entwickelt und evaluiert." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Modellevaluation:\n", + "\n", + "Die Performance des Modells wird mithilfe von Metriken bewertet.\n", + "\n", + "Anpassungen werden vorgenommen, um die Genauigkeit und Effizienz des Modells zu verbessern." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Szenarien für ein Deployment:\n", + "\n", + "Sobald das Modell evaluiert und optimiert wurde, wird es in die Produktionsumgebung überführt.\n", + "\n", + "Kontinuierliche Überwachung und Aktualisierung des Modells, um die Genauigkeit und Relevanz der personalisierten Playlists sicherzustellen.\n", + "\n", + "Integration des Modells in die bestehende Spotify-Infrastruktur zur Echtzeitanpassung der Playlists basierend auf Benutzerverhalten und Vorlieben." ] }, { @@ -395,7 +458,7 @@ " <td>NaN</td>\n", " <td>NaN</td>\n", " <td>NaN</td>\n", - " <td>['\u042d\u0440\u043d\u0435\u0441\u0442 \u0425\u0435\u043c\u0438\u043d\u0433\u0443\u044d\u0439']</td>\n", + " <td>['Эрнест Хемингуэй']</td>\n", " <td>NaN</td>\n", " <td>NaN</td>\n", " <td>NaN</td>\n", @@ -596,7 +659,7 @@ " valence year acousticness artists \\\n", "count 170653.000000 170653.000000 170653.000000 170653 \n", "unique NaN NaN NaN 34088 \n", - "top NaN NaN NaN ['\u042d\u0440\u043d\u0435\u0441\u0442 \u0425\u0435\u043c\u0438\u043d\u0433\u0443\u044d\u0439'] \n", + "top NaN NaN NaN ['Эрнест Хемингуэй'] \n", "freq NaN NaN NaN 1211 \n", "mean 0.528587 1976.787241 0.502115 NaN \n", "std 0.263171 25.917853 0.376032 NaN \n", @@ -750,7 +813,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### Auf fehlende Werte pr\u00fcfen" + "### Auf fehlende Werte prüfen" ] }, { @@ -797,7 +860,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### Auswahl der Pr\u00e4diktoren" + "### Auswahl der Prädiktoren" ] }, { @@ -1469,11 +1532,12 @@ "metadata": {}, "outputs": [], "source": [ - "# Wurde nicht durchgef\u00fchrt, da es optional war" + "# Wurde nicht durchgeführt, da es optional war" ] } ], "metadata": { + "category": "Marketing", "kernelspec": { "display_name": "Python 3", "language": "python", @@ -1491,9 +1555,8 @@ "pygments_lexer": "ipython3", "version": "3.7.4" }, - "title": "Generation of Individual Playlists", - "category": "Marketing" + "title": "Generation of Individual Playlists" }, "nbformat": 4, "nbformat_minor": 1 -} \ No newline at end of file +} diff --git a/Marketing/Predicting clicks on online advertising by Facebook/notebook.ipynb b/Marketing/Predicting clicks on online advertising by Facebook/notebook.ipynb index fc9195f..fdc2962 100644 --- a/Marketing/Predicting clicks on online advertising by Facebook/notebook.ipynb +++ b/Marketing/Predicting clicks on online advertising by Facebook/notebook.ipynb @@ -13,6 +13,153 @@ "\n" ] }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Geschäftliche Kontext\n", + "Für Facebook ist es wichtig, Nutzer möglichst lange auf seiner Plattform zu halten und deren Interaktionen zu maximieren. Ein wesentlicher Aspekt dabei ist die Personalisierung von Werbung. Das Ziel dieses Projekts ist es, vorherzusagen, ob ein Website-Besucher auf eine Werbung klicken wird, um so gezielte Werbekampagnen zu ermöglichen und die Effektivität der Werbung zu steigern.\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Datengrundlage\n", + "Der analysierte Datensatz stammt von Kaggle und enthält 10 Spalten mit insgesamt 1000 Zeilen. Die Daten umfassen demografische Informationen und Nutzungsverhalten der Website-Besucher. Der Zielwert (Clicked on Ad) ist ausgeglichen, mit 500 positiven und 500 negativen Beispielen." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# ML Strategie\n", + "Das Projekt folgt dem CRISP-DM-Modell, das die Phasen eines Data-Science-Projekts in sechs Schritte unterteilt: Geschäftsverständnis, Datenverständnis, Datenaufbereitung, Modellierung, Evaluation und Deployment." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Datenvorbereitung\n", + "Details und einzelne Schritte:\n", + "\n", + "### Import von relevanten Modulen:\n", + "\n", + "Nutzung von Bibliotheken wie Pandas, NumPy, Matplotlib und Scikit-Learn.\n", + "\n", + "### Daten einlesen:\n", + "\n", + "Laden und erste Inspektion des Datensatzes.\n", + "\n", + "### Datenanalyse:\n", + "\n", + "Überprüfung auf fehlende Werte und Duplikate.\n", + "\n", + "Erste Analysen und Visualisierungen zur Datenverständnis.\n", + "\n", + "### Explorative Datenanalyse (EDA):\n", + "\n", + "Erstellung von Verteilungsdiagrammen für numerische Merkmale zur Identifikation von Ausreißern.\n", + "\n", + "Feststellung, dass der Datensatz ausgeglichen ist.\n", + "\n", + "### Korrelationen:\n", + "\n", + "Berechnung und Darstellung der Korrelationen zwischen numerischen Merkmalen.\n", + "\n", + "Identifikation starker negativer Korrelationen zwischen der täglichen Internetnutzung / täglichen Verweildauer und angeklickten Anzeigen.\n", + "\n", + "Keine Merkmalsstreichung aufgrund fehlender starker Korrelationen (> 0,9).\n", + "\n", + "### Feature Engineering:\n", + "\n", + "Zeitstempel: Untersuchung der Korrelation zwischen Klicks und Uhrzeit.\n", + "\n", + "Alter: Erstellung von Altersintervallen zur besseren Nutzung des Merkmals.\n", + "\n", + "### Erstellung des endgültigen Datensatzes:\n", + "\n", + "Zusammenstellung der finalen Merkmale.\n", + "\n", + "Aufteilung in Merkmale (X) und Zielvariable (y).\n", + "\n", + "### Datensatzaufteilung und Standardisierung:\n", + "\n", + "Aufteilung in Trainings- und Testdatensatz.\n", + "\n", + "Standardisierung numerischer Merkmale zur Verbesserung der Modellperformance." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Datenmodellierung\n", + "\n", + "### Logistische Regression:\n", + "\n", + "Training des Modells mit besonderem Fokus auf Merkmale wie tägliche Verweildauer, tägliche Internetnutzung und Gebietseinkommen.\n", + "\n", + "Bewertung der Modellleistung anhand von Metriken wie Genauigkeit, Präzision, Recall und F1-Score.\n", + "\n", + "### Entscheidungsbaum:\n", + "\n", + "Training eines Entscheidungsbaum-Modells als Alternative zur logistischen Regression.\n", + "\n", + "Vergleich der Performance mit der logistischen Regression." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Modellevaluation\n", + "\n", + "### Logistische Regression:\n", + "\n", + "Evaluation der Modellleistung und Bestimmung der wichtigsten Merkmale.\n", + "\n", + "Identifikation der Merkmale mit großem Einfluss auf die Vorhersage, insbesondere tägliche Verweildauer und Internetnutzung.\n", + "\n", + "### Entscheidungsbaum:\n", + "\n", + "Vergleich der Genauigkeit und anderer Metriken mit der logistischen Regression.\n", + "\n", + "Beurteilung der Interpretierbarkeit des Entscheidungsbaums." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Szenarien für ein Deployment\n", + "\n", + "### Batch-Deployment:\n", + "\n", + "Regelmäßige Aktualisierung des Modells mit neuen Daten zur Sicherstellung der Vorhersagegenauigkeit.\n", + "\n", + "Nutzung für Batch-Vorhersagen von Werbeklicks.\n", + "\n", + "### Echtzeit-Deployment:\n", + "\n", + "Integration in eine Echtzeit-Umgebung für sofortige Vorhersagen.\n", + "\n", + "Dynamische Anpassung und Ausspielung von Anzeigen basierend auf Vorhersagen.\n", + "\n", + "### A/B Testing:\n", + "\n", + "Durchführung von A/B-Tests zur Evaluation der Modellleistung in einer Produktionsumgebung.\n", + "\n", + "Vergleich der Modellleistung mit herkömmlichen Methoden.\n", + "\n", + "### Kontinuierliche Überwachung:\n", + "\n", + "Implementierung von Monitoring-Systemen zur Überwachung der Modellleistung.\n", + "\n", + "Anpassung und Re-Training des Modells basierend auf neuen Daten und veränderten Benutzerverhalten." + ] + }, { "attachments": {}, "cell_type": "markdown", @@ -20,7 +167,7 @@ "source": [ "## 1. Business Understanding\n", "\n", - "Aus wirtschaftlicher Sicht ist es f\u00fcr Facebook notwendig, die Kunden so lange wie m\u00f6glich auf seiner Streaming-Plattform zu halten. Nun stellt sich aber die Frage, wie dies erreicht werden kann. Das Problem dabei ist, dass Netflix zwar \u00fcber eine gute Datenbasis verf\u00fcgt, diese aber erst einmal aufbereitet und zu einem digitalen Angebot entwickelt werden muss. Au\u00dferdem muss festgelegt werden, welche Daten \u00fcberhaupt vorhanden sind, welche Dienste auf Basis dieser Daten realisiert werden k\u00f6nnen und welchen Mehrwert der Kunde und Netflix selbst daraus ziehen. Als Service geht es in diesem Beitrag um ein Empfehlungsmodell, das dem Nutzer zu jedem angebotenen Film oder jeder Serie eine Auswahl an \u00e4hnlichen Angeboten vorschl\u00e4gt.\n", + "Aus wirtschaftlicher Sicht ist es für Facebook notwendig, die Kunden so lange wie möglich auf seiner Streaming-Plattform zu halten. Nun stellt sich aber die Frage, wie dies erreicht werden kann. Das Problem dabei ist, dass Netflix zwar über eine gute Datenbasis verfügt, diese aber erst einmal aufbereitet und zu einem digitalen Angebot entwickelt werden muss. Außerdem muss festgelegt werden, welche Daten überhaupt vorhanden sind, welche Dienste auf Basis dieser Daten realisiert werden können und welchen Mehrwert der Kunde und Netflix selbst daraus ziehen. Als Service geht es in diesem Beitrag um ein Empfehlungsmodell, das dem Nutzer zu jedem angebotenen Film oder jeder Serie eine Auswahl an ähnlichen Angeboten vorschlägt.\n", "\n" ] }, @@ -29,9 +176,9 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "## 2. Daten und Datenverst\u00e4ndnis\n", + "## 2. Daten und Datenverständnis\n", "\n", - "In diesem Notebook wird der Anzeigendatensatz von Kaggle analysiert. Er besteht aus 10 Spalten mit insgesamt 1000 Zeilen. Der Anwendungsfall besteht in der Vorhersage, ob ein Website-Besucher auf der Grundlage seiner demografischen Daten und seiner Internetnutzungsdaten auf eine Anzeige klicken wird oder nicht. Der Zielwert f\u00fcr angeklickte Werbung ist perfekt zwischen den beiden Kategorien ausgeglichen (0,1), da der Mittelwert genau 0,5 betr\u00e4gt. Dies bedeutet, dass es f\u00fcr beide Kategorien die gleiche Anzahl von Werten gibt (jeweils 500). Dar\u00fcber hinaus k\u00f6nnen wir feststellen, dass die Merkmale \"Ad Topic Line\" und \"City\" sehr viele eindeutige Werte aufweisen (1000 bzw. 969 \"eindeutige\" Werte), was bedeutet, dass. Es ist zu erkennen, dass es erhebliche Unterschiede zwischen den Nutzerprofilen gibt. Nutzer, die auf eine Anzeige klicken (Clicked on Ad=1), verbringen im Durchschnitt weniger Zeit auf der Website, sind \u00e4lter (ca. 40), haben ein geringeres Einkommen und nutzen das Internet deutlich weniger. Aus diesen Informationen l\u00e4sst sich bereits ein grobes Nutzerprofil ableiten, das auch f\u00fcr Marketing und Vertrieb eines Unternehmens relevant sein k\u00f6nnte, um ihre Ma\u00dfnahmen auf Basis der Nutzerprofile zu optimieren.\n", + "In diesem Notebook wird der Anzeigendatensatz von Kaggle analysiert. Er besteht aus 10 Spalten mit insgesamt 1000 Zeilen. Der Anwendungsfall besteht in der Vorhersage, ob ein Website-Besucher auf der Grundlage seiner demografischen Daten und seiner Internetnutzungsdaten auf eine Anzeige klicken wird oder nicht. Der Zielwert für angeklickte Werbung ist perfekt zwischen den beiden Kategorien ausgeglichen (0,1), da der Mittelwert genau 0,5 beträgt. Dies bedeutet, dass es für beide Kategorien die gleiche Anzahl von Werten gibt (jeweils 500). Darüber hinaus können wir feststellen, dass die Merkmale \"Ad Topic Line\" und \"City\" sehr viele eindeutige Werte aufweisen (1000 bzw. 969 \"eindeutige\" Werte), was bedeutet, dass. Es ist zu erkennen, dass es erhebliche Unterschiede zwischen den Nutzerprofilen gibt. Nutzer, die auf eine Anzeige klicken (Clicked on Ad=1), verbringen im Durchschnitt weniger Zeit auf der Website, sind älter (ca. 40), haben ein geringeres Einkommen und nutzen das Internet deutlich weniger. Aus diesen Informationen lässt sich bereits ein grobes Nutzerprofil ableiten, das auch für Marketing und Vertrieb eines Unternehmens relevant sein könnte, um ihre Maßnahmen auf Basis der Nutzerprofile zu optimieren.\n", "\n" ] }, @@ -222,7 +369,7 @@ "source": [ "# 3. Datenanalyse\n", "\n", - "Zweck dieses Kapitels ist die \u00dcberpr\u00fcfung, Analyse und Aufbereitung der Daten." + "Zweck dieses Kapitels ist die Überprüfung, Analyse und Aufbereitung der Daten." ] }, { @@ -642,7 +789,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Es ist zu erkennen, dass der Datensatz perfekt ausgeglichen ist, d.h. es gibt genau 500 Datens\u00e4tze f\u00fcr beide Klassen." + "Es ist zu erkennen, dass der Datensatz perfekt ausgeglichen ist, d.h. es gibt genau 500 Datensätze für beide Klassen." ] }, { @@ -705,9 +852,9 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "## 3.2 Verteilungsdiagramme f\u00fcr alle Merkmale mit numerischen Werten\n", + "## 3.2 Verteilungsdiagramme für alle Merkmale mit numerischen Werten\n", "\n", - "Verteilungsdiagramme werden erstellt, um Ausrei\u00dfer in den Daten zu identifizieren und die Daten besser zu verstehen." + "Verteilungsdiagramme werden erstellt, um Ausreißer in den Daten zu identifizieren und die Daten besser zu verstehen." ] }, { @@ -869,8 +1016,8 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Es ist zu erkennen, dass die t\u00e4gliche Verweildauer auf der Website und die t\u00e4gliche Internetnutzung korrelieren. Es besteht auch eine starke negative Korrelation zwischen der t\u00e4glichen Internetnutzung / der t\u00e4glichen Verweildauer auf der Website und den angeklickten Anzeigen.\n", - "Signifikante Korrelationen, die zur Streichung eines Merkmals f\u00fchren, gibt es jedoch nicht (Annahme: wenn die Korrelation gr\u00f6\u00dfer als 0,9 ist)." + "Es ist zu erkennen, dass die tägliche Verweildauer auf der Website und die tägliche Internetnutzung korrelieren. Es besteht auch eine starke negative Korrelation zwischen der täglichen Internetnutzung / der täglichen Verweildauer auf der Website und den angeklickten Anzeigen.\n", + "Signifikante Korrelationen, die zur Streichung eines Merkmals führen, gibt es jedoch nicht (Annahme: wenn die Korrelation größer als 0,9 ist)." ] }, { @@ -880,15 +1027,15 @@ "source": [ "<a id=\"cell2\"></a>\n", "# 5. Datenaufbereitung\n", - "In diesem Abschnitt wird der Datensatz f\u00fcr das maschinelle Lernen vorbereitet.\n", + "In diesem Abschnitt wird der Datensatz für das maschinelle Lernen vorbereitet.\n", "\n", "<a id=\"cell2.1\"></a>\n", "## 5.1 Feature Engineering\n", - "In diesem Abschnitt wird das Feature Engineering durchgef\u00fchrt. Hier werden wichtige Informationen aus den Rohdaten extrahiert.\n", + "In diesem Abschnitt wird das Feature Engineering durchgeführt. Hier werden wichtige Informationen aus den Rohdaten extrahiert.\n", "\n", "<a id=\"cell2.1.1\"></a>\n", "### 5.1.1 Zeitstempel\n", - "Der Datensatz enth\u00e4lt ein Zeitstempel-Merkmal. Dies k\u00f6nnte f\u00fcr die Vorhersage wichtig sein, da es eine Korrelation zwischen dem Klick des Nutzers und der Uhrzeit geben kann." + "Der Datensatz enthält ein Zeitstempel-Merkmal. Dies könnte für die Vorhersage wichtig sein, da es eine Korrelation zwischen dem Klick des Nutzers und der Uhrzeit geben kann." ] }, { @@ -916,7 +1063,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "In diesem Abschnitt wird das Feature Engineering durchgef\u00fchrt. Hier werden wichtige Informationen aus den Rohdaten extrahiert.\n" + "In diesem Abschnitt wird das Feature Engineering durchgeführt. Hier werden wichtige Informationen aus den Rohdaten extrahiert.\n" ] }, { @@ -1001,7 +1148,7 @@ "source": [ "<a id=\"cell2.1.2\"></a>\n", "### 5.1.2 Alter\n", - "Es k\u00f6nnen Intervalle f\u00fcr das Alter gemacht werden." + "Es können Intervalle für das Alter gemacht werden." ] }, { @@ -1040,7 +1187,7 @@ "metadata": {}, "source": [ "<a id=\"cell2.2\"></a>\n", - "## 5.2 Erstellung des endg\u00fcltigen Datensatzes" + "## 5.2 Erstellung des endgültigen Datensatzes" ] }, { @@ -1124,7 +1271,7 @@ "source": [ "<a id=\"cell3\"></a>\n", "# Nr. 6 Modellbildung\n", - "Nun k\u00f6nnen die einzelnen Algorithmen trainiert und bewertet werden." + "Nun können die einzelnen Algorithmen trainiert und bewertet werden." ] }, { @@ -1217,7 +1364,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Insbesondere die t\u00e4gliche Zeit, die vor Ort verbracht wird, die t\u00e4gliche Internetnutzung und das Gebietseinkommen haben einen gr\u00f6\u00dferen Einfluss." + "Insbesondere die tägliche Zeit, die vor Ort verbracht wird, die tägliche Internetnutzung und das Gebietseinkommen haben einen größeren Einfluss." ] }, { @@ -1275,6 +1422,7 @@ } ], "metadata": { + "category": "Marketing", "kernelspec": { "display_name": "Python 3 (ipykernel)", "language": "python", @@ -1292,9 +1440,8 @@ "pygments_lexer": "ipython3", "version": "3.8.9" }, - "title": "Predicting clicks on online advertising by Facebook", - "category": "Marketing" + "title": "Predicting clicks on online advertising by Facebook" }, "nbformat": 4, "nbformat_minor": 2 -} \ No newline at end of file +} diff --git a/Online Retail/Size prediction for online fashion retailer/notebook.ipynb b/Online Retail/Size prediction for online fashion retailer/notebook.ipynb index 3c2f7d9..d427210 100644 --- a/Online Retail/Size prediction for online fashion retailer/notebook.ipynb +++ b/Online Retail/Size prediction for online fashion retailer/notebook.ipynb @@ -1,5 +1,134 @@ { "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Geschäftlicher Kontext\n", + "In der Modebranche, insbesondere bei Online-Shops, sind Rücksendungen ein großes Problem. Für ein fiktives Modeunternehmen liegt die Rücksendequote bei etwa 50 %, was hohe Kosten verursacht. Oft bestellen Kunden verschiedene Größen desselben Artikels, da sie unsicher sind, welche Größe passt. Ziel dieses Projekts ist es, mithilfe von maschinellem Lernen die passende Größe vorherzusagen, um die Rücksendungen aufgrund falscher Größen zu minimieren." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Datengrundlage\n", + "Der Datensatz stammt von ModCloth, einem Online-Geschäft für Damenbekleidung, und wurde von Kaggle heruntergeladen. Er enthält Informationen über tatsächlich verkaufte Kleidung und deren Passform bei den Kunden. Die Daten umfassen:\n", + "\n", + "item_id,\n", + "Taille,\n", + "Größe,\n", + "Qualität,\n", + "Körbchengröße,\n", + "Hüfte,\n", + "BH-Größe,\n", + "Kategorie,\n", + "Büstengröße,\n", + "Länge,\n", + "Passform,\n", + "user_id,\n", + "Schuhgröße,\n", + "Schuhbreite,\n", + "review_summary,\n", + "review_text" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# ML Strategie\n", + "Das Projekt zielt darauf ab, ein Modell zu entwickeln, das die passende Kleidergröße anhand der verfügbaren Parameter vorhersagen kann. Der Fokus liegt auf der Minimierung von Rücksendungen durch präzise Größenempfehlungen. Die Vorgehensweise folgt einem strukturierten Prozess, der die Phasen des Crisp-DM Zykluses umfasst. " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Datenvorbereitung\n", + "\n", + "### Import von relevanten Modulen:\n", + "\n", + "Nutzung von Bibliotheken wie Pandas, NumPy, Matplotlib und Scikit-Learn.\n", + "\n", + "### Daten einlesen:\n", + "\n", + "Laden und erste Inspektion des Datensatzes zur Sicherstellung der Datenintegrität.\n", + "\n", + "### Daten bereinigen:\n", + "\n", + "Behandlung fehlender Werte und Entfernung von Duplikaten.\n", + "\n", + "Überprüfung und Bereinigung von Textdaten (review_summary und review_text).\n", + "\n", + "### Test auf Multikollinearität:\n", + "\n", + "Untersuchung auf stark korrelierte Merkmale, die die Modellleistung negativ beeinflussen könnten.\n", + "\n", + "### Umkodierung von kategorialen Variablen:\n", + "\n", + "Umwandlung kategorialer Daten in numerische Formate mittels One-Hot-Encoding oder Label-Encoding." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Datenmodellierung\n", + "\n", + "### Test- und Trainingsdaten:\n", + "\n", + "Aufteilung des Datensatzes in Trainings- und Testdaten zur Validierung der Modellleistung.\n", + "\n", + "### Merkmalsskalierung:\n", + "\n", + "Standardisierung numerischer Merkmale zur Verbesserung der Modellperformance.\n", + "\n", + "### Modellierung:\n", + "\n", + "Entwicklung und Training eines linearen Regressionsmodells zur Vorhersage der passenden Größe." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Modellevaluation\n", + "\n", + "### Evaluation:\n", + "\n", + "Bewertung der Modellleistung anhand von Metriken wie Mean Absolute Error (MAE), Root Mean Squared Error (RMSE) und R²-Score.\n", + "\n", + "Überprüfung der Vorhersagegenauigkeit und Anpassung des Modells bei Bedarf." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Szenarien für ein Deployment\n", + "\n", + "### Batch-Deployment:\n", + "\n", + "Regelmäßige Aktualisierung des Modells mit neuen Daten zur Sicherstellung der Vorhersagegenauigkeit.\n", + "Verwendung des Modells für Batch-Vorhersagen zur Größenempfehlung.\n", + "\n", + "### Echtzeit-Deployment:\n", + "\n", + "Integration des Modells in das Online-Shop-System für sofortige Größenempfehlungen während des Bestellvorgangs.\n", + "Anpassung der Empfehlungen in Echtzeit basierend auf Kundeneingaben.\n", + "\n", + "### A/B Testing:\n", + "\n", + "Durchführung von A/B-Tests zur Bewertung der Modellleistung in einer Produktionsumgebung.\n", + "Vergleich der Empfehlungen des Modells mit herkömmlichen Methoden zur Größenbestimmung.\n", + "\n", + "### Kontinuierliche Überwachung:\n", + "\n", + "Implementierung von Monitoring-Systemen zur Überwachung der Modellleistung.\n", + "Anpassung und Re-Training des Modells basierend auf neuen Daten und veränderten Kundenverhalten." + ] + }, { "attachments": {}, "cell_type": "markdown", @@ -13,11 +142,11 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "R\u00fccksendungen sind Teil des Gesch\u00e4ftsmodells vieler Modegesch\u00e4fte. Die R\u00fcckgabequote eines fiktiven Unternehmens liegt bei etwa 50 %, was das Unternehmen unn\u00f6tig viel Geld kostet. Hinzu kommt: Gerade im\n", + "Rücksendungen sind Teil des Geschäftsmodells vieler Modegeschäfte. Die Rückgabequote eines fiktiven Unternehmens liegt bei etwa 50 %, was das Unternehmen unnötig viel Geld kostet. Hinzu kommt: Gerade im\n", "Modebranche gibt es viele Kunden, die schon vor ihrer Bestellung wissen, dass sie\n", - "dass sie den Artikel mit hoher Wahrscheinlichkeit zur\u00fcckschicken werden. Sie bestellen zum Beispiel ein und dasselbe Hemd in verschiedenen Gr\u00f6\u00dfen, weil sie nicht sicher sind, welches passen wird.\n", - "nicht sicher, welches passen wird. Ist es m\u00f6glich, maschinelles Lernen einzusetzen, um die Gr\u00f6\u00dfe anhand bestimmter Parameter zu bestimmen\n", - "Parameter zu bestimmen und R\u00fccksendungen aufgrund falscher Gr\u00f6\u00dfen zu minimieren?" + "dass sie den Artikel mit hoher Wahrscheinlichkeit zurückschicken werden. Sie bestellen zum Beispiel ein und dasselbe Hemd in verschiedenen Größen, weil sie nicht sicher sind, welches passen wird.\n", + "nicht sicher, welches passen wird. Ist es möglich, maschinelles Lernen einzusetzen, um die Größe anhand bestimmter Parameter zu bestimmen\n", + "Parameter zu bestimmen und Rücksendungen aufgrund falscher Größen zu minimieren?" ] }, { @@ -25,7 +154,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "# 2. Daten und Datenverst\u00e4ndnis" + "# 2. Daten und Datenverständnis" ] }, { @@ -34,11 +163,11 @@ "metadata": {}, "source": [ "Der Datensatz wurde von Kaggle heruntergeladen und stammte von\n", - "ModCloth, einem Online-Gesch\u00e4ft f\u00fcr Damenbekleidung. Bei den Daten handelt es sich um tats\u00e4chlich verkaufte Kleidung und die Zusatzinformationen der\n", - "zus\u00e4tzliche Informationen \u00fcber die Passform beim Kunden.\n", - "Die Daten beinhalten: item_id, Taille, Gr\u00f6\u00dfe, Qualit\u00e4t, K\u00f6rbchengr\u00f6\u00dfe, H\u00fcfte, BH-Gr\u00f6\u00dfe, Kategorie,\n", - "B\u00fcstengr\u00f6\u00dfe, L\u00e4nge, Passform, user_id, Schuhgr\u00f6\u00dfe, Schuhbreite, review_summary und\n", - "pr\u00fcfung_text." + "ModCloth, einem Online-Geschäft für Damenbekleidung. Bei den Daten handelt es sich um tatsächlich verkaufte Kleidung und die Zusatzinformationen der\n", + "zusätzliche Informationen über die Passform beim Kunden.\n", + "Die Daten beinhalten: item_id, Taille, Größe, Qualität, Körbchengröße, Hüfte, BH-Größe, Kategorie,\n", + "Büstengröße, Länge, Passform, user_id, Schuhgröße, Schuhbreite, review_summary und\n", + "prüfung_text." ] }, { @@ -557,7 +686,7 @@ " </tr>\n", " </tbody>\n", "</table>\n", - "<p>754 rows \u00d7 18 columns</p>\n", + "<p>754 rows × 18 columns</p>\n", "</div>" ], "text/plain": [ @@ -1108,7 +1237,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "## 3.1. Test auf Multikollinearit\u00e4t" + "## 3.1. Test auf Multikollinearität" ] }, { @@ -1987,7 +2116,7 @@ " </tr>\n", " </tbody>\n", "</table>\n", - "<p>5 rows \u00d7 51 columns</p>\n", + "<p>5 rows × 51 columns</p>\n", "</div>" ], "text/plain": [ @@ -2292,7 +2421,7 @@ " </tr>\n", " </tbody>\n", "</table>\n", - "<p>8 rows \u00d7 51 columns</p>\n", + "<p>8 rows × 51 columns</p>\n", "</div>" ], "text/plain": [ @@ -2578,7 +2707,7 @@ " </tr>\n", " </tbody>\n", "</table>\n", - "<p>5 rows \u00d7 51 columns</p>\n", + "<p>5 rows × 51 columns</p>\n", "</div>" ], "text/plain": [ @@ -2789,6 +2918,7 @@ } ], "metadata": { + "category": "Online Retail", "kernelspec": { "display_name": "Python 3", "language": "python", @@ -2806,9 +2936,8 @@ "pygments_lexer": "ipython3", "version": "3.7.4" }, - "title": "Size prediction for online fashion retailer", - "category": "Online Retail" + "title": "Size prediction for online fashion retailer" }, "nbformat": 4, "nbformat_minor": 1 -} \ No newline at end of file +} diff --git a/Rating/Accommodation rating/notebook.ipynb b/Rating/Accommodation rating/notebook.ipynb index c6adf60..bf7ce11 100644 --- a/Rating/Accommodation rating/notebook.ipynb +++ b/Rating/Accommodation rating/notebook.ipynb @@ -1,12 +1,141 @@ { "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Geschäftlicher Kontext\n", + "Airbnb-Gastgeber stehen vor der Herausforderung, den optimalen Preis für ihre Unterkünfte festzulegen. Oftmals fehlt ihnen das Wissen, um den Marktwert ihrer Angebote richtig einzuschätzen. Airbnb Inc. könnte eine intelligente Preisgestaltungslösung bereitstellen, um Gastgebern dabei zu helfen, marktgerechte Preise zu bestimmen. Diese Fallstudie untersucht die Machbarkeit einer automatisierten Preisberechnung basierend auf den Eigenschaften der Unterkünfte und deren Einfluss auf die Preisgestaltung. Ziel ist es, ein Modell zu entwickeln, das genaue Preisvorhersagen für zukünftige Buchungen ermöglicht." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Datengrundlage\n", + "Der verwendete Datensatz stammt von Airbnb Berlin und umfasst 16 Merkmale und 22.552 Zeilen. Die Merkmale beinhalten:\n", + "\n", + "Sieben Integer\n", + "Fünf Objekte (vier Strings und ein Datum)\n", + "Vier Floats\n", + "Die Daten werden analysiert, um relevante Merkmale zu identifizieren und auszuwählen, die einen signifikanten Einfluss auf den Preis haben." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# ML Strategie\n", + "Die Strategie umfasst die schrittweise Datenvorbereitung, Modellierung und Evaluation basierend auf den ausgewählten Merkmalen. Das Ziel ist es, verschiedene Modelle zu testen und das beste Modell für die Preisvorhersage auszuwählen. Der Prozess folgt einer systematischen Vorgehensweise, einschließlich explorativer Datenanalyse, Bereinigung, Merkmalsauswahl und Modellbewertung." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Datenvorbereitung\n", + "Details und einzelne Schritte:\n", + "\n", + "### Import von relevanten Modulen:\n", + "\n", + "Bibliotheken wie Pandas, NumPy, Matplotlib und Scikit-Learn werden importiert.\n", + "\n", + "### Daten auslesen:\n", + "\n", + "Laden und erste Inspektion des Datensatzes.\n", + "\n", + "### Deskriptive Analyse:\n", + "\n", + "Durchführung einer explorativen Datenanalyse (EDA) mit Fokus auf numerische und kategorische Merkmale.\n", + "\n", + "### Datenbereinigung:\n", + "\n", + "Behandlung fehlender Werte und Entfernung von Duplikaten.\n", + "Korrektur falscher Werte und Identifikation von Ausreißern, insbesondere beim Preis, calculated_host_listings_count und availability_365.\n", + "\n", + "### Iterative Merkmalsauswahl:\n", + "\n", + "Auswahl relevanter Merkmale, die signifikanten Einfluss auf die Preisvorhersage haben.\n", + "\n", + "### Erstellung von Dummy-Variablen:\n", + "\n", + "Umwandlung kategorialer Variablen in numerische Formate zur Nutzung in ML-Algorithmen.\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Datenmodellierung\n", + "\n", + "### Multiple lineare Regression:\n", + "\n", + "Feature-Skalierung: Standardisierung der Merkmale.\n", + "\n", + "Train-Test-Split: Aufteilung des Datensatzes zur Vermeidung von Overfitting.\n", + "\n", + "Produktion der Regression: Berechnung von R², mittlerem absoluten Fehler und mittlerem quadratischen Fehler.\n", + "\n", + "### Random Forest Regressor:\n", + "\n", + "Feature-Skalierung: Standardisierung der Merkmale.\n", + "\n", + "Train-Test-Split: Aufteilung des Datensatzes zur Vermeidung von Overfitting.\n", + "\n", + "Produktion der Regression: Bewertung mittels mittlerem absoluten Fehler und mittlerem quadratischen Fehler.\n", + "\n", + "### Neural Network mit Keras:\n", + "\n", + "Feature-Skalierung: Standardisierung der Merkmale.\n", + "\n", + "Train-Test-Split: Aufteilung des Datensatzes zur Vermeidung von Overfitting.\n", + "\n", + "Produktion der Modelle: Training und Bewertung des neuronalen Netzes." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Modellevaluation\n", + "\n", + "Bewertung der Modellleistung anhand von Metriken wie R², mittlerer absoluter Fehler und mittlerer quadratischer Fehler.\n", + "Analyse der Residuen zur Überprüfung der Vorhersagegenauigkeit." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Szenarien für ein Deployment\n", + "\n", + "### Batch-Deployment:\n", + "\n", + "Regelmäßige Aktualisierung des Modells mit neuen Daten zur Sicherstellung der Vorhersagegenauigkeit.\n", + "Anwendung des Modells für Batch-Vorhersagen zur Preisbestimmung.\n", + "\n", + "### Echtzeit-Deployment:\n", + "\n", + "Integration des Modells in die Airbnb-Plattform für sofortige Preisempfehlungen.\n", + "Anpassung der Empfehlungen in Echtzeit basierend auf Nutzer- und Marktdaten.\n", + "\n", + "### A/B-Testing:\n", + "\n", + "Durchführung von A/B-Tests zur Bewertung der Modellleistung in einer Produktionsumgebung.\n", + "Vergleich der automatisierten Preisvorschläge mit manuellen Preissetzungen.\n", + "### Kontinuierliche Überwachung:\n", + "\n", + "Implementierung von Monitoring-Systemen zur Überwachung der Modellleistung.\n", + "Anpassung und Re-Training des Modells basierend auf neuen Daten und sich ändernden Marktbedingungen." + ] + }, { "cell_type": "markdown", "metadata": {}, "source": [ "# 1. Business Understanding\n", "\n", - "Gastgeber k\u00f6nnen einen Preis f\u00fcr die Unterkunft festlegen. Allerdings wissen die Gastgeber oft nicht, welchen Wert die von ihnen angebotene Unterkunft hat. Es w\u00e4re hilfreich, wenn Airbnb Inc. einen marktgerechten Preis f\u00fcr Unterk\u00fcnfte berechnen und vorschlagen k\u00f6nnte. Die M\u00f6glichkeit einer automatischen Preisberechnung wird in dieser Fallstudie n\u00e4her untersucht. Es wird analysiert, ob die Bereitstellung einer intelligenten Preisgestaltung seitens Airbnb Inc. m\u00f6glich ist. In der Analyse werden die Merkmale einer Unterkunft analysiert und es wird ermittelt, welche Merkmale einen Einfluss auf den Preis einer Unterkunft haben. Auf diese Weise soll eine m\u00f6glichst gute Preisvorhersage f\u00fcr Unterk\u00fcnfte, die in der Zukunft gebucht werden, getroffen werden k\u00f6nnen." + "Gastgeber können einen Preis für die Unterkunft festlegen. Allerdings wissen die Gastgeber oft nicht, welchen Wert die von ihnen angebotene Unterkunft hat. Es wäre hilfreich, wenn Airbnb Inc. einen marktgerechten Preis für Unterkünfte berechnen und vorschlagen könnte. Die Möglichkeit einer automatischen Preisberechnung wird in dieser Fallstudie näher untersucht. Es wird analysiert, ob die Bereitstellung einer intelligenten Preisgestaltung seitens Airbnb Inc. möglich ist. In der Analyse werden die Merkmale einer Unterkunft analysiert und es wird ermittelt, welche Merkmale einen Einfluss auf den Preis einer Unterkunft haben. Auf diese Weise soll eine möglichst gute Preisvorhersage für Unterkünfte, die in der Zukunft gebucht werden, getroffen werden können." ] }, { @@ -15,7 +144,7 @@ "source": [ "# 2. Data Understanding\n", "\n", - "Der Abschnitt Datenverst\u00e4ndnis gliedert sich in einen umfassenden \u00dcberblick \u00fcber den Datensatz, gefolgt von einer explorativen Datenanalyse, die sich auf relevante Merkmale konzentriert. Die Merkmale werden auf ihre Tauglichkeit hin bewertet und es erfolgt eine Merkmalsauswahl. Der Airbnb-Berlin-Datensatz besteht aus 16 Spalten und 22552 Zeilen. Die 16 Spalten enthalten die Merkmale. Die Datentypen der Merkmale sind sieben Integer, f\u00fcnf Objects (davon vier Strings und ein Date) und vier Floats. " + "Der Abschnitt Datenverständnis gliedert sich in einen umfassenden Überblick über den Datensatz, gefolgt von einer explorativen Datenanalyse, die sich auf relevante Merkmale konzentriert. Die Merkmale werden auf ihre Tauglichkeit hin bewertet und es erfolgt eine Merkmalsauswahl. Der Airbnb-Berlin-Datensatz besteht aus 16 Spalten und 22552 Zeilen. Die 16 Spalten enthalten die Merkmale. Die Datentypen der Merkmale sind sieben Integer, fünf Objects (davon vier Strings und ein Date) und vier Floats. " ] }, { @@ -221,7 +350,7 @@ " <td>2217</td>\n", " <td>Ian</td>\n", " <td>Mitte</td>\n", - " <td>Brunnenstr. S\u00fcd</td>\n", + " <td>Brunnenstr. Süd</td>\n", " <td>52.534537</td>\n", " <td>13.402557</td>\n", " <td>Entire home/apt</td>\n", @@ -259,7 +388,7 @@ " <td>3718</td>\n", " <td>Britta</td>\n", " <td>Pankow</td>\n", - " <td>Prenzlauer Berg S\u00fcdwest</td>\n", + " <td>Prenzlauer Berg Südwest</td>\n", " <td>52.534996</td>\n", " <td>13.417579</td>\n", " <td>Entire home/apt</td>\n", @@ -274,11 +403,11 @@ " <tr>\n", " <th>3</th>\n", " <td>3309</td>\n", - " <td>BerlinSpot Sch\u00f6neberg near KaDeWe</td>\n", + " <td>BerlinSpot Schöneberg near KaDeWe</td>\n", " <td>4108</td>\n", " <td>Jana</td>\n", - " <td>Tempelhof - Sch\u00f6neberg</td>\n", - " <td>Sch\u00f6neberg-Nord</td>\n", + " <td>Tempelhof - Schöneberg</td>\n", + " <td>Schöneberg-Nord</td>\n", " <td>52.498855</td>\n", " <td>13.349065</td>\n", " <td>Private room</td>\n", @@ -318,14 +447,14 @@ "0 2015 Berlin-Mitte Value! Quiet courtyard/very central 2217 Ian \n", "1 2695 Prenzlauer Berg close to Mauerpark 2986 Michael \n", "2 3176 Fabulous Flat in great Location 3718 Britta \n", - "3 3309 BerlinSpot Sch\u00f6neberg near KaDeWe 4108 Jana \n", + "3 3309 BerlinSpot Schöneberg near KaDeWe 4108 Jana \n", "4 7071 BrightRoom with sunny greenview! 17391 Bright \n", "\n", " neighbourhood_group neighbourhood latitude longitude \\\n", - "0 Mitte Brunnenstr. S\u00fcd 52.534537 13.402557 \n", + "0 Mitte Brunnenstr. Süd 52.534537 13.402557 \n", "1 Pankow Prenzlauer Berg Nordwest 52.548513 13.404553 \n", - "2 Pankow Prenzlauer Berg S\u00fcdwest 52.534996 13.417579 \n", - "3 Tempelhof - Sch\u00f6neberg Sch\u00f6neberg-Nord 52.498855 13.349065 \n", + "2 Pankow Prenzlauer Berg Südwest 52.534996 13.417579 \n", + "3 Tempelhof - Schöneberg Schöneberg-Nord 52.498855 13.349065 \n", "4 Pankow Helmholtzplatz 52.543157 13.415091 \n", "\n", " room_type price minimum_nights number_of_reviews last_review \\\n", @@ -737,7 +866,7 @@ "source": [ "### Explorative Datenanalyse\n", "\n", - "In diesem Kapitel werden Analysen und Visualisierungen der verf\u00fcgbaren Daten vorgenommen." + "In diesem Kapitel werden Analysen und Visualisierungen der verfügbaren Daten vorgenommen." ] }, { @@ -1058,9 +1187,9 @@ { "data": { "text/plain": [ - "array(['Mitte', 'Pankow', 'Tempelhof - Sch\u00f6neberg',\n", - " 'Friedrichshain-Kreuzberg', 'Neuk\u00f6lln', 'Charlottenburg-Wilm.',\n", - " 'Treptow - K\u00f6penick', 'Steglitz - Zehlendorf', 'Reinickendorf',\n", + "array(['Mitte', 'Pankow', 'Tempelhof - Schöneberg',\n", + " 'Friedrichshain-Kreuzberg', 'Neukölln', 'Charlottenburg-Wilm.',\n", + " 'Treptow - Köpenick', 'Steglitz - Zehlendorf', 'Reinickendorf',\n", " 'Lichtenberg', 'Marzahn - Hellersdorf', 'Spandau'], dtype=object)" ] }, @@ -1086,11 +1215,11 @@ "Friedrichshain-Kreuzberg 5497\n", "Mitte 4631\n", "Pankow 3541\n", - "Neuk\u00f6lln 3499\n", + "Neukölln 3499\n", "Charlottenburg-Wilm. 1592\n", - "Tempelhof - Sch\u00f6neberg 1560\n", + "Tempelhof - Schöneberg 1560\n", "Lichtenberg 688\n", - "Treptow - K\u00f6penick 595\n", + "Treptow - Köpenick 595\n", "Steglitz - Zehlendorf 437\n", "Reinickendorf 247\n", "Marzahn - Hellersdorf 141\n", @@ -1134,9 +1263,9 @@ { "data": { "text/plain": [ - "array(['Mitte', 'Pankow', 'Tempelhof-Sch\u00f6neberg',\n", - " 'Friedrichshain-Kreuzberg', 'Neuk\u00f6lln',\n", - " 'Charlottenburg-Wilmersdorf', 'Treptow-K\u00f6penick',\n", + "array(['Mitte', 'Pankow', 'Tempelhof-Schöneberg',\n", + " 'Friedrichshain-Kreuzberg', 'Neukölln',\n", + " 'Charlottenburg-Wilmersdorf', 'Treptow-Köpenick',\n", " 'Steglitz-Zehlendorf', 'Reinickendorf', 'Lichtenberg',\n", " 'Marzahn-Hellersdorf', 'Spandau'], dtype=object)" ] @@ -1359,9 +1488,9 @@ " ... \n", "Wilhelmstadt 44.454545\n", "Zehlendorf Nord 72.363636\n", - "Zehlendorf S\u00fcdwest 88.450000\n", - "n\u00f6rdliche Luisenstadt 61.613636\n", - "s\u00fcdliche Luisenstadt 59.598756\n", + "Zehlendorf Südwest 88.450000\n", + "nördliche Luisenstadt 61.613636\n", + "südliche Luisenstadt 59.598756\n", "Name: price, Length: 136, dtype: float64" ] }, @@ -2012,7 +2141,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### Duplikate pr\u00fcfen" + "### Duplikate prüfen" ] }, { @@ -2584,7 +2713,7 @@ " <td>2015</td>\n", " <td>2217</td>\n", " <td>Mitte</td>\n", - " <td>Brunnenstr. S\u00fcd</td>\n", + " <td>Brunnenstr. Süd</td>\n", " <td>52.534537</td>\n", " <td>13.402557</td>\n", " <td>Entire home/apt</td>\n", @@ -2614,7 +2743,7 @@ " <td>3176</td>\n", " <td>3718</td>\n", " <td>Pankow</td>\n", - " <td>Prenzlauer Berg S\u00fcdwest</td>\n", + " <td>Prenzlauer Berg Südwest</td>\n", " <td>52.534996</td>\n", " <td>13.417579</td>\n", " <td>Entire home/apt</td>\n", @@ -2628,8 +2757,8 @@ " <th>3</th>\n", " <td>3309</td>\n", " <td>4108</td>\n", - " <td>Tempelhof-Sch\u00f6neberg</td>\n", - " <td>Sch\u00f6neberg-Nord</td>\n", + " <td>Tempelhof-Schöneberg</td>\n", + " <td>Schöneberg-Nord</td>\n", " <td>52.498855</td>\n", " <td>13.349065</td>\n", " <td>Private room</td>\n", @@ -2660,10 +2789,10 @@ ], "text/plain": [ " id host_id neighbourhood_group neighbourhood latitude \\\n", - "0 2015 2217 Mitte Brunnenstr. S\u00fcd 52.534537 \n", + "0 2015 2217 Mitte Brunnenstr. Süd 52.534537 \n", "1 2695 2986 Pankow Prenzlauer Berg Nordwest 52.548513 \n", - "2 3176 3718 Pankow Prenzlauer Berg S\u00fcdwest 52.534996 \n", - "3 3309 4108 Tempelhof-Sch\u00f6neberg Sch\u00f6neberg-Nord 52.498855 \n", + "2 3176 3718 Pankow Prenzlauer Berg Südwest 52.534996 \n", + "3 3309 4108 Tempelhof-Schöneberg Schöneberg-Nord 52.498855 \n", "4 7071 17391 Pankow Helmholtzplatz 52.543157 \n", "\n", " longitude room_type price minimum_nights number_of_reviews \\\n", @@ -2761,7 +2890,7 @@ " </tr>\n", " <tr>\n", " <th>3</th>\n", - " <td>Tempelhof-Sch\u00f6neberg</td>\n", + " <td>Tempelhof-Schöneberg</td>\n", " <td>Private room</td>\n", " <td>26</td>\n", " <td>1</td>\n", @@ -2784,7 +2913,7 @@ "0 Mitte Entire home/apt 60 \n", "1 Pankow Private room 17 \n", "2 Pankow Entire home/apt 90 \n", - "3 Tempelhof-Sch\u00f6neberg Private room 26 \n", + "3 Tempelhof-Schöneberg Private room 26 \n", "4 Pankow Private room 42 \n", "\n", " calculated_host_listings_count availability_365 \n", @@ -2815,7 +2944,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### Ausrei\u00dfer " + "### Ausreißer " ] }, { @@ -3164,7 +3293,7 @@ { "data": { "text/plain": [ - "Text(0.5, 1.0, 'Verteilung: Unterkunftverf\u00fcgbarkeit')" + "Text(0.5, 1.0, 'Verteilung: Unterkunftverfügbarkeit')" ] }, "execution_count": 66, @@ -3184,7 +3313,7 @@ ], "source": [ "sns.distplot(data_3['availability_365'])\n", - "plt.title(\"Verteilung: Unterkunftverf\u00fcgbarkeit\")" + "plt.title(\"Verteilung: Unterkunftverfügbarkeit\")" ] }, { @@ -3427,7 +3556,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "## 3.1 Index zur\u00fccksetzen" + "## 3.1 Index zurücksetzen" ] }, { @@ -3674,7 +3803,7 @@ " </tr>\n", " <tr>\n", " <th>3</th>\n", - " <td>Tempelhof-Sch\u00f6neberg</td>\n", + " <td>Tempelhof-Schöneberg</td>\n", " <td>Private room</td>\n", " <td>26</td>\n", " <td>1</td>\n", @@ -3706,7 +3835,7 @@ " </tr>\n", " <tr>\n", " <th>19816</th>\n", - " <td>Tempelhof-Sch\u00f6neberg</td>\n", + " <td>Tempelhof-Schöneberg</td>\n", " <td>Shared room</td>\n", " <td>20</td>\n", " <td>6</td>\n", @@ -3730,7 +3859,7 @@ " </tr>\n", " <tr>\n", " <th>19819</th>\n", - " <td>Neuk\u00f6lln</td>\n", + " <td>Neukölln</td>\n", " <td>Private room</td>\n", " <td>45</td>\n", " <td>1</td>\n", @@ -3738,7 +3867,7 @@ " </tr>\n", " </tbody>\n", "</table>\n", - "<p>19820 rows \u00d7 5 columns</p>\n", + "<p>19820 rows × 5 columns</p>\n", "</div>" ], "text/plain": [ @@ -3746,14 +3875,14 @@ "0 Mitte Entire home/apt 60 \n", "1 Pankow Private room 17 \n", "2 Pankow Entire home/apt 90 \n", - "3 Tempelhof-Sch\u00f6neberg Private room 26 \n", + "3 Tempelhof-Schöneberg Private room 26 \n", "4 Pankow Private room 42 \n", "... ... ... ... \n", "19815 Mitte Entire home/apt 60 \n", - "19816 Tempelhof-Sch\u00f6neberg Shared room 20 \n", + "19816 Tempelhof-Schöneberg Shared room 20 \n", "19817 Pankow Entire home/apt 85 \n", "19818 Mitte Private room 99 \n", - "19819 Neuk\u00f6lln Private room 45 \n", + "19819 Neukölln Private room 45 \n", "\n", " calculated_host_listings_count availability_365 \n", "0 4 141 \n", @@ -3784,14 +3913,14 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "## 3.2 \u00dcberpr\u00fcfung der OLS-Annahmen" + "## 3.2 Überprüfung der OLS-Annahmen" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "### 3.2.1 Annahme der Linearit\u00e4t" + "### 3.2.1 Annahme der Linearität" ] }, { @@ -3944,7 +4073,7 @@ " </tr>\n", " <tr>\n", " <th>3</th>\n", - " <td>Tempelhof-Sch\u00f6neberg</td>\n", + " <td>Tempelhof-Schöneberg</td>\n", " <td>Private room</td>\n", " <td>26</td>\n", " <td>1</td>\n", @@ -3980,7 +4109,7 @@ " </tr>\n", " <tr>\n", " <th>19816</th>\n", - " <td>Tempelhof-Sch\u00f6neberg</td>\n", + " <td>Tempelhof-Schöneberg</td>\n", " <td>Shared room</td>\n", " <td>20</td>\n", " <td>6</td>\n", @@ -4007,7 +4136,7 @@ " </tr>\n", " <tr>\n", " <th>19819</th>\n", - " <td>Neuk\u00f6lln</td>\n", + " <td>Neukölln</td>\n", " <td>Private room</td>\n", " <td>45</td>\n", " <td>1</td>\n", @@ -4016,7 +4145,7 @@ " </tr>\n", " </tbody>\n", "</table>\n", - "<p>19820 rows \u00d7 6 columns</p>\n", + "<p>19820 rows × 6 columns</p>\n", "</div>" ], "text/plain": [ @@ -4024,14 +4153,14 @@ "0 Mitte Entire home/apt 60 \n", "1 Pankow Private room 17 \n", "2 Pankow Entire home/apt 90 \n", - "3 Tempelhof-Sch\u00f6neberg Private room 26 \n", + "3 Tempelhof-Schöneberg Private room 26 \n", "4 Pankow Private room 42 \n", "... ... ... ... \n", "19815 Mitte Entire home/apt 60 \n", - "19816 Tempelhof-Sch\u00f6neberg Shared room 20 \n", + "19816 Tempelhof-Schöneberg Shared room 20 \n", "19817 Pankow Entire home/apt 85 \n", "19818 Mitte Private room 99 \n", - "19819 Neuk\u00f6lln Private room 45 \n", + "19819 Neukölln Private room 45 \n", "\n", " calculated_host_listings_count availability_365 log_price \n", "0 4 141 4.094345 \n", @@ -4138,7 +4267,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### 3.2.2 Annahme \"Keine Multikollinearit\u00e4t\"" + "### 3.2.2 Annahme \"Keine Multikollinearität\"" ] }, { @@ -4317,7 +4446,7 @@ " <td>3848</td>\n", " </tr>\n", " <tr>\n", - " <th>Neuk\u00f6lln</th>\n", + " <th>Neukölln</th>\n", " <td>3313</td>\n", " <td>3313</td>\n", " <td>3313</td>\n", @@ -4352,14 +4481,14 @@ " <td>368</td>\n", " </tr>\n", " <tr>\n", - " <th>Tempelhof-Sch\u00f6neberg</th>\n", + " <th>Tempelhof-Schöneberg</th>\n", " <td>1357</td>\n", " <td>1357</td>\n", " <td>1357</td>\n", " <td>1357</td>\n", " </tr>\n", " <tr>\n", - " <th>Treptow-K\u00f6penick</th>\n", + " <th>Treptow-Köpenick</th>\n", " <td>539</td>\n", " <td>539</td>\n", " <td>539</td>\n", @@ -4377,13 +4506,13 @@ "Lichtenberg 625 625 \n", "Marzahn-Hellersdorf 110 110 \n", "Mitte 3848 3848 \n", - "Neuk\u00f6lln 3313 3313 \n", + "Neukölln 3313 3313 \n", "Pankow 3110 3110 \n", "Reinickendorf 206 206 \n", "Spandau 78 78 \n", "Steglitz-Zehlendorf 368 368 \n", - "Tempelhof-Sch\u00f6neberg 1357 1357 \n", - "Treptow-K\u00f6penick 539 539 \n", + "Tempelhof-Schöneberg 1357 1357 \n", + "Treptow-Köpenick 539 539 \n", "\n", " availability_365 log_price \n", "neighbourhood_group \n", @@ -4392,13 +4521,13 @@ "Lichtenberg 625 625 \n", "Marzahn-Hellersdorf 110 110 \n", "Mitte 3848 3848 \n", - "Neuk\u00f6lln 3313 3313 \n", + "Neukölln 3313 3313 \n", "Pankow 3110 3110 \n", "Reinickendorf 206 206 \n", "Spandau 78 78 \n", "Steglitz-Zehlendorf 368 368 \n", - "Tempelhof-Sch\u00f6neberg 1357 1357 \n", - "Treptow-K\u00f6penick 539 539 " + "Tempelhof-Schöneberg 1357 1357 \n", + "Treptow-Köpenick 539 539 " ] }, "execution_count": 83, @@ -4478,7 +4607,7 @@ " </tr>\n", " <tr>\n", " <th>3</th>\n", - " <td>Tempelhof-Sch\u00f6neberg</td>\n", + " <td>Tempelhof-Schöneberg</td>\n", " <td>Private room</td>\n", " <td>1</td>\n", " <td>297</td>\n", @@ -4501,7 +4630,7 @@ "0 Mitte Entire home/apt 4 \n", "1 Pankow Private room 1 \n", "2 Pankow Entire home/apt 1 \n", - "3 Tempelhof-Sch\u00f6neberg Private room 1 \n", + "3 Tempelhof-Schöneberg Private room 1 \n", "4 Pankow Private room 1 \n", "\n", " availability_365 log_price \n", @@ -4572,13 +4701,13 @@ " <th>neighbourhood_group_Lichtenberg</th>\n", " <th>neighbourhood_group_Marzahn-Hellersdorf</th>\n", " <th>neighbourhood_group_Mitte</th>\n", - " <th>neighbourhood_group_Neuk\u00f6lln</th>\n", + " <th>neighbourhood_group_Neukölln</th>\n", " <th>neighbourhood_group_Pankow</th>\n", " <th>neighbourhood_group_Reinickendorf</th>\n", " <th>neighbourhood_group_Spandau</th>\n", " <th>neighbourhood_group_Steglitz-Zehlendorf</th>\n", - " <th>neighbourhood_group_Tempelhof-Sch\u00f6neberg</th>\n", - " <th>neighbourhood_group_Treptow-K\u00f6penick</th>\n", + " <th>neighbourhood_group_Tempelhof-Schöneberg</th>\n", + " <th>neighbourhood_group_Treptow-Köpenick</th>\n", " <th>room_type_Private room</th>\n", " <th>room_type_Shared room</th>\n", " </tr>\n", @@ -4705,7 +4834,7 @@ "3 0 0 \n", "4 0 0 \n", "\n", - " neighbourhood_group_Mitte neighbourhood_group_Neuk\u00f6lln \\\n", + " neighbourhood_group_Mitte neighbourhood_group_Neukölln \\\n", "0 1 0 \n", "1 0 0 \n", "2 0 0 \n", @@ -4726,14 +4855,14 @@ "3 0 0 \n", "4 0 0 \n", "\n", - " neighbourhood_group_Tempelhof-Sch\u00f6neberg \\\n", + " neighbourhood_group_Tempelhof-Schöneberg \\\n", "0 0 \n", "1 0 \n", "2 0 \n", "3 1 \n", "4 0 \n", "\n", - " neighbourhood_group_Treptow-K\u00f6penick room_type_Private room \\\n", + " neighbourhood_group_Treptow-Köpenick room_type_Private room \\\n", "0 0 0 \n", "1 0 1 \n", "2 0 0 \n", @@ -4789,12 +4918,12 @@ " 'neighbourhood_group_Friedrichshain-Kreuzberg',\n", " 'neighbourhood_group_Lichtenberg',\n", " 'neighbourhood_group_Marzahn-Hellersdorf',\n", - " 'neighbourhood_group_Mitte', 'neighbourhood_group_Neuk\u00f6lln',\n", + " 'neighbourhood_group_Mitte', 'neighbourhood_group_Neukölln',\n", " 'neighbourhood_group_Pankow', 'neighbourhood_group_Reinickendorf',\n", " 'neighbourhood_group_Spandau',\n", " 'neighbourhood_group_Steglitz-Zehlendorf',\n", - " 'neighbourhood_group_Tempelhof-Sch\u00f6neberg',\n", - " 'neighbourhood_group_Treptow-K\u00f6penick', 'room_type_Private room',\n", + " 'neighbourhood_group_Tempelhof-Schöneberg',\n", + " 'neighbourhood_group_Treptow-Köpenick', 'room_type_Private room',\n", " 'room_type_Shared room'], dtype=object)" ] }, @@ -4817,12 +4946,12 @@ " 'neighbourhood_group_Friedrichshain-Kreuzberg',\n", " 'neighbourhood_group_Lichtenberg',\n", " 'neighbourhood_group_Marzahn-Hellersdorf',\n", - " 'neighbourhood_group_Mitte', 'neighbourhood_group_Neuk\u00f6lln',\n", + " 'neighbourhood_group_Mitte', 'neighbourhood_group_Neukölln',\n", " 'neighbourhood_group_Pankow', 'neighbourhood_group_Reinickendorf',\n", " 'neighbourhood_group_Spandau',\n", " 'neighbourhood_group_Steglitz-Zehlendorf',\n", - " 'neighbourhood_group_Tempelhof-Sch\u00f6neberg',\n", - " 'neighbourhood_group_Treptow-K\u00f6penick', 'room_type_Private room',\n", + " 'neighbourhood_group_Tempelhof-Schöneberg',\n", + " 'neighbourhood_group_Treptow-Köpenick', 'room_type_Private room',\n", " 'room_type_Shared room']\n", "# Actual vs. Predicted plotted" ] @@ -4869,13 +4998,13 @@ " <th>neighbourhood_group_Lichtenberg</th>\n", " <th>neighbourhood_group_Marzahn-Hellersdorf</th>\n", " <th>neighbourhood_group_Mitte</th>\n", - " <th>neighbourhood_group_Neuk\u00f6lln</th>\n", + " <th>neighbourhood_group_Neukölln</th>\n", " <th>neighbourhood_group_Pankow</th>\n", " <th>neighbourhood_group_Reinickendorf</th>\n", " <th>neighbourhood_group_Spandau</th>\n", " <th>neighbourhood_group_Steglitz-Zehlendorf</th>\n", - " <th>neighbourhood_group_Tempelhof-Sch\u00f6neberg</th>\n", - " <th>neighbourhood_group_Treptow-K\u00f6penick</th>\n", + " <th>neighbourhood_group_Tempelhof-Schöneberg</th>\n", + " <th>neighbourhood_group_Treptow-Köpenick</th>\n", " <th>room_type_Private room</th>\n", " <th>room_type_Shared room</th>\n", " </tr>\n", @@ -5002,7 +5131,7 @@ "3 0 0 \n", "4 0 0 \n", "\n", - " neighbourhood_group_Mitte neighbourhood_group_Neuk\u00f6lln \\\n", + " neighbourhood_group_Mitte neighbourhood_group_Neukölln \\\n", "0 1 0 \n", "1 0 0 \n", "2 0 0 \n", @@ -5023,14 +5152,14 @@ "3 0 0 \n", "4 0 0 \n", "\n", - " neighbourhood_group_Tempelhof-Sch\u00f6neberg \\\n", + " neighbourhood_group_Tempelhof-Schöneberg \\\n", "0 0 \n", "1 0 \n", "2 0 \n", "3 1 \n", "4 0 \n", "\n", - " neighbourhood_group_Treptow-K\u00f6penick room_type_Private room \\\n", + " neighbourhood_group_Treptow-Köpenick room_type_Private room \\\n", "0 0 0 \n", "1 0 1 \n", "2 0 0 \n", @@ -5059,8 +5188,7 @@ "metadata": {}, "source": [ "# 4. Modellierung und Evaluation\n", - "\n", - "Residuen geben Auskunft dar\u00fcber, wie genau die abh\u00e4ngige Variable in einer Regression gesch\u00e4tzt werden kann. Sie geben an, wie weit der vorhergesagte Wert mit dem tats\u00e4chlichen Wert \u00fcbereinstimmt. Je kleiner die Residuen sind, desto besser." + "Residuen geben Auskunft darüber, wie genau die abhängige Variable in einer Regression geschätzt werden kann. Sie geben an, wie weit der vorhergesagte Wert mit dem tatsächlichen Wert übereinstimmt. Je kleiner die Residuen sind, desto besser." ] }, { @@ -5102,7 +5230,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### Train Test Split (= pr\u00e4sentiert Overfitting) " + "### Train Test Split (= präsentiert Overfitting) " ] }, { @@ -5275,7 +5403,7 @@ " </tr>\n", " <tr>\n", " <th>6</th>\n", - " <td>neighbourhood_group_Neuk\u00f6lln</td>\n", + " <td>neighbourhood_group_Neukölln</td>\n", " <td>-0.016840</td>\n", " </tr>\n", " <tr>\n", @@ -5300,12 +5428,12 @@ " </tr>\n", " <tr>\n", " <th>11</th>\n", - " <td>neighbourhood_group_Tempelhof-Sch\u00f6neberg</td>\n", + " <td>neighbourhood_group_Tempelhof-Schöneberg</td>\n", " <td>0.001984</td>\n", " </tr>\n", " <tr>\n", " <th>12</th>\n", - " <td>neighbourhood_group_Treptow-K\u00f6penick</td>\n", + " <td>neighbourhood_group_Treptow-Köpenick</td>\n", " <td>-0.010983</td>\n", " </tr>\n", " <tr>\n", @@ -5330,13 +5458,13 @@ "3 neighbourhood_group_Lichtenberg -0.021338\n", "4 neighbourhood_group_Marzahn-Hellersdorf -0.012483\n", "5 neighbourhood_group_Mitte 0.020069\n", - "6 neighbourhood_group_Neuk\u00f6lln -0.016840\n", + "6 neighbourhood_group_Neukölln -0.016840\n", "7 neighbourhood_group_Pankow 0.029536\n", "8 neighbourhood_group_Reinickendorf -0.017205\n", "9 neighbourhood_group_Spandau -0.008191\n", "10 neighbourhood_group_Steglitz-Zehlendorf -0.009477\n", - "11 neighbourhood_group_Tempelhof-Sch\u00f6neberg 0.001984\n", - "12 neighbourhood_group_Treptow-K\u00f6penick -0.010983\n", + "11 neighbourhood_group_Tempelhof-Schöneberg 0.001984\n", + "12 neighbourhood_group_Treptow-Köpenick -0.010983\n", "13 room_type_Private room -0.284520\n", "14 room_type_Shared room -0.083829" ] @@ -5756,7 +5884,7 @@ " </tr>\n", " </tbody>\n", "</table>\n", - "<p>3964 rows \u00d7 2 columns</p>\n", + "<p>3964 rows × 2 columns</p>\n", "</div>" ], "text/plain": [ @@ -5887,7 +6015,7 @@ " </tr>\n", " </tbody>\n", "</table>\n", - "<p>3964 rows \u00d7 3 columns</p>\n", + "<p>3964 rows × 3 columns</p>\n", "</div>" ], "text/plain": [ @@ -6029,7 +6157,7 @@ " </tr>\n", " </tbody>\n", "</table>\n", - "<p>3964 rows \u00d7 4 columns</p>\n", + "<p>3964 rows × 4 columns</p>\n", "</div>" ], "text/plain": [ @@ -6359,7 +6487,7 @@ " </tr>\n", " <tr>\n", " <th>3</th>\n", - " <td>Tempelhof-Sch\u00f6neberg</td>\n", + " <td>Tempelhof-Schöneberg</td>\n", " <td>Private room</td>\n", " <td>26</td>\n", " <td>1</td>\n", @@ -6382,7 +6510,7 @@ "0 Mitte Entire home/apt 60 \n", "1 Pankow Private room 17 \n", "2 Pankow Entire home/apt 90 \n", - "3 Tempelhof-Sch\u00f6neberg Private room 26 \n", + "3 Tempelhof-Schöneberg Private room 26 \n", "4 Pankow Private room 42 \n", "\n", " calculated_host_listings_count availability_365 \n", @@ -6443,7 +6571,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### Train Test Split (= pr\u00e4sentiert Overfitting) " + "### Train Test Split (= präsentiert Overfitting) " ] }, { @@ -6546,15 +6674,15 @@ "1 neighbourhood_group_Lichtenberg 0.00\n", "2 neighbourhood_group_Marzahn-Hellersdorf 0.00\n", "3 neighbourhood_group_Mitte 0.00\n", - "4 neighbourhood_group_Neuk\u00f6lln 0.00\n", + "4 neighbourhood_group_Neukölln 0.00\n", "5 neighbourhood_group_Pankow 0.00\n", "6 neighbourhood_group_Reinickendorf 0.00\n", "7 neighbourhood_group_Spandau 0.00\n", "8 neighbourhood_group_Steglitz-Zehlendorf 0.00\n", - "9 neighbourhood_group_Treptow-K\u00f6penick 0.00\n", + "9 neighbourhood_group_Treptow-Köpenick 0.00\n", "10 room_type_Shared room 0.00\n", "11 neighbourhood_group_Charlottenburg-Wilmersdorf 0.01\n", - "12 neighbourhood_group_Tempelhof-Sch\u00f6neberg 0.02\n", + "12 neighbourhood_group_Tempelhof-Schöneberg 0.02\n", "13 availability_365 0.10\n", "14 room_type_Entire home/apt 0.20\n", "15 room_type_Private room 0.25\n", @@ -6847,7 +6975,7 @@ " </tr>\n", " </tbody>\n", "</table>\n", - "<p>4509 rows \u00d7 2 columns</p>\n", + "<p>4509 rows × 2 columns</p>\n", "</div>" ], "text/plain": [ @@ -6978,7 +7106,7 @@ " </tr>\n", " </tbody>\n", "</table>\n", - "<p>4509 rows \u00d7 3 columns</p>\n", + "<p>4509 rows × 3 columns</p>\n", "</div>" ], "text/plain": [ @@ -7120,7 +7248,7 @@ " </tr>\n", " </tbody>\n", "</table>\n", - "<p>4509 rows \u00d7 4 columns</p>\n", + "<p>4509 rows × 4 columns</p>\n", "</div>" ], "text/plain": [ @@ -7612,6 +7740,7 @@ } ], "metadata": { + "category": "Rating", "kernelspec": { "display_name": "Python 3", "language": "python", @@ -7629,9 +7758,8 @@ "pygments_lexer": "ipython3", "version": "3.8.9" }, - "title": "Accommodation rating", - "category": "Rating" + "title": "Accommodation rating" }, "nbformat": 4, "nbformat_minor": 4 -} \ No newline at end of file +} diff --git a/Rating/Digital Valuation of Real Estate/notebook.ipynb b/Rating/Digital Valuation of Real Estate/notebook.ipynb index 571437a..09ce819 100644 --- a/Rating/Digital Valuation of Real Estate/notebook.ipynb +++ b/Rating/Digital Valuation of Real Estate/notebook.ipynb @@ -1,5 +1,80 @@ { "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Geschäftlicher Kontext\n", + "Das Unternehmen aus der Immobilienbranche betreibt einen Online-Marktplatz und hat das Ziel, die Bewertung von Unterkünften zu automatisieren. Mithilfe von Künstlicher Intelligenz sollen die gegebenen Merkmale einer Unterkunft analysiert und ein entsprechender Preis berechnet werden. Dies ermöglicht es dem Unternehmen, zu expandieren und die einzelnen Prozessschritte zu digitalisieren, sodass Immobilienobjekte bewertet werden können, ohne dass ein Gutachter vor Ort die Immobilie besichtigen muss." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Datengrundlage\n", + "Die Daten stammen von Immoscout24, der größten Immobilienplattform in Deutschland. Der Datensatz enthält 268.850 Einträge mit 49 Variablen, die Mietobjekte beschreiben. Nur Variablen, die einen direkten Einfluss auf den Mietpreis haben, werden für die Modellierung verwendet. Dies erfordert eine sorgfältige Datenaufbereitung, um irrelevante Informationen zu eliminieren." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# ML Strategie\n", + "Die Strategie besteht darin, ein maschinelles Lernmodell zu entwickeln, das den Mietpreis einer Immobilie vorhersagt. Dies umfasst die Datenvorbereitung, die Modellierung und die Evaluation des Modells, gefolgt von einem möglichen Deployment-Szenario." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Datenmodellierung\n", + "\n", + "### Vorbereitung:\n", + "\n", + "Definition der Zielvariable und Prädiktoren: Die Zielvariable (Mietpreis) wird als \"Targets\" und die Prädiktoren als \"Inputs\" definiert.\n", + "### Skalieren der Daten: \n", + "\n", + "Verwendung des StandardScalers aus scikit-learn, um die Daten zu skalieren.\n", + "Train-Test-Split: Der Datensatz wird in Trainings- (80%) und Testdaten (20%) aufgeteilt.\n", + "\n", + "### Modellerstellung:\n", + "\n", + "Regressionsmodell: Ein Regressionsmodell wird definiert und auf die Trainingsdaten angepasst.\n", + "Modellanpassung: Anwendung des Modells auf die Trainingsdaten und Auswertung der Anpassung durch Vergleich der vorhergesagten Werte mit den tatsächlichen Werten." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Modellevaluation:\n", + "\n", + "Evaluation mit Testdaten: Anwendung des Modells auf die Testdaten und Berechnung des R-Quadrat als Qualitätsmaß.\n", + "Vorhersageauswertung: Vergleich der Vorhersagen mit den tatsächlichen Werten, Berechnung der absoluten und relativen Residuen, sowie der deskriptiven Statistik der Vorhersage- und tatsächlichen Werte.\n", + "Berechnung von MAE, MSE und RMSE: Diese Metriken dienen zur Bewertung der Vorhersagegenauigkeit." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Szenarien für ein Deployment\n", + "\n", + "### Webanwendung: \n", + "\n", + "Implementierung einer benutzerfreundlichen Webanwendung, über die Interessenten Immobilieninformationen eingeben und sofort eine Mietpreisbewertung erhalten können.\n", + "### API: \n", + "\n", + "Entwicklung einer API, die es externen Anwendungen ermöglicht, auf das Bewertungsmodell zuzugreifen.\n", + "### Dashboard: \n", + "\n", + "Erstellung eines internen Dashboards für die Zentrale, um Bewertungen zu überwachen und Berichte zu generieren.\n", + "### Automatisierte Exposéerstellung: \n", + "\n", + "Integration des Modells in den Prozess der Exposéerstellung, um automatisch und zentral Exposés auf Basis der Bewertungsergebnisse zu generieren." + ] + }, { "cell_type": "markdown", "metadata": {}, @@ -7,7 +82,7 @@ "# 1. Business Understanding\n", "\n", "\n", - "Zuvor musste das Maklerb\u00fcro die Vermieter erst als Kunden gewinnen und deren Mietobjekte von einem Gutachter bewerten lassen. Anschlie\u00dfend wurde mit der pers\u00f6nlichen Expertise der Makler ein Expos\u00e9 \u00fcber die Stuttgarter Mietsituation erstellt. Schlie\u00dflich mussten geeignete Kunden f\u00fcr die Mietobjekte gefunden werden. Nun will die Dehner Immobilien GmbH expandieren, aber nicht in jeder Stadt ein neues B\u00fcro mit zus\u00e4tzlichen Maklern er\u00f6ffnen. Deshalb soll der Prozessschritt der Bewertung und Kundenakquise digitalisiert werden. Deshalb soll die Bewertung von Immobilien nun \u00fcber k\u00fcnstliche Intelligenz erfolgen. Hier kann ein Interessent bequem eine Immobilie bewerten lassen, ohne dass ein Gutachter oder ein Makler das Objekt vor Ort besichtigen muss. Die anschlie\u00dfende Erstellung der Expos\u00e9s f\u00fcr die deutschlandweiten Objekte erfolgt ebenfalls zentral von der Zentrale in Stuttgart aus auf Basis der Bewertungsergebnisse. Die zentrale Frage lautet: Wie lassen sich mit ML im Rahmen der Immobilienbewertung optimale Mietpreise vorhersagen?" + "Zuvor musste das Maklerbüro die Vermieter erst als Kunden gewinnen und deren Mietobjekte von einem Gutachter bewerten lassen. Anschließend wurde mit der persönlichen Expertise der Makler ein Exposé über die Stuttgarter Mietsituation erstellt. Schließlich mussten geeignete Kunden für die Mietobjekte gefunden werden. Nun will die Dehner Immobilien GmbH expandieren, aber nicht in jeder Stadt ein neues Büro mit zusätzlichen Maklern eröffnen. Deshalb soll der Prozessschritt der Bewertung und Kundenakquise digitalisiert werden. Deshalb soll die Bewertung von Immobilien nun über künstliche Intelligenz erfolgen. Hier kann ein Interessent bequem eine Immobilie bewerten lassen, ohne dass ein Gutachter oder ein Makler das Objekt vor Ort besichtigen muss. Die anschließende Erstellung der Exposés für die deutschlandweiten Objekte erfolgt ebenfalls zentral von der Zentrale in Stuttgart aus auf Basis der Bewertungsergebnisse. Die zentrale Frage lautet: Wie lassen sich mit ML im Rahmen der Immobilienbewertung optimale Mietpreise vorhersagen?" ] }, { @@ -16,7 +91,7 @@ "source": [ "# 2. Data Understanding\n", "\n", - "Die Daten stammen von Immoscout24, der gr\u00f6\u00dften Immobilienplattform in Deutschland. Immoscout24 listet sowohl Miet- als auch Kaufobjekte. Die Daten, die dieser Arbeit zugrunde liegen, enthalten jedoch nur Angebote f\u00fcr Mietobjekte. Der Datensatz enth\u00e4lt die wichtigsten Objekte. Der Datensatz enth\u00e4lt insgesamt 268.850 Einzeldaten mit jeweils 49 Variablen. Die 49 hier abgebildeten Objekte spiegeln die Beschreibungsm\u00f6glichkeiten von Immobilienscout24 wider. Allerdings eignen sich nicht alle Variablen als Pr\u00e4diktoren f\u00fcr eine multiple lineare Regression. Nur Daten, die einen direkten Zusammenhang oder Einfluss auf den Mietpreis haben und somit ein Muster abbilden k\u00f6nnen, sind daf\u00fcr geeignet. Dies schlie\u00dft zum Beispiel die Art der Heizung oder die St\u00e4rke der Internetverbindung aus. Daher muss die Menge der Variablen in der Datenaufbereitung auf die f\u00fcr die Preisvorhersage relevanten Eigenschaften reduziert werden." + "Die Daten stammen von Immoscout24, der größten Immobilienplattform in Deutschland. Immoscout24 listet sowohl Miet- als auch Kaufobjekte. Die Daten, die dieser Arbeit zugrunde liegen, enthalten jedoch nur Angebote für Mietobjekte. Der Datensatz enthält die wichtigsten Objekte. Der Datensatz enthält insgesamt 268.850 Einzeldaten mit jeweils 49 Variablen. Die 49 hier abgebildeten Objekte spiegeln die Beschreibungsmöglichkeiten von Immobilienscout24 wider. Allerdings eignen sich nicht alle Variablen als Prädiktoren für eine multiple lineare Regression. Nur Daten, die einen direkten Zusammenhang oder Einfluss auf den Mietpreis haben und somit ein Muster abbilden können, sind dafür geeignet. Dies schließt zum Beispiel die Art der Heizung oder die Stärke der Internetverbindung aus. Daher muss die Menge der Variablen in der Datenaufbereitung auf die für die Preisvorhersage relevanten Eigenschaften reduziert werden." ] }, { @@ -113,7 +188,7 @@ " <td>10.0</td>\n", " <td>...</td>\n", " <td>Dortmund</td>\n", - " <td>Sch\u00fcren</td>\n", + " <td>Schüren</td>\n", " <td>Die ebenerdig zu erreichende Erdgeschosswohnun...</td>\n", " <td>Die Wohnung ist mit Laminat ausgelegt. Das Bad...</td>\n", " <td>NaN</td>\n", @@ -137,8 +212,8 @@ " <td>10.0</td>\n", " <td>...</td>\n", " <td>Rhein_Pfalz_Kreis</td>\n", - " <td>B\u00f6hl_Iggelheim</td>\n", - " <td>Alles neu macht der Mai \u2013 so kann es auch f\u00fcr ...</td>\n", + " <td>Böhl_Iggelheim</td>\n", + " <td>Alles neu macht der Mai – so kann es auch für ...</td>\n", " <td>NaN</td>\n", " <td>NaN</td>\n", " <td>NaN</td>\n", @@ -161,9 +236,9 @@ " <td>2.4</td>\n", " <td>...</td>\n", " <td>Dresden</td>\n", - " <td>\u00c4u\u00dfere_Neustadt_Antonstadt</td>\n", + " <td>Äußere_Neustadt_Antonstadt</td>\n", " <td>Der Neubau entsteht im Herzen der Dresdner Neu...</td>\n", - " <td>* 9 m\u00b2 Balkon\\n* Bad mit bodengleicher Dusche,...</td>\n", + " <td>* 9 m² Balkon\\n* Bad mit bodengleicher Dusche,...</td>\n", " <td>NaN</td>\n", " <td>NaN</td>\n", " <td>NaN</td>\n", @@ -186,7 +261,7 @@ " <td>...</td>\n", " <td>Mittelsachsen_Kreis</td>\n", " <td>Freiberg</td>\n", - " <td>Abseits von L\u00e4rm und Abgasen in Ihre neue Wohn...</td>\n", + " <td>Abseits von Lärm und Abgasen in Ihre neue Wohn...</td>\n", " <td>NaN</td>\n", " <td>87.23</td>\n", " <td>NaN</td>\n", @@ -221,7 +296,7 @@ " </tr>\n", " </tbody>\n", "</table>\n", - "<p>5 rows \u00d7 49 columns</p>\n", + "<p>5 rows × 49 columns</p>\n", "</div>" ], "text/plain": [ @@ -247,23 +322,23 @@ "4 2.46 NaN ... Bremen \n", "\n", " regio3 \\\n", - "0 Sch\u00fcren \n", - "1 B\u00f6hl_Iggelheim \n", - "2 \u00c4u\u00dfere_Neustadt_Antonstadt \n", + "0 Schüren \n", + "1 Böhl_Iggelheim \n", + "2 Äußere_Neustadt_Antonstadt \n", "3 Freiberg \n", "4 Neu_Schwachhausen \n", "\n", " description \\\n", "0 Die ebenerdig zu erreichende Erdgeschosswohnun... \n", - "1 Alles neu macht der Mai \u2013 so kann es auch f\u00fcr ... \n", + "1 Alles neu macht der Mai – so kann es auch für ... \n", "2 Der Neubau entsteht im Herzen der Dresdner Neu... \n", - "3 Abseits von L\u00e4rm und Abgasen in Ihre neue Wohn... \n", + "3 Abseits von Lärm und Abgasen in Ihre neue Wohn... \n", "4 Es handelt sich hier um ein saniertes Mehrfami... \n", "\n", " facilities heatingCosts \\\n", "0 Die Wohnung ist mit Laminat ausgelegt. Das Bad... NaN \n", "1 NaN NaN \n", - "2 * 9 m\u00b2 Balkon\\n* Bad mit bodengleicher Dusche,... NaN \n", + "2 * 9 m² Balkon\\n* Bad mit bodengleicher Dusche,... NaN \n", "3 NaN 87.23 \n", "4 Diese Wohnung wurde neu saniert und ist wie fo... NaN \n", "\n", @@ -732,7 +807,7 @@ " </tr>\n", " </tbody>\n", "</table>\n", - "<p>11 rows \u00d7 49 columns</p>\n", + "<p>11 rows × 49 columns</p>\n", "</div>" ], "text/plain": [ @@ -902,7 +977,7 @@ "metadata": {}, "source": [ "## 2.5 Datenbereinigung\n", - "Eliminierung von Daten, die sich nicht f\u00fcr ein Preisvorhersagemodell eignen" + "Eliminierung von Daten, die sich nicht für ein Preisvorhersagemodell eignen" ] }, { @@ -2562,7 +2637,7 @@ " </tr>\n", " </tbody>\n", "</table>\n", - "<p>16755 rows \u00d7 12 columns</p>\n", + "<p>16755 rows × 12 columns</p>\n", "</div>" ], "text/plain": [ @@ -2981,7 +3056,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Untersuchung der Verteilung der \u00fcbrigen Variablen" + "Untersuchung der Verteilung der übrigen Variablen" ] }, { @@ -3028,7 +3103,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "## Ausrei\u00dfer eliminieren" + "## Ausreißer eliminieren" ] }, { @@ -3595,7 +3670,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "\u00dcberpr\u00fcfen Sie die \u00fcbrigen Variablen auf die Verteilung der Daten" + "Überprüfen Sie die übrigen Variablen auf die Verteilung der Daten" ] }, { @@ -4799,9 +4874,9 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Aus den oberen Jointplots l\u00e4sst sich bereits ableiten, dass die Linearit\u00e4t nicht f\u00fcr alle Daten gew\u00e4hrleistet ist.\n", + "Aus den oberen Jointplots lässt sich bereits ableiten, dass die Linearität nicht für alle Daten gewährleistet ist.\n", "\n", - "Daher wird die Zielvariable \u00fcber den Logarithmus transformiert, um die Linearit\u00e4t der Daten herzustellen." + "Daher wird die Zielvariable über den Logarithmus transformiert, um die Linearität der Daten herzustellen." ] }, { @@ -4988,7 +5063,7 @@ " </tr>\n", " </tbody>\n", "</table>\n", - "<p>169772 rows \u00d7 10 columns</p>\n", + "<p>169772 rows × 10 columns</p>\n", "</div>" ], "text/plain": [ @@ -5036,7 +5111,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### \u00dcberpr\u00fcfung der Wirksamkeit der Log-Transformation" + "### Überprüfung der Wirksamkeit der Log-Transformation" ] }, { @@ -5364,7 +5439,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "## 3.2 Annahme Keine Multikollinearit\u00e4t" + "## 3.2 Annahme Keine Multikollinearität" ] }, { @@ -5747,7 +5822,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "## 3.4 Zusammenh\u00e4nge der endg\u00fcltigen Variablen f\u00fcr die Modellierung" + "## 3.4 Zusammenhänge der endgültigen Variablen für die Modellierung" ] }, { @@ -5790,7 +5865,7 @@ "\n", "## 4.1 Vorbereitung der Modellierung\n", "\n", - "Definition der Zielvariablen als \"Targets\" und der Pr\u00e4diktoren als \"Inputs\"." + "Definition der Zielvariablen als \"Targets\" und der Prädiktoren als \"Inputs\"." ] }, { @@ -5895,7 +5970,7 @@ "metadata": {}, "source": [ "### Auswertung des Trainingsdatenmodells\n", - "Vergleich der Vorhersagen mit den tats\u00e4chlichen Werten (Zielen)" + "Vergleich der Vorhersagen mit den tatsächlichen Werten (Zielen)" ] }, { @@ -5971,7 +6046,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "R-Quadrat als Qualit\u00e4tsma\u00df f\u00fcr das Modell" + "R-Quadrat als Qualitätsmaß für das Modell" ] }, { @@ -6016,7 +6091,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Gewichtung der Pr\u00e4diktoren" + "Gewichtung der Prädiktoren" ] }, { @@ -6121,7 +6196,7 @@ "source": [ "## 4.3 Auswertung\n", "\n", - "R-Quadrat als Qualit\u00e4tsma\u00df f\u00fcr das Modell" + "R-Quadrat als Qualitätsmaß für das Modell" ] }, { @@ -6180,7 +6255,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Zuordnung der Vorhersagen der ersten 50 Testdaten zu den tats\u00e4chlichen Werten (Zielvorgaben)." + "Zuordnung der Vorhersagen der ersten 50 Testdaten zu den tatsächlichen Werten (Zielvorgaben)." ] }, { @@ -6223,7 +6298,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Vergleich der Vorhersagen mit den tats\u00e4chlichen Werten (Zielvorgaben)" + "Vergleich der Vorhersagen mit den tatsächlichen Werten (Zielvorgaben)" ] }, { @@ -6333,7 +6408,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Vergleichen Sie die vorhergesagten Werte mit den tats\u00e4chlichen Werten" + "Vergleichen Sie die vorhergesagten Werte mit den tatsächlichen Werten" ] }, { @@ -6609,7 +6684,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Deskriptive Statistik der vorhergesagten Werte, der tats\u00e4chlichen Werte, ihrer absoluten Residuen und der relativen Differenzen" + "Deskriptive Statistik der vorhergesagten Werte, der tatsächlichen Werte, ihrer absoluten Residuen und der relativen Differenzen" ] }, { @@ -6758,6 +6833,7 @@ } ], "metadata": { + "category": "Rating", "kernelspec": { "display_name": "Python 3", "language": "python", @@ -6775,9 +6851,8 @@ "pygments_lexer": "ipython3", "version": "3.8.9" }, - "title": "Digital Valuation of Real Estate", - "category": "Rating" + "title": "Digital Valuation of Real Estate" }, "nbformat": 4, "nbformat_minor": 2 -} \ No newline at end of file +} diff --git a/Rating/What Quality does the Red wine have/notebook.ipynb b/Rating/What Quality does the Red wine have/notebook.ipynb index 813f0ee..7368763 100644 --- a/Rating/What Quality does the Red wine have/notebook.ipynb +++ b/Rating/What Quality does the Red wine have/notebook.ipynb @@ -4,7 +4,110 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "# Welche Qualit\u00e4t hat der Rotwein?" + "# Welche Qualität hat der Rotwein?" + ] + }, + { + "cell_type": "markdown", + "id": "79270447", + "metadata": {}, + "source": [ + "# Geschäftlicher Kontext\n", + "Eine Weinkellerei möchte die Qualität ihrer Weine optimieren, indem sie die Bewertungen professioneller Weinverkoster durch ein maschinelles Lernmodell ersetzt. Ziel ist es, ein Modell zu entwickeln, das die Qualität neuer Weinpartien basierend auf deren chemischen Eigenschaften vorhersagen kann." + ] + }, + { + "cell_type": "markdown", + "id": "0553de64", + "metadata": {}, + "source": [ + "# Datengrundlage\n", + "Der \"Wine Quality Data Set\" wurde von der UCI-Website heruntergeladen und enthält reale Daten aus Nordportugal, erhoben im Jahr 2009. Der Datensatz umfasst 12 Merkmale und 1599 Einträge für Rotwein. Die Merkmale beschreiben die chemischen Eigenschaften und die Qualität des Weins." + ] + }, + { + "cell_type": "markdown", + "id": "6aac6191", + "metadata": {}, + "source": [ + "# ML Strategie\n", + "Das Ziel ist die Entwicklung eines binären Klassifikationsmodells, das die Weinqualität als gut (1) oder schlecht (0) kategorisiert. Dies soll die subjektiven und teuren Bewertungen der Weinverkoster ersetzen." + ] + }, + { + "cell_type": "markdown", + "id": "a902499c", + "metadata": {}, + "source": [ + "# Datenvorbereitung\n", + "### Datenimport und -analyse\n", + "\n", + "Bibliotheken importieren: Python-Bibliotheken wie pandas, numpy, matplotlib und seaborn werden importiert.\n", + "Daten auslesen: Der Datensatz wird in ein DataFrame geladen.\n", + "Deskriptive Datenanalyse: Überblick über die Verteilung der Daten und Identifikation der Merkmale.\n", + "### Datenbereinigung\n", + "\n", + "Null-Werte: Es gibt keine fehlenden Werte.\n", + "Duplikate: Werden nicht entfernt, da sie unterschiedliche Weinpartien repräsentieren könnten.\n", + "### Ausreißerbehandlung\n", + "\n", + "Histogramme: Analyse der Verteilungen der Merkmale.\n", + "Entfernen von Ausreißern: Insbesondere bei Residualzucker und freiem Schwefeldioxid werden auffällige Ausreißer entfernt.\n", + "### Zielvariable transformieren\n", + "\n", + "Binäre Klassifikation: Qualität wird in gut (>=6) und schlecht (<=5) umgewandelt, um ein Klassifikationsproblem zu erstellen.\n", + "### Multikollinearitätstest\n", + "\n", + "Feste Säure: Entfällt aufgrund hoher Korrelation mit dem pH-Wert.\n", + "### Datenteilung\n", + "\n", + "Trainings- und Testdaten: Aufteilung des Datensatzes in Trainings- und Testdatensätze." + ] + }, + { + "cell_type": "markdown", + "id": "fcb4f61f", + "metadata": {}, + "source": [ + "# Datenmodellierung\n", + "### Daten skalieren und transformieren\n", + "\n", + "Die Daten werden standardisiert, um die Leistungsfähigkeit des Modells zu verbessern.\n", + "\n", + "### Modellauswahl und -bildung\n", + "\n", + "Logistische Regression: Erste Modellbildung und Evaluierung.\n", + "Lineare Regression und TensorFlow Klassifikation: Weitere Modelle werden getestet, um die beste Leistung zu erzielen." + ] + }, + { + "cell_type": "markdown", + "id": "6cca68e6", + "metadata": {}, + "source": [ + "# Modellevaluation\n", + "Evaluierung: Die Modelle werden anhand von Metriken wie Genauigkeit, Präzision und Recall bewertet, um die Vorhersagequalität zu bestimmen." + ] + }, + { + "cell_type": "markdown", + "id": "96dd17fd", + "metadata": {}, + "source": [ + "# Szenarien für ein Deployment\n", + "### API-Erstellung\n", + "\n", + "Eine API wird entwickelt, um das trainierte Modell über das Internet oder Intranet zugänglich zu machen. Der Code zur Bereitstellung der API ist auf GitHub verfügbar.\n", + "\n", + "### Modell-Export\n", + "\n", + "Das trainierte TensorFlow-Modell wird exportiert und gespeichert, um es beim Neustart der API nicht neu trainieren zu müssen. Der Datenskalierer wird ebenfalls mit dem Pickle-Modul gespeichert.\n", + "\n", + "Durch diese Schritte kann das ML-Modell in der Produktionsumgebung eingesetzt werden, um die Weinqualität automatisch und effizient vorherzusagen.\n", + "\n", + "\n", + "\n", + "\n" ] }, { @@ -12,11 +115,11 @@ "metadata": {}, "source": [ "# 1. Business Understanding\n", - "Eine Weinkellerei m\u00f6chte sicherstellen, dass sie stets qualitativ hochwertigen und schmackhaften Wein produziert.\n", - "Sie besch\u00e4ftigen professionelle Weinverkoster, die alle neuen Weinpartien testen.\n", + "Eine Weinkellerei möchte sicherstellen, dass sie stets qualitativ hochwertigen und schmackhaften Wein produziert.\n", + "Sie beschäftigen professionelle Weinverkoster, die alle neuen Weinpartien testen.\n", "Diese Fachleute bewerten den Wein dann auf einer Skala von 1 bis 10.\n", "Dieses Verfahren ist jedoch teuer und subjektiv.\n", - "Die Weinmanufaktur m\u00f6chte ein maschinelles Lernmodell einsetzen, um Vorhersagen \u00fcber die Qualit\u00e4t zu treffen.\n", + "Die Weinmanufaktur möchte ein maschinelles Lernmodell einsetzen, um Vorhersagen über die Qualität zu treffen.\n", "Das ultimative Ziel ist die Entwicklung eines Modells \n", "zu entwickeln, das neue Weinpartien anhand ihrer chemischen Eigenschaften automatisch kategorisiert.\n" ] @@ -91,11 +194,11 @@ "source": [ "### Datenbeschreibung\n", "Der Datensatz mit dem Namen \"Wine Quality Data Set\" wurde der UCI-Website entnommen \n", - "entnommen und liefert uns reale Daten f\u00fcr unsere Weinmanufaktur. Die Daten \n", - "wurden im Jahr 2009 erhoben und stammen aus Nordportugal. Der Datensatz enth\u00e4lt \n", - "Eintr\u00e4ge f\u00fcr Rot- und Wei\u00dfweine. Der Datensatz f\u00fcr die \n", - "Rotweine hat also 12 Spalten und 1600 Eintr\u00e4ge. Die Spalten sind \n", - "nach den Inhaltsstoffen und der Qualit\u00e4t eines Rotweins in Tabelle 1 benannt. \n", + "entnommen und liefert uns reale Daten für unsere Weinmanufaktur. Die Daten \n", + "wurden im Jahr 2009 erhoben und stammen aus Nordportugal. Der Datensatz enthält \n", + "Einträge für Rot- und Weißweine. Der Datensatz für die \n", + "Rotweine hat also 12 Spalten und 1600 Einträge. Die Spalten sind \n", + "nach den Inhaltsstoffen und der Qualität eines Rotweins in Tabelle 1 benannt. \n", "\n", "| Feature | Data Type|\n", "|-----|------|\n", @@ -114,9 +217,9 @@ "\n", "Ein Rotwein besteht aus Wasser, Alkohol und Extrakten. Die genaue \n", "Mischung dieser 3 wesentlichen Bestandteile kann einen Rotwein zu einem echten \n", - "ein wahrer Genuss. Meiner Meinung nach enth\u00e4lt ein guter Rotwein \n", - "einen hohen Alkohol- und Zuckergehalt. Ob meine Meinung \u00fcber einen guten Wein richtig ist \n", - "wahr ist, k\u00f6nnen wir im n\u00e4chsten Kapitel n\u00e4her betrachten.\n" + "ein wahrer Genuss. Meiner Meinung nach enthält ein guter Rotwein \n", + "einen hohen Alkohol- und Zuckergehalt. Ob meine Meinung über einen guten Wein richtig ist \n", + "wahr ist, können wir im nächsten Kapitel näher betrachten.\n" ] }, { @@ -364,7 +467,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Der Datensatz enth\u00e4lt 1599 Eintr\u00e4ge. Die Spalten \"freies Schwefeldioxid\" und \"Gesamtschwefeldioxid\" haben sehr hohe Maximalwerte. Au\u00dferdem sehen wir, dass unsere Zielvariable den kleinsten Wert von 3 und den gr\u00f6\u00dften Wert von 8 hat. Hier m\u00fcssen wir \u00fcberlegen, ob die Zielvariable in gut und schlecht unterteilt werden muss." + "Der Datensatz enthält 1599 Einträge. Die Spalten \"freies Schwefeldioxid\" und \"Gesamtschwefeldioxid\" haben sehr hohe Maximalwerte. Außerdem sehen wir, dass unsere Zielvariable den kleinsten Wert von 3 und den größten Wert von 8 hat. Hier müssen wir überlegen, ob die Zielvariable in gut und schlecht unterteilt werden muss." ] }, { @@ -621,7 +724,7 @@ " </tr>\n", " </tbody>\n", "</table>\n", - "<p>460 rows \u00d7 12 columns</p>\n", + "<p>460 rows × 12 columns</p>\n", "</div>" ], "text/plain": [ @@ -680,7 +783,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Es gibt Duplikate in dem Datensatz. Aber in diesem Fall wollen wir diese nicht entfernen, da es sich eigentlich um verschiedene Weinpartien handelt, die zuf\u00e4llig die gleichen chemischen Eigenschaften und die gleiche Qualit\u00e4t haben. Es w\u00e4re nicht schlecht, wenn sich das Modell auf die h\u00e4ufigeren Weine spezialisieren w\u00fcrde" + "Es gibt Duplikate in dem Datensatz. Aber in diesem Fall wollen wir diese nicht entfernen, da es sich eigentlich um verschiedene Weinpartien handelt, die zufällig die gleichen chemischen Eigenschaften und die gleiche Qualität haben. Es wäre nicht schlecht, wenn sich das Modell auf die häufigeren Weine spezialisieren würde" ] }, { @@ -737,7 +840,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "## 3.1 Ausrei\u00dfer entfernen" + "## 3.1 Ausreißer entfernen" ] }, { @@ -787,14 +890,14 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Anhand der Histogramme aller Spalten k\u00f6nnen wir nun auf einen Blick sehen, wie deren Werte verteilt sind. Es f\u00e4llt auf, dass einige Merkmale keine Normalverteilung aufweisen und daher Ausrei\u00dfer in ihren Werten haben." + "Anhand der Histogramme aller Spalten können wir nun auf einen Blick sehen, wie deren Werte verteilt sind. Es fällt auf, dass einige Merkmale keine Normalverteilung aufweisen und daher Ausreißer in ihren Werten haben." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "Fester S\u00e4uregehalt" + "Fester Säuregehalt" ] }, { @@ -1044,7 +1147,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Residual Sugar zeigt viele Ausrei\u00dfer in Bezug auf die Zielvariable. Ein Teil der Ausrei\u00dfer wird nun entfernt, um ein genaueres Datenbild zu erhalten." + "Residual Sugar zeigt viele Ausreißer in Bezug auf die Zielvariable. Ein Teil der Ausreißer wird nun entfernt, um ein genaueres Datenbild zu erhalten." ] }, { @@ -1138,7 +1241,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Es sind noch Ausrei\u00dfer zu sehen, die aber nach einem ersten Durchlauf des Modells noch ver\u00e4ndert werden k\u00f6nnen" + "Es sind noch Ausreißer zu sehen, die aber nach einem ersten Durchlauf des Modells noch verändert werden können" ] }, { @@ -1397,7 +1500,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Zuvor erkannte Ausrei\u00dfer der Spalte 'free sulfur dioxide' entfernt und ein ausgeglichenes Bild zu unserer Zielvariablen geschaffen" + "Zuvor erkannte Ausreißer der Spalte 'free sulfur dioxide' entfernt und ein ausgeglichenes Bild zu unserer Zielvariablen geschaffen" ] }, { @@ -1688,23 +1791,23 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "je h\u00f6her der Alkoholgehalt des Weins ist, desto besser wird er von den Fachleuten bewertet" + "je höher der Alkoholgehalt des Weins ist, desto besser wird er von den Fachleuten bewertet" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "Alle Merkmale wurden im ersten Schritt bereinigt und k\u00f6nnen nun f\u00fcr das Modell verwendet werden. \n", - "ie Zielvariable Qualit\u00e4t wird in gut 1 und schlecht 0 aufgeteilt.\n", - "Dies \u00e4ndert das Problem von einer Regressionsaufgabe zu einer (bin\u00e4ren) Kategorisierungsaufgabe" + "Alle Merkmale wurden im ersten Schritt bereinigt und können nun für das Modell verwendet werden. \n", + "ie Zielvariable Qualität wird in gut 1 und schlecht 0 aufgeteilt.\n", + "Dies ändert das Problem von einer Regressionsaufgabe zu einer (binären) Kategorisierungsaufgabe" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "## Umwandlung der Zielvariablen 'Qualit\u00e4t' in eine bin\u00e4re Klassifikation" + "## Umwandlung der Zielvariablen 'Qualität' in eine binäre Klassifikation" ] }, { @@ -2117,7 +2220,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Mit der Methode quality_range() haben wir die Werte der Spalte \"quality\" aufgeteilt. Alle Werte kleiner und gleich 5 erhielten den Wert 0 (, was auf eine schlechtere als durchschnittliche Qualit\u00e4t hinweist). Alle Werte von 6 und gr\u00f6\u00dfer erhielten den Wert 1 (f\u00fcr \u00fcberdurchschnittliche Qualit\u00e4t)." + "Mit der Methode quality_range() haben wir die Werte der Spalte \"quality\" aufgeteilt. Alle Werte kleiner und gleich 5 erhielten den Wert 0 (, was auf eine schlechtere als durchschnittliche Qualität hinweist). Alle Werte von 6 und größer erhielten den Wert 1 (für überdurchschnittliche Qualität)." ] }, { @@ -2429,7 +2532,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "der feste S\u00e4uregehalt entf\u00e4llt, da er stark mit dem pH-Wert korreliert" + "der feste Säuregehalt entfällt, da er stark mit dem pH-Wert korreliert" ] }, { @@ -3090,7 +3193,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "## Tesnorflow Classification" + "## Tensorflow Classification" ] }, { @@ -3360,9 +3463,9 @@ "source": [ "## Deployment\n", "Um dieses trainierte ML-Modell zu nutzen, muss eine API erstellt werden. \n", - "Das Ziel ist, dass Sie mit einer API-Anfrage \u00fcber das Internet auf das ML-Modell zugreifen k\u00f6nnen. (Oder Ihr Intranet) \n", - "Der Code f\u00fcr den Einsatz ist hier zu finden. https://github.com/Dustin-dusTir/ml-services-api \n", - "eventuell l\u00e4uft dort noch eine Live-Version der API und des Frontends." + "Das Ziel ist, dass Sie mit einer API-Anfrage über das Internet auf das ML-Modell zugreifen können. (Oder Ihr Intranet) \n", + "Der Code für den Einsatz ist hier zu finden. https://github.com/Dustin-dusTir/ml-services-api \n", + "eventuell läuft dort noch eine Live-Version der API und des Frontends." ] }, { @@ -3370,10 +3473,10 @@ "id": "daa5810d", "metadata": {}, "source": [ - "Wenn wir eine API f\u00fcr ein ML-Modell erstellen, wollen wir nicht jedes Mal ein neues Modell trainieren, wenn wir den API-Server bereitstellen oder neu bereitstellen wollen.\n", - "Deshalb m\u00fcssen wir das ML-Modell exportieren und speichern.\n", + "Wenn wir eine API für ein ML-Modell erstellen, wollen wir nicht jedes Mal ein neues Modell trainieren, wenn wir den API-Server bereitstellen oder neu bereitstellen wollen.\n", + "Deshalb müssen wir das ML-Modell exportieren und speichern.\n", "\n", - "F\u00fcr dieses spezielle Modell verwenden wir die Tensorflow-Funktionalit\u00e4t, um das Tensorflow-Modell zu exportieren.\n", + "Für dieses spezielle Modell verwenden wir die Tensorflow-Funktionalität, um das Tensorflow-Modell zu exportieren.\n", "Und wir verwenden das Pickle-Modul, um den Datenskalierer auch auf der Festplatte zu speichern." ] }, @@ -3407,6 +3510,7 @@ } ], "metadata": { + "category": "Rating", "interpreter": { "hash": "aab7ff84f4433dd8b68de441cd3c658d57659112bcb62d3bd6aa325045009f13" }, @@ -3426,9 +3530,8 @@ "pygments_lexer": "ipython3", "version": "3.8.9" }, - "title": "What Quality does the Red wine have", - "category": "Rating" + "title": "What Quality does the Red wine have" }, "nbformat": 4, "nbformat_minor": 5 -} \ No newline at end of file +} diff --git a/Success Predicition/Prediction of Successful or Failed Startups/notebook.ipynb b/Success Predicition/Prediction of Successful or Failed Startups/notebook.ipynb index 82a83ef..4502561 100644 --- a/Success Predicition/Prediction of Successful or Failed Startups/notebook.ipynb +++ b/Success Predicition/Prediction of Successful or Failed Startups/notebook.ipynb @@ -1,12 +1,95 @@ { "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Geschäftlicher Kontext\n", + "Die Forschung zum Unternehmenserfolg konzentriert sich auf die Wettbewerbsleistung und Rentabilität von Unternehmen, insbesondere KMUs. Unternehmen gelten als erfolgreich, wenn sie mindestens den durchschnittlichen Branchengewinn erzielen, keine Schulden gegenüber Gläubigern und Aktionären haben oder von anderen Organisationen übernommen werden." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Datengrundlage\n", + "Der Datensatz stammt aus der Open-Source-Datenbank von Crunchbase und besteht aus 11 zusammenhängenden CSV-Dateien, die zu einer CSV-Datei zusammengeführt wurden. Er enthält Informationen über verschiedene Aspekte von Startups, wie Gründungsjahr, erhaltene Finanzierung und aktuellen Betriebsstatus. Der zusammengeführte Datensatz hat 48 Spalten und 922 Zeilen, mit der Zielvariable \"Status\", die anzeigt, ob ein Startup übernommen wurde (Erfolg). Es gibt drei Datentypen: int, object und float." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# ML Strategie\n", + "Ziel ist es, ein maschinelles Lernmodell zu entwickeln, das vorhersagen kann, ob ein Startup erfolgreich wird. Erfolgreiche Startups werden als jene definiert, die übernommen werden." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Datenvorbereitung\n", + "### Datenimport und -auslese\n", + "\n", + "Bibliotheken importieren: Wichtige Python-Bibliotheken werden importiert.\n", + "Daten auslesen: Der zusammengeführte Datensatz wird in ein DataFrame geladen.\n", + "### Deskriptive Analyse\n", + "\n", + "Ausreißer erkennen: Ausreißer in numerischen Variablen werden mit dem IQR-Test erkannt und behandelt.\n", + "Datenverarbeitung: Redundante und fehlerhafte Daten, wie die Spalten \"Unnamed: 0\" und \"Unnamed: 6\", werden entfernt. Fehlende Werte werden ergänzt, außer für \"closed_at\".\n", + "### Umwandlung und Umgang mit Zeitreihen-Features\n", + "\n", + "Binärwerte: \"closed_at\"-Werte werden in Binärwerte konvertiert. \"nan\" bedeutet, dass das Startup noch in Betrieb ist.\n", + "Zeitreihen-Features: Umwandlung in numerische Werte durch das Hinzufügen neuer Features. Unnötige Features werden gelöscht." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Datenmodellierung\n", + "### Modellauswahl und -bildung\n", + "\n", + "Es wurden verschiedene Klassifikatoren verwendet: SVC, RandomForest, ExtraTrees und GradientBoosting. Diese Modelle wurden für eine Ensemble-Modellierung kombiniert.\n", + "\n", + "### Merkmalsbedeutung und Lernkurven\n", + "\n", + "Merkmalsbedeutung: Wichtige Merkmale wurden durch baumbasierte Klassifikatoren identifiziert und visualisiert.\n", + "Lernkurven: Erstellung und Analyse der Lernkurven zur Bewertung der Modellleistung." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Modellevaluation\n", + "Modellkombination: Die Ergebnisse der verschiedenen Klassifikatoren wurden kombiniert, wobei das Stapeln die besten Ergebnisse lieferte.\n", + "Evaluierung: Die Modelle wurden basierend auf ihrer Klassifizierungsgenauigkeit und anderen relevanten Metriken bewertet." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Szenarien für ein Deployment\n", + "### API-Erstellung\n", + "\n", + "Eine API wird entwickelt, um das trainierte Modell über das Internet oder Intranet zugänglich zu machen. Der Code für die Bereitstellung der API ist auf GitHub verfügbar.\n", + "\n", + "### Modell-Export\n", + "\n", + "Das trainierte Modell wird exportiert und gespeichert, um es beim Neustart der API nicht neu trainieren zu müssen. Der Datenskalierer wird ebenfalls mit dem Pickle-Modul gespeichert.\n", + "\n", + "Durch diese Schritte kann das ML-Modell in der Produktionsumgebung eingesetzt werden, um den Erfolg von Startups vorherzusagen und die Entscheidungsfindung im Unternehmen zu unterstützen." + ] + }, { "cell_type": "markdown", "metadata": {}, "source": [ "# 1. Business Understanding\n", "\n", - "Ein gro\u00dfer Teil der Forschung zum Unternehmenserfolg konzentriert sich auf den Erfolg von Unternehmen und KMU. In diesem Zusammenhang wird die Gesundheit eines Unternehmens in einem wettbewerbsorientierten Gesch\u00e4ftsumfeld in hohem Ma\u00dfe mit seiner Rentabilit\u00e4t und seinem Solvenzniveau in Verbindung gebracht. Butler und Fitzgerald bringen den Gesch\u00e4ftserfolg mit der Wettbewerbsleistung des Unternehmens im Vergleich zu seinen Konkurrenten in Verbindung. Lussier und Pfeifer betrachten Unternehmen als erfolgreich, wenn sie in den letzten drei Jahren mindestens den durchschnittlichen Gewinn der Branche erwirtschaftet haben. Gatev et al. hingegen definieren Erfolg als Fortf\u00fchrung der Gesch\u00e4ftst\u00e4tigkeit ohne Schulden gegen\u00fcber Gl\u00e4ubigern und Aktion\u00e4ren" + "Ein großer Teil der Forschung zum Unternehmenserfolg konzentriert sich auf den Erfolg von Unternehmen und KMU. In diesem Zusammenhang wird die Gesundheit eines Unternehmens in einem wettbewerbsorientierten Geschäftsumfeld in hohem Maße mit seiner Rentabilität und seinem Solvenzniveau in Verbindung gebracht. Butler und Fitzgerald bringen den Geschäftserfolg mit der Wettbewerbsleistung des Unternehmens im Vergleich zu seinen Konkurrenten in Verbindung. Lussier und Pfeifer betrachten Unternehmen als erfolgreich, wenn sie in den letzten drei Jahren mindestens den durchschnittlichen Gewinn der Branche erwirtschaftet haben. Gatev et al. hingegen definieren Erfolg als Fortführung der Geschäftstätigkeit ohne Schulden gegenüber Gläubigern und Aktionären" ] }, { @@ -15,8 +98,8 @@ "source": [ "# 2. Data Understanding\n", "\n", - "Das System beginnt, wie die meisten maschinellen Lernsysteme, mit den Daten. Dieser Datensatz wird von Crunchbase als Open-Source-Datenbank in Form von 11 zusammenh\u00e4ngenden CSV-Dateien bereitgestellt. Deshalb ist der erste Schritt der Datenaufbereitung ein Zusammenf\u00fchren in eine CSV-Datei, woraufhin redundante und fehlerhafte Daten sowie Ausrei\u00dfer entfernt werden und ein repr\u00e4sentativer Datensatz erstellt wird.Der in dieser Fallstudie verwendete Datensatz enth\u00e4lt Details zu verschiedenen Aspekten von Startups wie Gr\u00fcndungsjahr, erhaltene Finanzierung, aktueller Betriebsstatus und viele andere \u00e4hnliche Aspekte.\n", - "Der zusammengef\u00fchrte Datensatz enth\u00e4lt Branchentrends, Erkenntnisse \u00fcber Investitionen und Informationen \u00fcber einzelne Unternehmen. Es gibt 48 Spalten und 922 Zeilen. Die Zielvariable ist der Status: Wird ein Startup von einer anderen Organisation \u00fcbernommen, bedeutet dies, dass das Startup erfolgreich ist. In dem vorhandenen Datensatz finden wir auch 3 verschiedene Datentypen wie inter, object und float." + "Das System beginnt, wie die meisten maschinellen Lernsysteme, mit den Daten. Dieser Datensatz wird von Crunchbase als Open-Source-Datenbank in Form von 11 zusammenhängenden CSV-Dateien bereitgestellt. Deshalb ist der erste Schritt der Datenaufbereitung ein Zusammenführen in eine CSV-Datei, woraufhin redundante und fehlerhafte Daten sowie Ausreißer entfernt werden und ein repräsentativer Datensatz erstellt wird.Der in dieser Fallstudie verwendete Datensatz enthält Details zu verschiedenen Aspekten von Startups wie Gründungsjahr, erhaltene Finanzierung, aktueller Betriebsstatus und viele andere ähnliche Aspekte.\n", + "Der zusammengeführte Datensatz enthält Branchentrends, Erkenntnisse über Investitionen und Informationen über einzelne Unternehmen. Es gibt 48 Spalten und 922 Zeilen. Die Zielvariable ist der Status: Wird ein Startup von einer anderen Organisation übernommen, bedeutet dies, dass das Startup erfolgreich ist. In dem vorhandenen Datensatz finden wir auch 3 verschiedene Datentypen wie inter, object und float." ] }, { @@ -313,7 +396,7 @@ " </tr>\n", " </tbody>\n", "</table>\n", - "<p>5 rows \u00d7 49 columns</p>\n", + "<p>5 rows × 49 columns</p>\n", "</div>" ], "text/plain": [ @@ -727,8 +810,8 @@ "tags": [] }, "source": [ - "Alle Ausrei\u00dferpunkte mit fehlenden Werten zu erg\u00e4nzen, die Ausrei\u00dferpunkte werden durch den IQR-Test erkannt.\n", - "Nach der Datenverarbeitung werden die insgesamt fehlenden Daten erg\u00e4nzt." + "Alle Ausreißerpunkte mit fehlenden Werten zu ergänzen, die Ausreißerpunkte werden durch den IQR-Test erkannt.\n", + "Nach der Datenverarbeitung werden die insgesamt fehlenden Daten ergänzt." ] }, { @@ -760,7 +843,7 @@ "tags": [] }, "source": [ - "Wenn Sie die Spalten \"Unnamed: 0\" und \"Unnamed: 6\" entfernen, hat Unnamed: 6 493 fehlende Daten, da wir keine Informationen \u00fcber diese Spalte haben.\n", + "Wenn Sie die Spalten \"Unnamed: 0\" und \"Unnamed: 6\" entfernen, hat Unnamed: 6 493 fehlende Daten, da wir keine Informationen über diese Spalte haben.\n", "Unnamed:0 ist unbekannt. " ] }, @@ -1006,7 +1089,7 @@ "tags": [] }, "source": [ - "Alle Nan-Stellen ausgef\u00fcllt haben, au\u00dfer f\u00fcr closed_at, da es nicht numerisch ist" + "Alle Nan-Stellen ausgefüllt haben, außer für closed_at, da es nicht numerisch ist" ] }, { @@ -1022,9 +1105,9 @@ "tags": [] }, "source": [ - "### Konvertiert closed_at-Werte in einer Spalte in Bin\u00e4rwerte. \n", + "### Konvertiert closed_at-Werte in einer Spalte in Binärwerte. \n", "Der Wert nan bedeutet, dass das Startup noch in Betrieb ist. \n", - "Au\u00dferdem kann der Wert none nicht f\u00fcr die Zeitdatenanalyse verwendet werden." + "Außerdem kann der Wert none nicht für die Zeitdatenanalyse verwendet werden." ] }, { @@ -1066,7 +1149,7 @@ }, "source": [ "### Umgang mit Zeitreihen-Features\n", - "Konvertieren in numerische Zahlen, indem Sie neue Features hinzuf\u00fcgen und erstellen:" + "Konvertieren in numerische Zahlen, indem Sie neue Features hinzufügen und erstellen:" ] }, { @@ -1184,7 +1267,7 @@ "tags": [] }, "source": [ - "#### Features zum l\u00f6schen" + "#### Features zum löschen" ] }, { @@ -1379,7 +1462,7 @@ "tags": [] }, "source": [ - "Ich habe mich f\u00fcr die SVC ,RandomForest,ExtraTrees und die GradientBoosting-Klassifikatoren f\u00fcr die Ensemble-Modellierung entschieden.\n" + "Ich habe mich für die SVC ,RandomForest,ExtraTrees und die GradientBoosting-Klassifikatoren für die Ensemble-Modellierung entschieden.\n" ] }, { @@ -1572,7 +1655,7 @@ "tags": [] }, "source": [ - "Erstellen Sie einen Datenrahmen aus den Listen, der die Daten zur Merkmalsbedeutung enth\u00e4lt, um sie mit dem Plotly-Paket einfach aufzeichnen zu k\u00f6nnen.\n", + "Erstellen Sie einen Datenrahmen aus den Listen, der die Daten zur Merkmalsbedeutung enthält, um sie mit dem Plotly-Paket einfach aufzeichnen zu können.\n", "\n" ] }, @@ -6787,6 +6870,7 @@ } ], "metadata": { + "category": "Success Predicition", "kernelspec": { "display_name": "Python 3", "language": "python", @@ -6815,9 +6899,8 @@ "start_time": "2021-01-12T23:09:47.023698", "version": "2.1.0" }, - "title": "Prediction of Successful or Failed Startups", - "category": "Success Predicition" + "title": "Prediction of Successful or Failed Startups" }, "nbformat": 4, "nbformat_minor": 4 -} \ No newline at end of file +} diff --git a/Warehouse/Classification of clothing through images/notebook.ipynb b/Warehouse/Classification of clothing through images/notebook.ipynb index 6a032b0..2042a82 100644 --- a/Warehouse/Classification of clothing through images/notebook.ipynb +++ b/Warehouse/Classification of clothing through images/notebook.ipynb @@ -11,20 +11,19 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Viele Online-Versandh\u00e4ndler haben eine hohe R\u00fcckgabequote\n", - "(bis zu 50 %), wobei 97 % aller zur\u00fcckgesandten Produkte wieder aufgef\u00fcllt werden k\u00f6nnen\n", - "und verkauft werden k\u00f6nnen. Um die Waren weiterverkaufen zu k\u00f6nnen\n", - "m\u00fcssen die Waren identifiziert, etikettiert und entsprechend wieder aufgestockt werden.\n", + "Viele Online-Versandhändler haben eine hohe Rückgabequote\n", + "(bis zu 50 %), wobei 97 % aller zurückgesandten Produkte wieder aufgefüllt werden können\n", + "und verkauft werden können. Um die Waren weiterverkaufen zu können\n", + "müssen die Waren identifiziert, etikettiert und entsprechend wieder aufgestockt werden.\n", "wieder.\n", "Geht man davon aus, dass im Jahr 2020 185,5 Millionen Bestellungen (Statista, 2021) mit\n", - "6 St\u00fcck (Annahme) eingehen w\u00fcrden, dann w\u00fcrde eine Retourenquote von 50% bedeuten, dass\n", - "Bei einer R\u00fccklaufquote von 50 % m\u00fcssten 556,5 Millionen Artikel neu identifiziert und kategorisiert werden.\n", - "Zur Unterst\u00fctzung dieses Prozesses und zur leichteren Identifizierung der\n", - "Kleidungsst\u00fccke zu erleichtern, soll eine Bilderkennungssoftware entwickelt werden, die\n", - "die zugeh\u00f6rigen Kategorien der einzelnen Kleidungsst\u00fccke auf der Grundlage von Bildern.\n", - "der einzelnen Kleidungsst\u00fccke auf der Grundlage von Bildern.\n", - "\n", - "\u00dcbersetzt mit DeepL.com (kostenlose Version)" + "6 Stück (Annahme) eingehen würden, dann würde eine Retourenquote von 50% bedeuten, dass\n", + "Bei einer Rücklaufquote von 50 % müssten 556,5 Millionen Artikel neu identifiziert und kategorisiert werden.\n", + "Zur Unterstützung dieses Prozesses und zur leichteren Identifizierung der\n", + "Kleidungsstücke zu erleichtern, soll eine Bilderkennungssoftware entwickelt werden, die\n", + "die zugehörigen Kategorien der einzelnen Kleidungsstücke auf der Grundlage von Bildern.\n", + "der einzelnen Kleidungsstücke auf der Grundlage von Bildern.\n", + "\n" ] }, { @@ -92,7 +91,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Die Trainings- und Testdaten sind bereits beschriftet und in zwei Datens\u00e4tze aufgeteilt\n", + "Die Trainings- und Testdaten sind bereits beschriftet und in zwei Datensätze aufgeteilt\n", "\n", "### Es ist erforderlich, den Datensatz herunterzuladen und zu extrahieren von:\n", "\n", @@ -311,7 +310,7 @@ " </tr>\n", " </tbody>\n", "</table>\n", - "<p>5 rows \u00d7 785 columns</p>\n", + "<p>5 rows × 785 columns</p>\n", "</div>" ], "text/plain": [ @@ -352,11 +351,11 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Beschreiben Sie den Datenrahmen, was in diesem Fall nicht wirklich hilfreich ist, aber es zeigt, dass die Daten nicht durch die Auswertung verf\u00e4lscht wurden:\n", + "Beschreiben Sie den Datenrahmen, was in diesem Fall nicht wirklich hilfreich ist, aber es zeigt, dass die Daten nicht durch die Auswertung verfälscht wurden:\n", "- Die Bezeichnung muss zwischen 0 und 9 liegen.\n", - "- Die Pixelwerte m\u00fcssen zwischen 0 und 255 liegen (nicht negativ)\n", + "- Die Pixelwerte müssen zwischen 0 und 255 liegen (nicht negativ)\n", "- Die Anzahl muss 60000 (train) 10000 (test) betragen\n", - "- Die maximale Anzahl der Pixel muss 784 f\u00fcr alle Zeilen betragen." + "- Die maximale Anzahl der Pixel muss 784 für alle Zeilen betragen." ] }, { @@ -603,7 +602,7 @@ " </tr>\n", " </tbody>\n", "</table>\n", - "<p>8 rows \u00d7 785 columns</p>\n", + "<p>8 rows × 785 columns</p>\n", "</div>" ], "text/plain": [ @@ -913,7 +912,7 @@ " </tr>\n", " </tbody>\n", "</table>\n", - "<p>8 rows \u00d7 785 columns</p>\n", + "<p>8 rows × 785 columns</p>\n", "</div>" ], "text/plain": [ @@ -983,14 +982,14 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Sowohl die Test- als auch die Trainingsdaten scheinen g\u00fcltig und unverf\u00e4lscht zu sein." + "Sowohl die Test- als auch die Trainingsdaten scheinen gültig und unverfälscht zu sein." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "Definieren Sie menschenlesbare Namen f\u00fcr die 10 Kategorien" + "Definieren Sie menschenlesbare Namen für die 10 Kategorien" ] }, { @@ -1007,7 +1006,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Aufteilung des Datensatzes und \u00dcberpr\u00fcfung der Verteilung der einzelnen Klassen (die Aufteilung kann auch sp\u00e4ter erfolgen)" + "Aufteilung des Datensatzes und Überprüfung der Verteilung der einzelnen Klassen (die Aufteilung kann auch später erfolgen)" ] }, { @@ -1036,7 +1035,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Zeigen Sie die Verteilung f\u00fcr jeden Satz" + "Zeigen Sie die Verteilung für jeden Satz" ] }, { @@ -1118,8 +1117,8 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Das ist bereits hilfreich, denn wir k\u00f6nnen sehen, dass sie ziemlich gleichm\u00e4\u00dfig aufgeteilt sind.\n", - "Drucken Sie die Daten als Tortendiagramm aus, um es noch sch\u00f6ner zu machen." + "Das ist bereits hilfreich, denn wir können sehen, dass sie ziemlich gleichmäßig aufgeteilt sind.\n", + "Drucken Sie die Daten als Tortendiagramm aus, um es noch schöner zu machen." ] }, { @@ -1354,7 +1353,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "\u00dcberpr\u00fcfen der Datenformen, um sicherzustellen, dass die Daten im richtigen Format vorliegen." + "Überprüfen der Datenformen, um sicherzustellen, dass die Daten im richtigen Format vorliegen." ] }, { @@ -1397,17 +1396,17 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Definieren Sie, wie das Modell aussehen soll. Nachfolgend finden Sie einige Beschreibungen f\u00fcr verschiedene Schichttypen.\n", - "Der erste Versuch dieses Modells war nur ein DNN mit einfachen dichten Schichten, aber die Ergebnisse k\u00f6nnen durch die Verwendung eines CNN verbessert werden.\n", - "Als Startarchitektur wurde die LeNet-5-Implementierung gew\u00e4hlt und dann ver\u00e4ndert.\n", + "Definieren Sie, wie das Modell aussehen soll. Nachfolgend finden Sie einige Beschreibungen für verschiedene Schichttypen.\n", + "Der erste Versuch dieses Modells war nur ein DNN mit einfachen dichten Schichten, aber die Ergebnisse können durch die Verwendung eines CNN verbessert werden.\n", + "Als Startarchitektur wurde die LeNet-5-Implementierung gewählt und dann verändert.\n", "Die Hyperparameter konnten auch mit dem Keras Optimizer optimiert werden, der mehrere definierte Kombinationen ausprobiert.\n", - "Die aktuellen Parameter wurden durch Exploration ausgew\u00e4hlt.\n", + "Die aktuellen Parameter wurden durch Exploration ausgewählt.\n", "\n", - "- Dense: empf\u00e4ngt alle Eingaben aus der vorherigen Schicht und bildet das Punktprodukt \n", - "- Dropout-Schicht: entfernt Rauschen f\u00fcr Overfitting, f\u00e4llt mit bestimmter Rate ab\n", - "- Reshape-Schicht: ver\u00e4ndert die Form der Eingabe, wird nicht verwendet\n", - "- Permute-Schicht: ver\u00e4ndert die Form der Eingabe, wird nicht verwendet\n", - "- ReapeatVector-Schicht: wiederholt die Eingabe f\u00fcr eine bestimmte Anzahl von Malen, nicht verwendet\n", + "- Dense: empfängt alle Eingaben aus der vorherigen Schicht und bildet das Punktprodukt \n", + "- Dropout-Schicht: entfernt Rauschen für Overfitting, fällt mit bestimmter Rate ab\n", + "- Reshape-Schicht: verändert die Form der Eingabe, wird nicht verwendet\n", + "- Permute-Schicht: verändert die Form der Eingabe, wird nicht verwendet\n", + "- ReapeatVector-Schicht: wiederholt die Eingabe für eine bestimmte Anzahl von Malen, nicht verwendet\n", "- Flatten Layer: flacht die Matrix ab\n", "- MaxPooling2D-Ebene: reduziert die Anzahl der Eingaben\n", "- Conv2D-Ebene: faltet eine Eingabe zusammen" @@ -1542,7 +1541,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Wir wollen wissen, wie sich insbesondere der Verlust im Laufe der Zeit ver\u00e4ndert" + "Wir wollen wissen, wie sich insbesondere der Verlust im Laufe der Zeit verändert" ] }, { @@ -1598,7 +1597,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Es ist zu erkennen, dass das Modell recht gut funktioniert, aber nach der zweiten epoche beginnt es zu overfitten. Um dies zu verhindern, k\u00f6nnten wir verschiedene Trainings-Validierungs-Splits ausprobieren, mehr Dropouts hinzuf\u00fcgen oder Teile des Modells umstrukturieren." + "Es ist zu erkennen, dass das Modell recht gut funktioniert, aber nach der zweiten epoche beginnt es zu overfitten. Um dies zu verhindern, könnten wir verschiedene Trainings-Validierungs-Splits ausprobieren, mehr Dropouts hinzufügen oder Teile des Modells umstrukturieren." ] }, { @@ -1703,7 +1702,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Wir k\u00f6nnen beobachten, dass das Modell vor allem mit Oberteilen, Hemden und Pullovern zu k\u00e4mpfen hat. Das liegt wahrscheinlich daran, dass sie ziemlich \u00e4hnlich aussehen. Um dies zu vermeiden, k\u00f6nnte es hilfreich sein, das Bild zu vergr\u00f6\u00dfern, um mehr Details zu erhalten, mehr Farbkan\u00e4le hinzuzuf\u00fcgen oder zu versuchen, die Textur des Artikels mit einigen bestimmten Ebenen zu identifizieren." + "Wir können beobachten, dass das Modell vor allem mit Oberteilen, Hemden und Pullovern zu kämpfen hat. Das liegt wahrscheinlich daran, dass sie ziemlich ähnlich aussehen. Um dies zu vermeiden, könnte es hilfreich sein, das Bild zu vergrößern, um mehr Details zu erhalten, mehr Farbkanäle hinzuzufügen oder zu versuchen, die Textur des Artikels mit einigen bestimmten Ebenen zu identifizieren." ] }, { @@ -1711,7 +1710,7 @@ "metadata": {}, "source": [ "# 5. Deployment\n", - "Stellen Sie das Modell als Docker-Container bereit, um es als http-Dienst verf\u00fcgbar zu machen" + "Stellen Sie das Modell als Docker-Container bereit, um es als http-Dienst verfügbar zu machen" ] }, { @@ -1804,7 +1803,7 @@ "\n", "```\n", "\n", - "Das Modell sollte nicht f\u00fcr Post-Anfragen unter http://localhost:8501/v1/models/fashion_model:predict verf\u00fcgbar sein." + "Das Modell sollte nicht für Post-Anfragen unter http://localhost:8501/v1/models/fashion_model:predict verfügbar sein." ] }, { @@ -1813,8 +1812,8 @@ "source": [ "# Erweiterung 1: Verwendung von RGB-Bildern\n", "Importieren der allgemeinen RGB-Bilder, die aus dem Internet heruntergeladen wurden, und versuchen, deren Kategorie mit dem Modell vorherzusagen. \n", - "In diesem Fall wurden einige zuf\u00e4llige Bilder von Google heruntergeladen und in eine quadratische Form gebracht.\n", - "F\u00fcr jede Kategorie befinden sich drei Bilder im \"Custom Set\"." + "In diesem Fall wurden einige zufällige Bilder von Google heruntergeladen und in eine quadratische Form gebracht.\n", + "Für jede Kategorie befinden sich drei Bilder im \"Custom Set\"." ] }, { @@ -1823,8 +1822,8 @@ "source": [ "# Erweiterung 1: Verwendung von RGB-Bildern\n", "Importieren Sie allgemeine RGB-Bilder, die Sie aus dem Internet heruntergeladen haben, und versuchen Sie, deren Kategorie mit dem Modell vorherzusagen. \n", - "In diesem Fall wurden einige zuf\u00e4llige Bilder von Google heruntergeladen und in eine quadratische Form gebracht.\n", - "F\u00fcr jede Kategorie befinden sich drei Bilder im \"Custom Set\"." + "In diesem Fall wurden einige zufällige Bilder von Google heruntergeladen und in eine quadratische Form gebracht.\n", + "Für jede Kategorie befinden sich drei Bilder im \"Custom Set\"." ] }, { @@ -1909,8 +1908,8 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Dies ist eine wirklich wichtige Funktion, da sie die eigentliche Vorverarbeitung des Bildes in ein Format vornimmt, das f\u00fcr das Modell \"verst\u00e4ndlich\" ist. Es w\u00e4re wahrscheinlich sinnvoll, diese Funktion aufzuteilen.\n", - "Der kommentierte Code unten zeigt, wie diese Funktion als benutzerdefinierte Ebene implementiert werden k\u00f6nnte, um sie in ein Modell einzubinden. Wir subclassen daf\u00fcr einen Layer, aber wahrscheinlich k\u00f6nnten wir alternativ auch einfach einen \"Lambda\"-Layer verwenden (oder ihn subclassen)" + "Dies ist eine wirklich wichtige Funktion, da sie die eigentliche Vorverarbeitung des Bildes in ein Format vornimmt, das für das Modell \"verständlich\" ist. Es wäre wahrscheinlich sinnvoll, diese Funktion aufzuteilen.\n", + "Der kommentierte Code unten zeigt, wie diese Funktion als benutzerdefinierte Ebene implementiert werden könnte, um sie in ein Modell einzubinden. Wir subclassen dafür einen Layer, aber wahrscheinlich könnten wir alternativ auch einfach einen \"Lambda\"-Layer verwenden (oder ihn subclassen)" ] }, { @@ -2600,7 +2599,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Erstellen von Numpy-Arrays aus den geladenen Daten (dies k\u00f6nnte zur Vereinfachung auch fr\u00fcher geschehen)" + "Erstellen von Numpy-Arrays aus den geladenen Daten (dies könnte zur Vereinfachung auch früher geschehen)" ] }, { @@ -2722,13 +2721,13 @@ "metadata": {}, "source": [ "Das Modell schneidet mit dem benutzerdefinierten Datensatz wesentlich schlechter ab als mit den eigentlichen Testdaten. \n", - "Dies hat mehrere Gr\u00fcnde und zeigt, wie schwierig es ist, mit \"echten\" Daten zu arbeiten. Obwohl die ausgew\u00e4hlten Bilder bereits in gewisser Weise vorverarbeitet wurden, indem nur Bilder ausgew\u00e4hlt wurden, bei denen der Artikel mit einem wei\u00dfen Hintergrund dargestellt wird, das Bild quadratisch ist und das Produkt \"vorne\" gezeigt wird, gibt es immer noch eine Menge Dinge, die es dem Modell schwer machen, die richtige Kategorie vorherzusagen. Einige Probleme k\u00f6nnten sein:\n", + "Dies hat mehrere Gründe und zeigt, wie schwierig es ist, mit \"echten\" Daten zu arbeiten. Obwohl die ausgewählten Bilder bereits in gewisser Weise vorverarbeitet wurden, indem nur Bilder ausgewählt wurden, bei denen der Artikel mit einem weißen Hintergrund dargestellt wird, das Bild quadratisch ist und das Produkt \"vorne\" gezeigt wird, gibt es immer noch eine Menge Dinge, die es dem Modell schwer machen, die richtige Kategorie vorherzusagen. Einige Probleme könnten sein:\n", "- Das Bild sollte gespiegelt sein (z. B. linker Schuh/rechter Schuh im Bild)\n", - "- Der Hintergrund sollte komplett wei\u00df sein (einige Bilder haben einen Schatten)\n", - "- Der Rahmen um den Artikel ist nicht bei allen Bildern gleich gro\u00df\n", - "- Drehungen k\u00f6nnen das Modell verwirren (z. B. ankle_boot_2)\n", + "- Der Hintergrund sollte komplett weiß sein (einige Bilder haben einen Schatten)\n", + "- Der Rahmen um den Artikel ist nicht bei allen Bildern gleich groß\n", + "- Drehungen können das Modell verwirren (z. B. ankle_boot_2)\n", "\n", - "Es ist klar, dass diese Daten in keiner Weise repr\u00e4sentativ sind." + "Es ist klar, dass diese Daten in keiner Weise repräsentativ sind." ] }, { @@ -2783,7 +2782,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Wir iterieren \u00fcber die Ausgabe der Schichten und zeigen die Ergebnisse f\u00fcr dieses spezifische Bild nach der ersten und der zweiten Faltungsschicht an " + "Wir iterieren über die Ausgabe der Schichten und zeigen die Ergebnisse für dieses spezifische Bild nach der ersten und der zweiten Faltungsschicht an " ] }, { @@ -2841,7 +2840,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Jetzt wollen wir jeden Filter f\u00fcr die Faltungsschichten und die Max-Pool-Schicht f\u00fcr das jeweilige Bild ausgeben" + "Jetzt wollen wir jeden Filter für die Faltungsschichten und die Max-Pool-Schicht für das jeweilige Bild ausgeben" ] }, { @@ -2919,6 +2918,7 @@ } ], "metadata": { + "category": "Warehouse", "kernelspec": { "display_name": "Python 3", "language": "python", @@ -2936,9 +2936,8 @@ "pygments_lexer": "ipython3", "version": "3.8.9" }, - "title": "Classification of clothing through images", - "category": "Warehouse" + "title": "Classification of clothing through images" }, "nbformat": 4, "nbformat_minor": 4 -} \ No newline at end of file +} -- GitLab