"Der Fashion-MNIST-Datensatz bietet eine moderne und herausfordernde Alternative zum klassischen MNIST-Datensatz, da er realistischere und komplexere Bilder von Kleidungsstücken enthält. Dies stellt eine größere Herausforderung für Bildklassifizierungsmodelle dar und bietet eine realistischere Anwendungsmöglichkeit im Bereich der maschinellen Bildverarbeitung."
"Der Fashion-MNIST-Datensatz bietet eine moderne und herausfordernde Alternative zum klassischen MNIST-Datensatz, da er realistischere und komplexere Bilder von Kleidungsstücken enthält. Dies stellt eine größere Herausforderung für Bildklassifizierungsmodelle dar und bietet eine realistischere Anwendungsmöglichkeit im Bereich der maschinellen Bildverarbeitung."
]
]
},
},
{
"cell_type": "markdown",
"metadata": {
"editable": true,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"source": [
"## 3. Datenvorbereitung"
]
},
{
"cell_type": "markdown",
"metadata": {
"editable": true,
"include": true,
"paragraph": "Datenvorbereitung",
"slideshow": {
"slide_type": ""
},
"tags": []
},
"source": [
"Die Data Preparation Phase beginnt mit der Aufteilung der Daten in Trainings-, Validierungs- und Testsets sowie der Skalierung der Merkmale. Anschließend werden die Bildformate von 784 auf 28x28 umgewandelt (falls als CSV mit 784 Spalten geladen) und die Labels in ein kategorisches Format konvertiert. Die Überprüfung der Datenformate gewährleistet, dass alle Daten im korrekten Format vorliegen."
]
},
{
"cell_type": "markdown",
"metadata": {
"editable": true,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"source": [
"# 4. Datenmodell"
]
},
{
"cell_type": "markdown",
"metadata": {
"editable": true,
"include": true,
"paragraph": "Datenmodell",
"slideshow": {
"slide_type": ""
},
"tags": [
"datenmodell"
]
},
"source": [
"In der Modellierungsphase wird die Architektur des Modells definiert, die verschiedene Arten von Schichten umfasst. Zunächst wurde ein einfaches DNN mit dichten Schichten ausprobiert, jedoch konnten verbesserte Ergebnisse erzielt werden, indem auf eine CNN-Architektur umgestellt wurde. Als Ausgangsarchitektur wurde die Implementierung von LeNet-5 gewählt und angepasst. Die Hyperparameter wurden mithilfe eines Keras-Optimierers optimiert, der verschiedene Kombinationen ausprobierte, um die aktuellen Parameter auszuwählen. Das Modell umfasst Schichten wie Dense für die Berechnung des Skalarprodukts, Dropout zur Vermeidung von Überanpassung, Flatten zum Flachlegen von Matrizen, MaxPooling2D zur Reduzierung der Eingabedimensionen und Conv2D für Faltungsoperationen auf den Eingabedaten."
]
},
{
"cell_type": "markdown",
"metadata": {
"editable": true,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"source": [
"## 5. Evaluation"
]
},
{
"cell_type": "markdown",
"metadata": {
"editable": true,
"include": true,
"paragraph": "Evaluation",
"slideshow": {
"slide_type": ""
},
"tags": [
"evaluation"
]
},
"source": [
"Nach dem Training und der Validierung des Modells wird die Leistung anhand der Testdaten ausgewertet. Dabei erreicht das Modell eine Testgenauigkeit von über 90 %, was darauf hinweist, dass es gut in der Lage ist, neue, bisher ungesehene Daten zu klassifizieren. Der Testverlust ist ebenfalls akzeptabel niedrig, was darauf hinweist, dass das Modell Vorhersagen nahe an den tatsächlichen Daten trifft. Zusätzlich zeigen klassenspezifische Metriken wie Präzision, Rückruf und F1-Score für jede Klasse (z.B. Top, Trouser, Pullover usw.), dass das Modell gute bis sehr gute Ergebnisse erzielt, insbesondere bei Klassen wie Sneaker, Bag und Ankle boot. Diese Ergebnisse bieten eine umfassende Bewertung der Modellleistung und helfen dabei, seine Eignung für praktische Anwendungen zu beurteilen."
]
},
{
"cell_type": "markdown",
"metadata": {
"editable": true,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"source": [
"## 6. Umsetzung"
]
},
{
"cell_type": "markdown",
"metadata": {
"editable": true,
"include": true,
"paragraph": "Umsetzung",
"slideshow": {
"slide_type": ""
},
"tags": [
"umsetzung"
]
},
"source": [
"Im Rahmen des CRISP-DM Zyklus stellt das Deployment den letzten Schritt dar, bei dem das trainierte Modell für den produktiven Einsatz vorbereitet wird. Dies beinhaltet die Implementierung des Modells in eine Produktionsumgebung, wo es Echtzeitdaten verarbeiten kann. Vor dem Deployment müssen alle Aspekte wie Modellperformance auf Testdaten, Sicherstellung der Skalierbarkeit und Integration in bestehende Systeme sorgfältig überprüft werden. Zudem ist es entscheidend, fortlaufende Überwachung und Wartung sicherzustellen, um die langfristige Leistung und Genauigkeit des Modells zu gewährleisten."
]
},
{
{
"cell_type": "markdown",
"cell_type": "markdown",
"metadata": {},
"metadata": {},
...
@@ -1323,34 +1441,6 @@
...
@@ -1323,34 +1441,6 @@
"plt.show()"
"plt.show()"
]
]
},
},
{
"cell_type": "markdown",
"metadata": {
"editable": true,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"source": [
"## 3. Datenvorbereitung"
]
},
{
"cell_type": "markdown",
"metadata": {
"editable": true,
"include": true,
"paragraph": "Datenvorbereitung",
"slideshow": {
"slide_type": ""
},
"tags": []
},
"source": [
"Die Data Preparation Phase beginnt mit der Aufteilung der Daten in Trainings-, Validierungs- und Testsets sowie der Skalierung der Merkmale. Anschließend werden die Bildformate von 784 auf 28x28 umgewandelt (falls als CSV mit 784 Spalten geladen) und die Labels in ein kategorisches Format konvertiert. Die Überprüfung der Datenformate gewährleistet, dass alle Daten im korrekten Format vorliegen."
]
},
{
{
"cell_type": "markdown",
"cell_type": "markdown",
"metadata": {},
"metadata": {},
...
@@ -1468,36 +1558,6 @@
...
@@ -1468,36 +1558,6 @@
"print(y_test.shape)\n"
"print(y_test.shape)\n"
]
]
},
},
{
"cell_type": "markdown",
"metadata": {
"editable": true,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"source": [
"# 4. Datenmodell"
]
},
{
"cell_type": "markdown",
"metadata": {
"editable": true,
"include": true,
"paragraph": "Datenmodell",
"slideshow": {
"slide_type": ""
},
"tags": [
"datenmodell"
]
},
"source": [
"In der Modellierungsphase wird die Architektur des Modells definiert, die verschiedene Arten von Schichten umfasst. Zunächst wurde ein einfaches DNN mit dichten Schichten ausprobiert, jedoch konnten verbesserte Ergebnisse erzielt werden, indem auf eine CNN-Architektur umgestellt wurde. Als Ausgangsarchitektur wurde die Implementierung von LeNet-5 gewählt und angepasst. Die Hyperparameter wurden mithilfe eines Keras-Optimierers optimiert, der verschiedene Kombinationen ausprobierte, um die aktuellen Parameter auszuwählen. Das Modell umfasst Schichten wie Dense für die Berechnung des Skalarprodukts, Dropout zur Vermeidung von Überanpassung, Flatten zum Flachlegen von Matrizen, MaxPooling2D zur Reduzierung der Eingabedimensionen und Conv2D für Faltungsoperationen auf den Eingabedaten."
"Nach dem Training und der Validierung des Modells wird die Leistung anhand der Testdaten ausgewertet. Dabei erreicht das Modell eine Testgenauigkeit von über 90 %, was darauf hinweist, dass es gut in der Lage ist, neue, bisher ungesehene Daten zu klassifizieren. Der Testverlust ist ebenfalls akzeptabel niedrig, was darauf hinweist, dass das Modell Vorhersagen nahe an den tatsächlichen Daten trifft. Zusätzlich zeigen klassenspezifische Metriken wie Präzision, Rückruf und F1-Score für jede Klasse (z.B. Top, Trouser, Pullover usw.), dass das Modell gute bis sehr gute Ergebnisse erzielt, insbesondere bei Klassen wie Sneaker, Bag und Ankle boot. Diese Ergebnisse bieten eine umfassende Bewertung der Modellleistung und helfen dabei, seine Eignung für praktische Anwendungen zu beurteilen."
]
},
{
"cell_type": "markdown",
"metadata": {
"editable": true,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"source": [
"## 6. Umsetzung"
]
},
{
"cell_type": "markdown",
"metadata": {
"editable": true,
"include": true,
"paragraph": "Umsetzung",
"slideshow": {
"slide_type": ""
},
"tags": [
"umsetzung"
]
},
"source": [
"Im Rahmen des CRISP-DM Zyklus stellt das Deployment den letzten Schritt dar, bei dem das trainierte Modell für den produktiven Einsatz vorbereitet wird. Dies beinhaltet die Implementierung des Modells in eine Produktionsumgebung, wo es Echtzeitdaten verarbeiten kann. Vor dem Deployment müssen alle Aspekte wie Modellperformance auf Testdaten, Sicherstellung der Skalierbarkeit und Integration in bestehende Systeme sorgfältig überprüft werden. Zudem ist es entscheidend, fortlaufende Überwachung und Wartung sicherzustellen, um die langfristige Leistung und Genauigkeit des Modells zu gewährleisten."
]
}
}
],
],
"metadata": {
"metadata": {
...
...
%% Cell type:markdown id: tags:
%% Cell type:markdown id: tags:
## 1. Business Understanding
## 1. Business Understanding
%% Cell type:markdown id: tags:business
%% Cell type:markdown id: tags:business
Viele Online-Versandhandelsunternehmen haben eine hohe Rücksendequote (von bis zu 50%), wobei 97% aller zurückgesendeten Produkte wieder auf Lager genommen und verkauft werden können. Um die Waren wieder zu verkaufen, müssen sie entsprechend identifiziert, etikettiert und wieder eingelagert werden.
Viele Online-Versandhandelsunternehmen haben eine hohe Rücksendequote (von bis zu 50%), wobei 97% aller zurückgesendeten Produkte wieder auf Lager genommen und verkauft werden können. Um die Waren wieder zu verkaufen, müssen sie entsprechend identifiziert, etikettiert und wieder eingelagert werden.
Angenommen, dass im Jahr 2020 185,5 Millionen Bestellungen (Statista, 2021) mit jeweils 6 Artikeln (Annahme) eingehen würden, dann würde eine Rücksendequote von 50% bedeuten, dass 556,5 Millionen Artikel neu identifiziert und kategorisiert werden müssten.
Angenommen, dass im Jahr 2020 185,5 Millionen Bestellungen (Statista, 2021) mit jeweils 6 Artikeln (Annahme) eingehen würden, dann würde eine Rücksendequote von 50% bedeuten, dass 556,5 Millionen Artikel neu identifiziert und kategorisiert werden müssten.
Um diesen Prozess zu unterstützen und die Identifizierung der zurückgesendeten Kleidungsstücke zu erleichtern, soll eine Bilderkennungssoftware entwickelt werden, die die zugehörigen Kategorien der einzelnen Kleidungsstücke anhand von Bildern erkennt.
Um diesen Prozess zu unterstützen und die Identifizierung der zurückgesendeten Kleidungsstücke zu erleichtern, soll eine Bilderkennungssoftware entwickelt werden, die die zugehörigen Kategorien der einzelnen Kleidungsstücke anhand von Bildern erkennt.
%% Cell type:markdown id: tags:
%% Cell type:markdown id: tags:
## 2. Data Understanding
## 2. Data Understanding
%% Cell type:markdown id: tags:daten
%% Cell type:markdown id: tags:daten
Der Datenrahmen **fashion-mnist_test** stammt von Kaggle und ist über das [Fashion-MNIST GitHub Repository](https://github.com/zalandoresearch/fashion-mnist) zugänglich. Dieser Datensatz wurde 2017 von Zalando erstellt und besteht aus Artikelbildern des Unternehmens.
Der Datenrahmen **fashion-mnist_test** stammt von Kaggle und ist über das [Fashion-MNIST GitHub Repository](https://github.com/zalandoresearch/fashion-mnist) zugänglich. Dieser Datensatz wurde 2017 von Zalando erstellt und besteht aus Artikelbildern des Unternehmens.
Der Datensatz liegt im CSV-Format vor und enthält insgesamt 70.000 Bilder von Kleidungsstücken, die in 60.000 Trainingsbilder und 10.000 Testbilder unterteilt sind. Jedes Bild wurde auf eine Größe von 28x28 Pixel skaliert und in Graustufen umgewandelt.
Der Datensatz liegt im CSV-Format vor und enthält insgesamt 70.000 Bilder von Kleidungsstücken, die in 60.000 Trainingsbilder und 10.000 Testbilder unterteilt sind. Jedes Bild wurde auf eine Größe von 28x28 Pixel skaliert und in Graustufen umgewandelt.
Der Datensatz umfasst 784 Merkmale, die jeweils einem Pixel des Bildes entsprechen, sowie ein zusätzliches Label, das die Kategorie des Kleidungsstücks angibt. Sowohl die Merkmale als auch die Labels sind als Integer-Werte gespeichert. Die Pixelwerte repräsentieren die Intensität des Grautons, während die Labels die verschiedenen Kleidungsstückkategorien darstellen.
Der Datensatz umfasst 784 Merkmale, die jeweils einem Pixel des Bildes entsprechen, sowie ein zusätzliches Label, das die Kategorie des Kleidungsstücks angibt. Sowohl die Merkmale als auch die Labels sind als Integer-Werte gespeichert. Die Pixelwerte repräsentieren die Intensität des Grautons, während die Labels die verschiedenen Kleidungsstückkategorien darstellen.
Insgesamt enthält der Datensatz 70.000 Beobachtungen. Die Parameter "Standort", Verteilungsparameter und Korrelationsanalyse sind für diesen Datensatz nicht anwendbar.
Insgesamt enthält der Datensatz 70.000 Beobachtungen. Die Parameter "Standort", Verteilungsparameter und Korrelationsanalyse sind für diesen Datensatz nicht anwendbar.
Der Fashion-MNIST-Datensatz bietet eine moderne und herausfordernde Alternative zum klassischen MNIST-Datensatz, da er realistischere und komplexere Bilder von Kleidungsstücken enthält. Dies stellt eine größere Herausforderung für Bildklassifizierungsmodelle dar und bietet eine realistischere Anwendungsmöglichkeit im Bereich der maschinellen Bildverarbeitung.
Der Fashion-MNIST-Datensatz bietet eine moderne und herausfordernde Alternative zum klassischen MNIST-Datensatz, da er realistischere und komplexere Bilder von Kleidungsstücken enthält. Dies stellt eine größere Herausforderung für Bildklassifizierungsmodelle dar und bietet eine realistischere Anwendungsmöglichkeit im Bereich der maschinellen Bildverarbeitung.
%% Cell type:markdown id: tags:
%% Cell type:markdown id: tags:
## 3. Datenvorbereitung
%% Cell type:markdown id: tags:
Die Data Preparation Phase beginnt mit der Aufteilung der Daten in Trainings-, Validierungs- und Testsets sowie der Skalierung der Merkmale. Anschließend werden die Bildformate von 784 auf 28x28 umgewandelt (falls als CSV mit 784 Spalten geladen) und die Labels in ein kategorisches Format konvertiert. Die Überprüfung der Datenformate gewährleistet, dass alle Daten im korrekten Format vorliegen.
%% Cell type:markdown id: tags:
# 4. Datenmodell
%% Cell type:markdown id: tags:datenmodell
In der Modellierungsphase wird die Architektur des Modells definiert, die verschiedene Arten von Schichten umfasst. Zunächst wurde ein einfaches DNN mit dichten Schichten ausprobiert, jedoch konnten verbesserte Ergebnisse erzielt werden, indem auf eine CNN-Architektur umgestellt wurde. Als Ausgangsarchitektur wurde die Implementierung von LeNet-5 gewählt und angepasst. Die Hyperparameter wurden mithilfe eines Keras-Optimierers optimiert, der verschiedene Kombinationen ausprobierte, um die aktuellen Parameter auszuwählen. Das Modell umfasst Schichten wie Dense für die Berechnung des Skalarprodukts, Dropout zur Vermeidung von Überanpassung, Flatten zum Flachlegen von Matrizen, MaxPooling2D zur Reduzierung der Eingabedimensionen und Conv2D für Faltungsoperationen auf den Eingabedaten.
%% Cell type:markdown id: tags:
## 5. Evaluation
%% Cell type:markdown id: tags:evaluation
Nach dem Training und der Validierung des Modells wird die Leistung anhand der Testdaten ausgewertet. Dabei erreicht das Modell eine Testgenauigkeit von über 90 %, was darauf hinweist, dass es gut in der Lage ist, neue, bisher ungesehene Daten zu klassifizieren. Der Testverlust ist ebenfalls akzeptabel niedrig, was darauf hinweist, dass das Modell Vorhersagen nahe an den tatsächlichen Daten trifft. Zusätzlich zeigen klassenspezifische Metriken wie Präzision, Rückruf und F1-Score für jede Klasse (z.B. Top, Trouser, Pullover usw.), dass das Modell gute bis sehr gute Ergebnisse erzielt, insbesondere bei Klassen wie Sneaker, Bag und Ankle boot. Diese Ergebnisse bieten eine umfassende Bewertung der Modellleistung und helfen dabei, seine Eignung für praktische Anwendungen zu beurteilen.
%% Cell type:markdown id: tags:
## 6. Umsetzung
%% Cell type:markdown id: tags:umsetzung
Im Rahmen des CRISP-DM Zyklus stellt das Deployment den letzten Schritt dar, bei dem das trainierte Modell für den produktiven Einsatz vorbereitet wird. Dies beinhaltet die Implementierung des Modells in eine Produktionsumgebung, wo es Echtzeitdaten verarbeiten kann. Vor dem Deployment müssen alle Aspekte wie Modellperformance auf Testdaten, Sicherstellung der Skalierbarkeit und Integration in bestehende Systeme sorgfältig überprüft werden. Zudem ist es entscheidend, fortlaufende Überwachung und Wartung sicherzustellen, um die langfristige Leistung und Genauigkeit des Modells zu gewährleisten.
%% Cell type:markdown id: tags:
### 2.1. Import von relevanten Modulen
### 2.1. Import von relevanten Modulen
%% Cell type:code id: tags:
%% Cell type:code id: tags:
``` python
``` python
pipinstalltensorflow-datasets
pipinstalltensorflow-datasets
```
```
%% Output
%% Output
Requirement already satisfied: tensorflow-datasets in c:\users\ar\anaconda3\lib\site-packages (4.9.6)
Requirement already satisfied: tensorflow-datasets in c:\users\ar\anaconda3\lib\site-packages (4.9.6)
Requirement already satisfied: absl-py in c:\users\ar\anaconda3\lib\site-packages (from tensorflow-datasets) (2.1.0)
Requirement already satisfied: absl-py in c:\users\ar\anaconda3\lib\site-packages (from tensorflow-datasets) (2.1.0)
Requirement already satisfied: click in c:\users\ar\anaconda3\lib\site-packages (from tensorflow-datasets) (8.0.4)
Requirement already satisfied: click in c:\users\ar\anaconda3\lib\site-packages (from tensorflow-datasets) (8.0.4)
Requirement already satisfied: dm-tree in c:\users\ar\anaconda3\lib\site-packages (from tensorflow-datasets) (0.1.8)
Requirement already satisfied: dm-tree in c:\users\ar\anaconda3\lib\site-packages (from tensorflow-datasets) (0.1.8)
Requirement already satisfied: immutabledict in c:\users\ar\anaconda3\lib\site-packages (from tensorflow-datasets) (4.2.0)
Requirement already satisfied: immutabledict in c:\users\ar\anaconda3\lib\site-packages (from tensorflow-datasets) (4.2.0)
Requirement already satisfied: numpy in c:\users\ar\anaconda3\lib\site-packages (from tensorflow-datasets) (1.24.3)
Requirement already satisfied: numpy in c:\users\ar\anaconda3\lib\site-packages (from tensorflow-datasets) (1.24.3)
Requirement already satisfied: promise in c:\users\ar\anaconda3\lib\site-packages (from tensorflow-datasets) (2.3)
Requirement already satisfied: promise in c:\users\ar\anaconda3\lib\site-packages (from tensorflow-datasets) (2.3)
Requirement already satisfied: protobuf>=3.20 in c:\users\ar\anaconda3\lib\site-packages (from tensorflow-datasets) (4.25.3)
Requirement already satisfied: protobuf>=3.20 in c:\users\ar\anaconda3\lib\site-packages (from tensorflow-datasets) (4.25.3)
Requirement already satisfied: psutil in c:\users\ar\anaconda3\lib\site-packages (from tensorflow-datasets) (5.9.0)
Requirement already satisfied: psutil in c:\users\ar\anaconda3\lib\site-packages (from tensorflow-datasets) (5.9.0)
Requirement already satisfied: pyarrow in c:\users\ar\anaconda3\lib\site-packages (from tensorflow-datasets) (11.0.0)
Requirement already satisfied: pyarrow in c:\users\ar\anaconda3\lib\site-packages (from tensorflow-datasets) (11.0.0)
Requirement already satisfied: requests>=2.19.0 in c:\users\ar\anaconda3\lib\site-packages (from tensorflow-datasets) (2.31.0)
Requirement already satisfied: requests>=2.19.0 in c:\users\ar\anaconda3\lib\site-packages (from tensorflow-datasets) (2.31.0)
Requirement already satisfied: simple-parsing in c:\users\ar\anaconda3\lib\site-packages (from tensorflow-datasets) (0.1.5)
Requirement already satisfied: simple-parsing in c:\users\ar\anaconda3\lib\site-packages (from tensorflow-datasets) (0.1.5)
Requirement already satisfied: tensorflow-metadata in c:\users\ar\anaconda3\lib\site-packages (from tensorflow-datasets) (1.15.0)
Requirement already satisfied: tensorflow-metadata in c:\users\ar\anaconda3\lib\site-packages (from tensorflow-datasets) (1.15.0)
Requirement already satisfied: termcolor in c:\users\ar\anaconda3\lib\site-packages (from tensorflow-datasets) (2.4.0)
Requirement already satisfied: termcolor in c:\users\ar\anaconda3\lib\site-packages (from tensorflow-datasets) (2.4.0)
Requirement already satisfied: toml in c:\users\ar\anaconda3\lib\site-packages (from tensorflow-datasets) (0.10.2)
Requirement already satisfied: toml in c:\users\ar\anaconda3\lib\site-packages (from tensorflow-datasets) (0.10.2)
Requirement already satisfied: tqdm in c:\users\ar\anaconda3\lib\site-packages (from tensorflow-datasets) (4.65.0)
Requirement already satisfied: tqdm in c:\users\ar\anaconda3\lib\site-packages (from tensorflow-datasets) (4.65.0)
Requirement already satisfied: wrapt in c:\users\ar\anaconda3\lib\site-packages (from tensorflow-datasets) (1.14.1)
Requirement already satisfied: wrapt in c:\users\ar\anaconda3\lib\site-packages (from tensorflow-datasets) (1.14.1)
Das Beschreiben des Datenrahmens ist in diesem Fall nicht wirklich hilfreich, aber zeigt, dass die Daten nicht beschädigt sind, indem folgende Punkte überprüft werden:
Das Beschreiben des Datenrahmens ist in diesem Fall nicht wirklich hilfreich, aber zeigt, dass die Daten nicht beschädigt sind, indem folgende Punkte überprüft werden:
- Das Label muss zwischen 0 und 9 liegen.
- Das Label muss zwischen 0 und 9 liegen.
- Die Pixelwerte müssen zwischen 0 und 255 (nicht negativ) liegen.
- Die Pixelwerte müssen zwischen 0 und 255 (nicht negativ) liegen.
- Die Anzahl muss 60.000 (Training) und 10.000 (Test) betragen.
- Die Anzahl muss 60.000 (Training) und 10.000 (Test) betragen.
- Die maximale Anzahl an Pixeln muss für alle Zeilen 784 betragen.
- Die maximale Anzahl an Pixeln muss für alle Zeilen 784 betragen.
# Take a single image, and remove the color dimension by reshaping
# Take a single image, and remove the color dimension by reshaping
image=x_train_exp[0].reshape((28,28))/255.0
image=x_train_exp[0].reshape((28,28))/255.0
plt.figure()
plt.figure()
plt.imshow(image,cmap=plt.cm.binary)
plt.imshow(image,cmap=plt.cm.binary)
plt.colorbar()
plt.colorbar()
plt.grid(False)
plt.grid(False)
plt.show()
plt.show()
```
```
%% Output
%% Output
%% Cell type:markdown id: tags:
%% Cell type:markdown id: tags:
Drucken Sie jeweils ein Bild aus jeder Kategorie, um zu sehen, wie sie aussehen und wie sie sich unterscheiden.
Drucken Sie jeweils ein Bild aus jeder Kategorie, um zu sehen, wie sie aussehen und wie sie sich unterscheiden.
%% Cell type:code id: tags:
%% Cell type:code id: tags:
``` python
``` python
plt.figure(figsize=(10,10))
plt.figure(figsize=(10,10))
i=0
i=0
forindexinrange(len(x_train_exp)):
forindexinrange(len(x_train_exp)):
label=y_train_exp[index]
label=y_train_exp[index]
image=x_train_exp[index]/255.0
image=x_train_exp[index]/255.0
iflabel==i:
iflabel==i:
image=image.reshape((28,28))
image=image.reshape((28,28))
plt.subplot(5,5,i+1)
plt.subplot(5,5,i+1)
plt.xticks([])
plt.xticks([])
plt.yticks([])
plt.yticks([])
plt.grid(False)
plt.grid(False)
plt.imshow(image,cmap=plt.cm.binary)
plt.imshow(image,cmap=plt.cm.binary)
plt.title(class_names[label])
plt.title(class_names[label])
i+=1
i+=1
ifi==10:
ifi==10:
break
break
plt.show()
plt.show()
```
```
%% Output
%% Output
%% Cell type:markdown id: tags:
%% Cell type:markdown id: tags:
## 3. Datenvorbereitung
%% Cell type:markdown id: tags:
Die Data Preparation Phase beginnt mit der Aufteilung der Daten in Trainings-, Validierungs- und Testsets sowie der Skalierung der Merkmale. Anschließend werden die Bildformate von 784 auf 28x28 umgewandelt (falls als CSV mit 784 Spalten geladen) und die Labels in ein kategorisches Format konvertiert. Die Überprüfung der Datenformate gewährleistet, dass alle Daten im korrekten Format vorliegen.
%% Cell type:markdown id: tags:
### 3.1. Test- und Trainingsdaten
### 3.1. Test- und Trainingsdaten
%% Cell type:code id: tags:
%% Cell type:code id: tags:
``` python
``` python
df_train_copy=df_train.copy()
df_train_copy=df_train.copy()
y_train=df_train_copy.pop('label').to_numpy()
y_train=df_train_copy.pop('label').to_numpy()
x_train=df_train_copy.to_numpy()
x_train=df_train_copy.to_numpy()
df_val_copy=df_val.copy()
df_val_copy=df_val.copy()
y_val=df_val_copy.pop('label').to_numpy()
y_val=df_val_copy.pop('label').to_numpy()
x_val=df_val_copy.to_numpy()
x_val=df_val_copy.to_numpy()
df_test_copy=df_test.copy()
df_test_copy=df_test.copy()
y_test=df_test_copy.pop('label').to_numpy()
y_test=df_test_copy.pop('label').to_numpy()
x_test=df_test_copy.to_numpy()
x_test=df_test_copy.to_numpy()
```
```
%% Cell type:markdown id: tags:
%% Cell type:markdown id: tags:
### 3.2. Merkmalsskalierung
### 3.2. Merkmalsskalierung
%% Cell type:code id: tags:
%% Cell type:code id: tags:
``` python
``` python
x_train=x_train/255.0
x_train=x_train/255.0
x_val=x_val/255.0
x_val=x_val/255.0
x_test=x_test/255.0
x_test=x_test/255.0
```
```
%% Cell type:markdown id: tags:
%% Cell type:markdown id: tags:
Wandeln Sie die Bildform von 784 auf 28x28 um (nur wenn sie als CSV mit 784 Spalten geladen wurden).
Wandeln Sie die Bildform von 784 auf 28x28 um (nur wenn sie als CSV mit 784 Spalten geladen wurden).
Überprüfen Sie die Datenformate, um sicherzustellen, dass die Daten im richtigen Format vorliegen.
Überprüfen Sie die Datenformate, um sicherzustellen, dass die Daten im richtigen Format vorliegen.
%% Cell type:code id: tags:
%% Cell type:code id: tags:
``` python
``` python
print(x_train.shape)
print(x_train.shape)
print(y_train.shape)
print(y_train.shape)
print(x_val.shape)
print(x_val.shape)
print(y_val.shape)
print(y_val.shape)
print(x_test.shape)
print(x_test.shape)
print(y_test.shape)
print(y_test.shape)
```
```
%% Output
%% Output
(54000, 28, 28, 1)
(54000, 28, 28, 1)
(54000, 10)
(54000, 10)
(6000, 28, 28, 1)
(6000, 28, 28, 1)
(6000, 10)
(6000, 10)
(10000, 28, 28, 1)
(10000, 28, 28, 1)
(10000, 10)
(10000, 10)
%% Cell type:markdown id: tags:
# 4. Datenmodell
%% Cell type:markdown id: tags:datenmodell
In der Modellierungsphase wird die Architektur des Modells definiert, die verschiedene Arten von Schichten umfasst. Zunächst wurde ein einfaches DNN mit dichten Schichten ausprobiert, jedoch konnten verbesserte Ergebnisse erzielt werden, indem auf eine CNN-Architektur umgestellt wurde. Als Ausgangsarchitektur wurde die Implementierung von LeNet-5 gewählt und angepasst. Die Hyperparameter wurden mithilfe eines Keras-Optimierers optimiert, der verschiedene Kombinationen ausprobierte, um die aktuellen Parameter auszuwählen. Das Modell umfasst Schichten wie Dense für die Berechnung des Skalarprodukts, Dropout zur Vermeidung von Überanpassung, Flatten zum Flachlegen von Matrizen, MaxPooling2D zur Reduzierung der Eingabedimensionen und Conv2D für Faltungsoperationen auf den Eingabedaten.
C:\Users\ar\anaconda3\Lib\site-packages\keras\src\layers\convolutional\base_conv.py:107: UserWarning: Do not pass an `input_shape`/`input_dim` argument to a layer. When using Sequential models, prefer using an `Input(shape)` object as the first layer in the model instead.
C:\Users\ar\anaconda3\Lib\site-packages\keras\src\layers\convolutional\base_conv.py:107: UserWarning: Do not pass an `input_shape`/`input_dim` argument to a layer. When using Sequential models, prefer using an `Input(shape)` object as the first layer in the model instead.
C:\Users\ar\anaconda3\Lib\contextlib.py:155: UserWarning: Your input ran out of data; interrupting training. Make sure that your dataset or generator can generate at least `steps_per_epoch * epochs` batches. You may need to use the `.repeat()` function when building your dataset.
C:\Users\ar\anaconda3\Lib\contextlib.py:155: UserWarning: Your input ran out of data; interrupting training. Make sure that your dataset or generator can generate at least `steps_per_epoch * epochs` batches. You may need to use the `.repeat()` function when building your dataset.
self.gen.throw(typ, value, traceback)
self.gen.throw(typ, value, traceback)
%% Cell type:markdown id: tags:
%% Cell type:markdown id: tags:
Wir wollen besonders wissen wie sich der Loss (Verlust) über die Zeit entwickelt
Wir wollen besonders wissen wie sich der Loss (Verlust) über die Zeit entwickelt
Es ist zu erkennen, dass das Modell recht gut funktioniert, aber nach der zweiten Epoche beginnt es zu überanpassen. Um dies zu verhindern, könnten wir verschiedene Trainings-Validierungs-Splits ausprobieren, mehr Dropouts hinzufügen oder Teile des Modells umstrukturieren.
Es ist zu erkennen, dass das Modell recht gut funktioniert, aber nach der zweiten Epoche beginnt es zu überanpassen. Um dies zu verhindern, könnten wir verschiedene Trainings-Validierungs-Splits ausprobieren, mehr Dropouts hinzufügen oder Teile des Modells umstrukturieren.
C:\Users\ar\anaconda3\Lib\site-packages\sklearn\metrics\_classification.py:1517: UndefinedMetricWarning: Precision is ill-defined and being set to 0.0 in samples with no predicted labels. Use `zero_division` parameter to control this behavior.
C:\Users\ar\anaconda3\Lib\site-packages\sklearn\metrics\_classification.py:1517: UndefinedMetricWarning: Precision is ill-defined and being set to 0.0 in samples with no predicted labels. Use `zero_division` parameter to control this behavior.
Nach dem Training und der Validierung des Modells wird die Leistung anhand der Testdaten ausgewertet. Dabei erreicht das Modell eine Testgenauigkeit von über 90 %, was darauf hinweist, dass es gut in der Lage ist, neue, bisher ungesehene Daten zu klassifizieren. Der Testverlust ist ebenfalls akzeptabel niedrig, was darauf hinweist, dass das Modell Vorhersagen nahe an den tatsächlichen Daten trifft. Zusätzlich zeigen klassenspezifische Metriken wie Präzision, Rückruf und F1-Score für jede Klasse (z.B. Top, Trouser, Pullover usw.), dass das Modell gute bis sehr gute Ergebnisse erzielt, insbesondere bei Klassen wie Sneaker, Bag und Ankle boot. Diese Ergebnisse bieten eine umfassende Bewertung der Modellleistung und helfen dabei, seine Eignung für praktische Anwendungen zu beurteilen.
%% Cell type:markdown id: tags:
## 6. Umsetzung
%% Cell type:markdown id: tags:umsetzung
Im Rahmen des CRISP-DM Zyklus stellt das Deployment den letzten Schritt dar, bei dem das trainierte Modell für den produktiven Einsatz vorbereitet wird. Dies beinhaltet die Implementierung des Modells in eine Produktionsumgebung, wo es Echtzeitdaten verarbeiten kann. Vor dem Deployment müssen alle Aspekte wie Modellperformance auf Testdaten, Sicherstellung der Skalierbarkeit und Integration in bestehende Systeme sorgfältig überprüft werden. Zudem ist es entscheidend, fortlaufende Überwachung und Wartung sicherzustellen, um die langfristige Leistung und Genauigkeit des Modells zu gewährleisten.