ich war hier: CIPythonBA

Version [90956]

Dies ist eine alte Version von CIPythonBA erstellt von haeuser am 2018-09-07 12:42:12.

 

Computational Intelligence in Python


Diese Seite beschreibt die Inhalte des Tutoriums "Tutorium Python Programmierung (Bachelorstudiengang)". Das Ziel des Tutoriums ist es, eine Einfürhrung in Python zu geben, sowie die gezeigten Programmbeispiele in eigenen Übungen zu festigen. Des Weiteren werden verschiedene Methoden zur Klassifizierung und dem einfachste Neuronale Netz vermittelt bzw. gefestigt. Fachübergreifende Kenntnisse wie z.B. die Visualisierung in Python werden ebenfalls vermittelt.

Um den Inhalten folgen zu können, werden geringe Grundkenntnisse in Computational Intelligence / Mustererkennung vorrausgesetzt.

Die Vorbereitung


Der erste Termin handelte von den Grundlagen der Programmierung in Python. Anfgefangen mit der Installation der Entwicklungsumgebung, Erstellung einer Projektes und den Allgemeinen Programmiergrundlagen. Zu den Allgemeinen Programmiergrundlagen gehören die Verwendung von Variablen, Verzweigungen, Schleifen, Listen & andere Datenstrukturen, sowie Exception Handling. Im zweiten Termin setzten wir uns mit dem Multithreading und Multiprocessing auseinanden. Hierbei fanden wir herraus das Python mehrere Threads dennoch nur auf einem Prozessorkern laufen lässt. Dadurch haben wir uns verschiedene Multiprocessing Beispiele angeschaut, weil diese auf meheren Prozessorkernen aufgeteilt werden und somit die von uns gewünschte Synchronität, sowie eine schnellere Verarbeitung bereitstellt. Hierbei haben wir herrausgefunden, dass das Pool Mutlithreading die einfachste und für uns beste Methode war um an unser Ziel zu kommen.
Die Folien und Beispieldaten zu den Grundlagen sowie Multiprocessing können Sie hier herunterladen: Vorlesung 1 & 2 mit Aufgaben


Visualisierung


