Demo-PY3: Clusteranalyse "Automotive in 3D"

Die vorliegende Demo zeigt, wie eine Clusteranalyse im 3-dimensionalen Raum mit Hilfe der Python-Bibliothek scikit-learn durchgeführt wird, hier am Beispiel eines Automobildatensatzes, der auch in Demo-PY4: Predictive Maintenance mit scikit-learn verwendet wird. In diesem Anwendungsfall werden die Cluster auf Basis von drei Merkmalen des Datensatzes erstellt und die Cluster-Zuordnung der Daten wird im 3 dimensionalen Raum visualisiert. Dazu wird das Toolkit mplot3d verwendet, dieses Toolkit erweitert die Bibliothek Matplotlib um Methoden zur Erstellung von 3D-Grafiken.

  Motivation

Für die Automobildaten wurde in Demo-PY4: Predictive Maintenance mit scikit-learn oder auch Demo 4: Predictive Maintenance mit R die Merkmale mittels eines Entscheidungsbaums, ein Verfahren des maschinellen Lernens, ermittelt, die am stärksten zu einem Ausfall des Motors beitragen.
Diese drei Merkmale werden nun herangezogen um eine Clusteranalyse durchzuführen, dabei werden durch die Verwendung eines bestimmten Ähnlichkeits- bzw. Abstandsmaßes Gruppen/Cluster ähnlicher Merkmale gebildet. Neue Daten können anhand ihrer Merkmale den in der Analyse gebildeten Clustern zugeordnet werden und somit eine Kategorisierung dieser durchgeführt werden.

Die Zuordnung zu den Clustern anhand der drei Merkmale werden danach im 3 dimensionalen Raum visualisiert und interpretiert.

  Übersicht

Demo-PY3: Clusteranalyse "Automotive" ist in fünf Abschnitte gegliedert: Zunächst wird die Fragestellung geklärt und die Vorbereitungsschritte zur Verwendung von Jupyter Notebook erläutert. Danach werden Verfahren der Clusteranalyse aus der Python-Bibliothek scikit-learn auf die Automobildaten angewandt und es wird mittels des Toolkits mplot3d der Matplotlib-Bibliothek die Daten- und Clusterzugehörigkeit visualisiert, gefolgt von einer Interpretation der Cluster.

Das Tutorial ist als Google Colab Notebook online verfügbar:

1 Die Fragestellung

Aus den Ergebnissen der in Demo-PY4: Predictive Maintenance mit scikit-learn und Demo 4: Predictive Maintenance mit R durchgeführten Analysen wurden drei Merkmale, die am stärksten zum Ausfall des Motors beitragen, ausgewählt: der Ansaugkrümmerdruck, die Drossel­klappen­stellung und die Katalysatortemperatur.
Die Frage, die mit einer Clusteranalyse beantwortet werden soll, lautet: Welche Clusterzuordnung der Motoren erfolgt bzgl. dieser drei Merkmale, die den stärksten Einfluss auf den Ausfall hatten?

2 Installation von Python, Anaconda und Jupyter Notebook

Um Python-Programme schreiben zu können, muss zunächst eine aktuelle Python-Installation von der Python-Webseite python.org heruntergeladen und installiert werden. Für die Entwicklung größerer Programme und die Durchführung von Datenanalysen sollten zusätzlich die Paketverwaltungsplattform Anaconda und die Entwicklungs- und Laufzeitumgebungen Spyder und Jupyter Notebook verwendet werden, die umfangreiche Funktionalität für Paketverwaltung, Softwareentwicklung und Präsentation bereitstellen.

Vorbereitung: Anaconda und Jupyter Notebook installieren

Die Details der Installation von Python und Anaconda sind in dem Abschnitt Vorbereitung: Installation von Python und Anaconda beschrieben.

Die Details der Verwendung von Jupyter Notebook sind in den Abschnitten Jupyter Notebook verwenden und Jupyter Notebook Widgets verwenden beschrieben, zu denen es auch YouTube-Anleitungen gibt.

Video: Jupyter Notebook

Das folgende Video zeigt, wie ein Jupyter Notebook erstellt und verwendet wird.

3 Clusteranalyse im 3 dimensionalen Raum

Über Programme öffnen wir die Jupyter Notebook-Anwendung und erstellen mit Hilfe des Menüpunkts "New" ein neues Python3-Notizbuch mit dem Namen elab2go-Demo-PY3_automotive. In dieses Notizbuch werden vier Codezellen eingefügt, die den üblichen Schritten bei der Erstellung einer Clusteranalyse entsprechen.