In der dritten Vorlesung beschäftigten wir uns mit der Visualisierung von Daten von Python, mit der Bibliothek "matplotlib". Hierbei behandelten wir diverse Diagrammtypen und der Konfiguration der Achsen, Beschriftungen und Legenden.
 (image: https://ife.erdaxo.de/uploads/CIPythonBA/tortendia.jpg)  (image: https://ife.erdaxo.de/uploads/CIPythonBA/histogram.jpg)


Die Folien zur Visualisierung und kNN können Sie hier herunterladen: Vorlesung 3


Klassifizierungen

k-Nearest Neighbors (KNN)


Als ersten Algorithmus lernten wir den k-Nearest Neighbors (KNN) kennen, welchen Herr Gerlach ausführlich behandelt hat. Kurz gesagt dient dieser Algorithmus als Klassifikationsverfahren, unter der Berücksichtigung der k nächsten Nachbarn. Weitere Details finden Sie auf: Tutorium Python - Master

k-Means


Der k-Means ist ein weitere Klassifizierungsalgorithmus zu Clusteranalyse. Im Gegensatz zu dem KNN, haben die Datensätze noch keine Klassenzuteilung. Dem Algorithmus erhält die Datensätze und wir geben ihm die Anzahl der Gruppen/Cluster mit, anhand desses weist er den Datensätze Gruppen zu. Für diese Zuteilung wird meistens der Lloyd-Algorithmus verwendet, welcher aus 3 Schritten besteht.
  1. Initialisierung der k zufälligen Mittelwerte
  1. Zuordnung der Datenpunkte zu einem Cluster
  • Hierbei wird die euklidische Distanz von jedem Punkt zu jedem Cluster gebildet
  • Der Punkt wird dem Cluster zugewiesen, zu welchem die Distanz am geringsten ist
  1. Berechnen der Clusterzentren
  • Anhand einer Mittelwertbildung der X / Y Werte eines Clusters
  • Schritt 2 & 3 werden wiederholt bis sich die Clusterzentren nicht mehr bzw. so gut wie nicht mehr ändern oder eine gewisse Anzahl von Iterationsschritten erreicht ist

 (image: https://ife.erdaxo.de/uploads/CIPythonBA/kMeans1.jpg)  (image: https://ife.erdaxo.de/uploads/CIPythonBA/kMeans2.jpg)


Anwendungsbeispiele

In der Vorlesung haben wir zum einen eine Eigenimplementierung vorgenommen, aber auch das Paket sklearn an dem Beispiel der Bildfarben-Skalierung. Hierbei haben wir das Bild eingelesen und in ein mehr dimensionales Array konvertiert, anhand der X & Y Werte sowie der RGB Farbwerte. Dem Algorithmus wird das dieses X & Y Farbarray übergeben und die Anzahl der Farben, auf welche es herunter skaliert werden soll.
 (image: https://ife.erdaxo.de/uploads/CIPythonBA/kMeans_Beispiel.jpg)

Fuzzy k-Means

Der Fuzzy k-Means ist eine Erweitung des k-Means, wobei jeder Datenpunkt nicht einem einzeln Cluster zugeordnet wird, sondern eine gewisse Prozentzuorndnung zu jedem Cluster erhält. Die Summer der prozentualen Zuordnung ergibt 100%. Für diese Zuordnungen wird eine Zuordnungsmatrix benötigt / erstellt. Noch einer Erweiterung ist die zusätzliche Anpassungvariable (Fuzzyfier), welche auch als Verschleifungsgrad bezeichnet wird. Diese dient für die Schärfe- / Genauigkeitseinstellung der Clusterung. Wird dieser >2 gewählt erfolgt eine sehr unscharfe Clusterung. Wird eine sehr scharfe / genauer Clusterung gewünscht, sollte der Fuzzyfier zwischen 1-2 gewählt werden. Des Weiteren werden die Clusterzentren durch eine andere Formel berechnet, wie in den folgenden Bildern zu sehen.

 (image: https://ife.erdaxo.de/uploads/CIPythonBA/fuzzy_1.jpg)  (image: https://ife.erdaxo.de/uploads/CIPythonBA/fuzzy_2.jpg)


Die Folien zum kMeans und Fuzzy kMeans können Sie hier herunterladen: Vorlesung 4.2

Support Vektor Maschiene

Die Support Vektor Maschiene ist eine wichtige Gruppe für Klassifikationen. Das Grundkonzept ist es, dass versucht wird die vorhanden Daten linear zu trennen und somit eine Klassifikation durchzuführen. Die Trennfunktion wird so gebildet, dass die Daten maximal von einander getrennt sind. Dies wird als Large Margin Concept bezeichnet. Falls keine lineare Separation möglich ist oder die Spanne zwischen den Klassen zu gering ist, nutzt man das Soft Margin Concept, welches Fehlklassifikationen erlaubt. Dieses wird durch den C-Parameter zugelassen.
 (image: https://ife.erdaxo.de/uploads/CIPythonBA/svm_1.jpg)  (image: https://ife.erdaxo.de/uploads/CIPythonBA/svm_2.jpg)

Ist eine lineare Trennung nicht möglich, wird der Kernel-Trick angewendet. Hierbei werden die Daten in einen höherdimensionalen Raum transferiert, wo sie dann linear getrennt werden können. Es wird eine lineare Trennfunktion gebildet, anschließend werden die Daten und die (Hyper-)Trennebene zurück transformiert, wobei die Trennfunktion dann meist nicht mehr linear bzw. zusammenhägend ist.
 (image: https://ife.erdaxo.de/uploads/CIPythonBA/svm_3.jpg)

In Python stehen mehrere Kernel zur Verfügung, wobei die bekanntesten der poly (polynominale) und der rbf (radial basis function) Kernel sind. Beim poly Kernel wird eine weiteres Merkmal hinzugefügt durch die Wertkombination der vorhandenen Merkmale, z.B. [x,y,z] -> [x,y,z, x^3+y^2+z]. Der rbf Kernel wir benutzt um geschlossene Bereiche z.B. Kreise oder Cluster zu erkennen. Dieser bildet Hügel, welche durch eine (Hyper-)Ebene linear getrennt werden können.
 (image: https://ife.erdaxo.de/uploads/CIPythonBA/svm_4.jpg)

Die Folien zur SVM können Sie hier herunterladen: Vorlesung 6


Noch mögliche Vorlesungspunkte in kommenden Semestern

  • Random Forest
  • Vertiefende Beispiele Neuronale Netzte (z.B. Bild Unterscheidung Katze/Hund)
  • Vertiefende Beispiele SVM

Attachments
File Last modified Size
Python_2_0.zip 2023-10-06 18:35 1Mb
Vorlesung_1_2_mit_Aufgaben.zip 2023-10-06 18:35 2Mb
Vorlesung_3.pdf 2023-10-06 18:35 897Kb
Vorlesung_4-2.pdf 2023-10-06 18:35 1Mb
Vorlesung_6.pdf 2023-10-06 18:35 1Mb
fuzzy_1.jpg 2023-10-06 18:35 64Kb
fuzzy_2.jpg 2023-10-06 18:35 43Kb
histogram.jpg 2023-10-06 18:35 33Kb
kMeans1.jpg 2023-10-06 18:35 70Kb
kMeans2.jpg 2023-10-06 18:35 64Kb
kMeans_Beispiel.jpg 2023-10-06 18:35 99Kb
oop.jpg 2023-10-06 18:35 58Kb
process.jpg 2023-10-06 18:35 73Kb
svm_1.jpg 2023-10-06 18:35 30Kb
svm_2.jpg 2023-10-06 18:35 32Kb
svm_3.jpg 2023-10-06 18:35 24Kb
svm_4.JPG 2023-10-06 18:35 26Kb
thread.jpg 2023-10-06 18:35 54Kb
tortendia.jpg 2023-10-06 18:35 68Kb
Diese Seite wurde noch nicht kommentiert.
Valid XHTML :: Valid CSS: :: Powered by WikkaWiki