3.1 Importieren der Programmbibliotheken

In der ersten Codezelle des Jupyter Notebooks importieren wir die benötigten Programm­bibliotheken: Die in Demo-PY3 bereits vorgestellten Bibliotheken scikit-learn und sciPy, die die verwendeten Clustering-Algorithmen enthalten, sowie die aus Demo-PY2: Datenverwaltung mit Pandas bekannten Bibliotheken Pandas, Matplotlib und NumPy werden in Python mit Hilfe der import-Anweisung entweder komplett importiert oder mit Hilfe der from-import-Anweisung nur einzelne Funktionen der Programmbibliothek abgerufen. Zusätzlich wird in diesem Anwendungsfall das Toolkit mplot3d verwendet, das die Bibliothek Matplotlib um Methoden zur Erstellung von 3D-Grafiken erweitert.

Die erste Codezelle enthält insgesamt sieben Import-Anweisungen.

 import numpy as np
 import pandas as pd 
 import matplotlib.pyplot as plt
 import scipy.cluster.hierarchy as shc  
 import mpl_toolkits.mplot3d.axes3d as p3
 from sklearn.cluster import AgglomerativeClustering

3.2 Daten einlesen und verwalten

In der zweiten Codezelle werden Daten, die in der csv-Datei automotive_test_140.csv gespeichert sind, mit Hilfe der Funktion read_csv() der Pandas-Bibliothek eingelesen, siehe auch Demo-PY2: Datenverwaltung mit Pandas.

 # Lese CSV-Datei ein  
 file = 'automotive_test_140.csv'  
 df = pd.read_csv(file, header=0, sep = ";")
 
 # Auswahl der drei Merkmale in der Clusterananlyse
 merkmale = df.iloc[:,[6,7,23]].copy() ;  
 X = merkmale.to_numpy()  
 
 # Zeige die ersten 5 Daten zur Kontrolle an  
 merkmale.head(5)

Erläuterung des Codes:

Die Ausgabe nach Ausführung dieses Codeblocks sieht ähnlich aus wie abgebildet.


3.3 Clusteranalyse durchführen

Das Importieren der benötigten Bibliotheken bzw. derer Funktionen und das Einlesen und Visualisieren der Daten erfolgt wie bereits im vorherigen Abschnitt beschrieben. Wir starten in diesem Abschnitt direkt bei der Durchführung der Clusteranalyse und der Erstellung eines Dendrogramms mittels der scikit-learn- und sciPy-Bibliothek.

Vorbereitung: Dendrogramm erstellen

Das Dendrogramm wird mittels dendrogram-Funktion des cluster.hierarchy-Pakets der sciPy-Bibliothek durchgeführt und stellt bei Ungewissheit zur Anzahl der Cluster/Zentren ein vorbereitendes Mittel zur Auswahl der Clusteranzahl dar.

 fig = plt.figure(figsize=(10, 7))
 ax = fig.add_axes([0.1,0.1,0.75,0.75])
 ax.set_title("Hierarchisches Cluster-Dendogramm mit 4 bis 5 Clustern")
 ax.set_xlabel("Distanz")
 ax.set_ylabel("Cluster")
 Z = shc.linkage(X, method='ward')
 dend = shc.dendrogram(Z)
 plt.savefig("dendogramm.svg, dpi=320, format="svg", bbox_inches='tight')

Erläuterung des Codes:

Die Ausgabe nach Ausführung dieses Codeblocks sieht ähnlich aus wie abgebildet. Das Dendrogramm zeigt das Vorhandensein von 4 oder 5 Clustern an. Die Information über die Anzahl der Cluster verwenden wir bei der Durchführung der Clusteranalyse, die im nächsten Schritt erfolgt.

3.4 Detaillierte Clusteranalyse durchführen

Die detaillierte Clusteranalyse wird mittels der AgglomerativeClustering aus dem sklearn.cluster-Paket der scikit-learn-Bibliothek durchgeführt.

 print("Erstelle Modell für Hierarchisches Clustering ...")
 # Lege Clusteranzahl fest 
 n = 4 
 # Erstelle Vorhersagemodell model
 model = AgglomerativeClustering(n_clusters=n, linkage='ward').fit(X)
 # Gebe Zuordnungen zu Clustern aus
 zuordnung = model.labels_
 print("Anzahl Beobachtungen: %d" % zuordnung.size)
 print("Zuordnung der Beobachtungen zu Cluster-Zentren 0, 1, 2, 3:")
 print(zuordnung)

Erläuterung des Codes:

Die Ausgabe nach Ausführung dieses Codeblocks sieht ähnlich aus wie abgebildet.

3.5 Zuordnung der Daten zu den Clustern visualisieren

Die Ergebnis, d.h. die Zuordnung der Beobachtungen zu den vier möglichen Zentren/Clustern, wird als 3D-Plot dargestellt. Dazu wird das Toolkit mplot3d verwendet, dieses Toolkit erweitert die Bibliothek Matplotlib um Methoden zur Erstellung von 3D-Grafiken, z.B. um die Funktion Axes3D, die ein 3D-Grafikfenster erstellt.

 # Daten visualisieren  
 fig = plt.figure(figsize=(10, 7))  
 ax = fig.add_subplot(projection='3d')  
  
 for z in np.unique(zuordnung):  
    ax.scatter(X[zuordnung == z, 0], X[zuordnung == z, 1], X[zuordnung == z, 2],  
               color=plt.cm.jet(float(z) / np.max(zuordnung + 1)),  
               s=20, edgecolor='k')  
      
 plt.title('Clusterzuordnung der Motoren')  
 ax.set_xlabel('Ansaugkruemmerdruck')  
 ax.set_ylabel('Drossel­klappen­stellung')  
 ax.set_zlabel('Katalysatortemperatur')    
 plt.show()   

Erläuterung des Codes:

Die Ausgabe nach Ausführung dieses Codeblocks sieht ähnlich aus wie abgebildet.

4 Die Interpretation

Bei der Verwendung von Clusteranalysen ist, wie bei allen Datenanalysen, ein Verständnis der fachlichen Bedeutung der ausgewerteten Daten wichtig, um die Ergebnisse korrekt interpretieren zu können. Um die in Abschnitt 4.1 gegebene Interpretation der Clusterbildung nachvollziehen zu können, werden in den folgenden Abschnitten 4.2 und 4.3 die Zusammenhänge und Mechanismen im Viertaktmotor und insbesondere die Komponenten Drosselklappe, Ansaugkrümmer und Katalysator, sowie deren Ausstattung mit Sensoren, erläutert. Die über die Sensoren erfassten Werte, die als Merkmale in den Automotive-Datensatz eingehen, werden inkl. Skaleneinheit ebenfalls vorgestellt.

Bei der Bildung und Visualisierung der Cluster fällt auf, dass

Die Visualisierung in 2-dimensionalen Grafiken Ansaugkrümmerdruck vs. Drossel­klappen­stellung, Ansaugkrümmerdruck vs. Katalysatortemperatur und Drossel­klappen­stellung vs. Katalysatortemperatur zeigen auch, dass es keinen direkten Zusammenhang zwischen der Katalysatortemperatur und den anderen beiden Variablen gibt. In der Grafik Ansaugkrümmerdruck vs. Drossel­klappen­stellung ist die Bildung der Cluster, wie sie die obige Analyse ergeben hat, ebenfalls zu erkennen: es besteht ein grafischer Zusammenhang/Abhängigkeit zwischen Ansaugkrümmerdruck niedrig und Drossel­klappen­stellung niedrig und Ansaugkrümmerdruck hoch und Drossel­klappen­stellung niedrig.

2D-Plot 1 2D-Plot 2 2D-Plot 3

4.1 Interpretation der Cluster

Die Bildung der Cluster (orange und grün) spiegeln den funktionalen Zusammenhang zwischen den Bauteilen Ansaugkrümmer und Drosselklappe wieder. Eine Drosselklappe wird dazu verwendet, um den Ansaugkrümmerdruck und damit die Ansaugluftdichte zu regeln. Im Verbrennungsmotor, der wie eine Luftpumpe wirkt, wird die Luft oder Luft-Kraftstoff-Gemisch durch den Einlass ein und durch den Auslass heraus gedrückt. Der Durchfluss dieser Luftmasse oder des Gemisches hängt neben der Motorendrehzahl und dem Hubraum und eben auch von der Luftdichte des Ansaugkrümmers ab und damit indirekt von der Stellung der Drosselklappe.

Bei der Interpretation der Cluster spielen die beiden Zustände Leerlauf und Volllast eine Rolle. Bei Leerlauf sind die Drosselklappe und ein sogenannter Leerlaufschalter geschlossen. Erreicht der Öffnungswinkel einen vom Motorsteuergerät festgelegten Wert, startet der Volllastbereich und ein Volllastschalter wird geschlossen. Bei geschlossenem Volllastschalter wird die Kraftstoffeinspritzmenge erhöht, um bessere Leistungswerte zu erzielen. Die Widerstandswerte des Drosselklappensensors liegen bei geschlossener Drosselklappe (Leerlauf) z.B. bei 1190 Ohm bzw. 1.19 kohm, und bei geöffneter Drosselklappe (Volllast) z.B. bei 9200 Ohm bzw. 9.2 kohm.

Die beiden Cluster (orange und grün) beinhalten damit Motoren, deren Drosselklappen sich in geschlossenen (Leerlauf) oder leicht geöffneten Zustand (Anlassen eines Motors) befinden. Das Verhalten des Ansaugkrümmerdrucks während des Leerlaufs kann wie folgt beschrieben werden:
Die dicht geschlossene Drosselklappe drosselt den Luftdurchfluss aus der Umgebung, wenn der Motor Luftmasse von Ansaugkrümmer weg pumpt. Der kumulative Effekt ist eine Verringerung der Ansaugkrümmerluftdichte, was zu einem reduzierten Gesamtdruck im Vergleich zum Luftdruck führt (orangenes Cluster).

Folgende Kennwerte und Zusammenhänge sind für den Zustand des Anlassens von Bedeutung: 0 bar wird als relativer Druck ausgedrückt und entspricht dem Luftdruck, der Ansaugkrümmerdruck liegt anfangs bei 0 bar (Luftdruck), wenn der Motor steht oder sich im Leerlauf befindet. Der Druck fällt unter 0 bar, wenn der Motor angelassen wurde (leichte Drosselklappenöffnung) und ein Ansaugtakt des Motors die nötigen Bedingungen geschaffen hat. Der Ansaugkrümmerdruck spiegelt die Nettowirkung aller gleichzeitig stattfindenden Zylinder- und Ansauginteraktionen wider. Diese Beziehungen sind komplex. Zum Beispiel treten beim Start jedes Ansaugtakts auch Ventilüberschneidungsszenarien auf, die Einfluss auf den Druck haben.

Beim Anlassen spielen neben der Drossel­klappen­stellung also auch andere Bauteile und die Motorkonstruktion eine große Rolle und somit ist das Cluster (grün, Anlass-Betrieb des Motors) und der erhöhte Ansaugkrümmerdruck im Cluster einzig mit Blick auf die Drossel­klappen­stellung nicht so einfach zu interpretieren wie ein Leerlauf-Betrieb eines Motors (orangenes Cluster). Die Clusteranalyse zeigt aber einen deutlichen Einfluss der Drosselklappe auf den Ansaugkrümmerdruck beim Anlassen eines Motors, was den funktionalen Zusammenhang der Bauteile wiederspiegelt.

5 Weiterführende Fragen

Die Clusterbildung unabhängig von der Katalysatortemperatur zeigt, dass dieses Bauteil keinen direkten Einfluss auf die beiden anderen ausgewählten Bauteile/Merkmale Drossel­klappen­stellung und Ansaugkrümmerdruck hat. Da zum Katalysatorschutz aber je nach Abstimmung des Motormanagements die Einspritzmenge (und damit der Kraftstoffverbrauch) erhöht wird, um den Katalysator zu kühlen, wäre das Aufnehmen weiterer Merkmale, die damit in Zusammenhang stehen, für eine weiterführende Clusteranalyse sinnvoll.

Mögliche Merkmale aus dem Automobildatensatz für eine erweiterte Clusteranalyse sind die eingesetze Einspritzmenge in Kurzzeit, die eingesetze Einspritzmenge in Langzeit sowie der Kraftsstoffeinsatz. Aufgrund eines möglichen erhöhten Kraftstoffeinsatzes zum Katalysatorschutz ist auch das Merkmal der Kraftstoffdampfsäuberung, das zeigt wie gut der Katalysator arbeitet, eine sinnvolles Merkmal für eine Clusteranalyse im höher dimensionalen Raum.

Auch hinsichtlich weiterer Analysen in Bezug auf den Gesamtzustand des Motors, seiner Leistungsfähigkeit, einer möglichen Wartung oder eines Ausfalls spielt die Wirkung der Bauteile untereinander und ihr Zustand und ihre Wirkungsweise eine entscheidende Rolle.

Autoren, Tools und Quellen

Autoren:
 M.Sc. Anke Welz
 Prof. Dr. Eva Maria Kiss

Tools:

Quellen und weiterführende Links: