7. Unterrichtsblock

Python Listen

meineListe = ["Apfel", "Zwetschge", "Birne"]

Die Liste

Listen werden verwendet, um mehrere Elemente in einer einzigen Variablen zu speichern.

Listen sind einer von 4 integrierten Datentypen in Python, die zum Speichern von Datensammlungen verwendet werden, die anderen 3 sind TupelSets und Dictionaries, alle mit unterschiedlichen Qualitäten und Verwendungszwecken.

Python-Sammlungsdatentypen (Arrays)

In der Programmiersprache Python gibt es vier Sammlungsdatentypen:

  • Liste ist eine Sammlung, die geordnet und veränderbar ist. Erlaubt doppelte Werte.
  • Tuple ist eine Sammlung, die geordnet und unveränderlich ist. Erlaubt doppelte Werte.
  • Set ist eine Sammlung, die ungeordnet, unveränderlich* und nicht indiziert ist. Keine doppelten Werte.
  • Dictionary ist eine Sammlung, die geordnet** und veränderbar ist. Keine doppelten Schlüssel.

*Set- Elemente können nicht geändert werden, aber man kann Elemente jederzeit entfernen und/oder hinzufügen.

**Ab Python-Version 3.7 sind Dictionaries geordnet. In Python 3.6 und früher sind Dictionaries ungeordnet.

Bei der Auswahl eines Sammlungstyps ist es hilfreich, die Eigenschaften dieses Typs zu verstehen. Die Wahl des richtigen Typs für einen bestimmten Datensatz kann bedeuten, dass die Bedeutung erhalten bleibt, und es kann eine Steigerung der Effizienz oder Sicherheit bedeuten.

Listen werden mit eckigen Klammern erstellt:

# Erstellung einer Liste:

meineListe = ["Apfel", "Zwetschge", "Birne"]
print(meineListe)

Kopieren von Listen

Man kann Listen nicht kopieren indem man liste2 = liste1 eingibt, da liste2 nur ein Verweis auf liste1 ist und Änderungen in liste1 dadurch automatisch auch in liste2 vorgenommen werden.

Es gibt jedoch Möglichkeiten eine Kopie zu erstellen. Eine Möglichkeit ist die Verwendung der integrierten Listen-Methode copy().

Erstellen einer Listenkopie mit der copy()Methode:

meineListe = ["Apfel", "Zwetschge", "Birne"]
listenKopie = meineListe.copy()
print(listenKopie)

Eine weitere Möglichkeit eine Kopie zu erstellen, ist die Verwendung der integrierten Methode list().

Erstellen Sie eine Kopie einer Liste mit der list()Methode:

meineListe = ["Apfel", "Zwetschge", "Birne"]
listenKopie = list(meineListe)
print(listenKopie)

Aufgabe

Baue o.g. Codes nach und kombiniere diese mit den Lektionen aus vorhergegangenen Unterrichtsblöcken.

Verbinden & Verketten von Listen

Es gibt mehrere Möglichkeiten, zwei oder mehr Listen in Python zu verbinden oder zu verketten.

Eine der einfachsten Möglichkeiten ist die Verwendung des + Operators. Es folgt ein Beispiel zum Zusammenführen von zwei Listen:

liste1 = ["a", "b", "c"]
liste2 = [1, 2, 3]

liste3 = liste1 + liste2
print(liste3)

Eine andere Möglichkeit zwei Listen zu verbinden besteht darin, alle Elemente aus Liste2 nacheinander an Liste1 anzuhängen:

# Liste2 an Liste1 mit einer Schleife anhängen:

liste1 = ["a", "b", "c"]
liste2 = [1, 2, 3]

for x in liste2:
  liste1.append(x)

print(liste1)

Ebenfalls besteht die Möglichkeit, die extend() Methode zu verwenden, deren Zweck darin besteht, Elemente von einer Liste zu einer anderen Liste hinzuzufügen:

# Verwendung der extend() Methode, um liste2 am Ende von liste1 hinzuzufügen:

liste1 = ["a", "b", "c"]
liste2 = [1, 2, 3]

liste1.extend(liste2)
print(liste1)

Aufgabe

Baue o.g. Code nach und ergänze diese mit den erlernten Methoden um eine weiteren Liste mit 3 Früchten und um eine Kopie von liste1.

Listen Methoden

Python verfügt über eine Reihe integrierter Methoden, die man für Listen verwenden kann.

MethodeBeschreibung
append()Ergänzt die Liste am Ende um ein weiteres Element
clear()Entfernt alle Elemente aus der Liste
copy()Gibt eine Kopie der Liste aus
count()Gibt die Anzahl der Elemente mit dem angegebenen Wert zurück
extend()Fügt die Elemente einer Liste (oder einer Iterablen) am Ende der aktuellen Liste hinzu
index()Gibt den Index des ersten Elements mit dem angegebenen Wert zurück
insert()Fügt ein Element an der angegebenen Position hinzu
pop()Entfernt das Element an der angegebenen Position
remove()Entfernt das Element mit dem angegebenen Wert
reverse()Kehrt die Anordnung der Liste um
sort()Sortiert die Liste

Machinelle Lernanwendung zur Bilderkennung

Zielanwendung

  • Das Programm soll lernen, Bilder von Hunden und anderen Tieren zu unterscheiden.
  • Benötigt wird ein binärer Klassikfikator (Klassifikatoren, die in zwei Gruppen sortieren)
  • Perzeptron (Übliches Werkzeug, um so einen Klassifikator zu bauen)

Was ist ein Perzeptron?

Ein Perzeptron ist die Entwicklung Basiert auf der Matehmatischen Nachbildung eines Neurons: des McCulloch-Pitts Neuron

Biologisches Neuron mit seiner Funktion

Verschiedene mathematische Nachbildungen des McCulloch-Pitts-Neurons

Eingangssignale

Als Eingangssignale haben wir bei der Bilderkennung Bilder von Hunden und anderen Tieren. Da wir Bilder im Code jedoch nicht verarbeiten können, müssen wir diese zuerst konvertieren.

Die Variablen (sog. „Feature“ z. B. Größe, Farbe, Anzahl der Beine) werden als Eingangssignale x1, x2, … xm in das Perzeptron gegeben.

beine = 4
groesse = 35.6
breite = 34.2
farbe = 'Beige'
label = 'Hund'

Binärer Klassifikator

Aufgabe

In welche Kategorie des maschinellen Lernens fällt der „Klassifikator“?

Mit Mengen arbeiten & Trainingsdaten

Zunächst werden Beispieldaten benötigt, die bereits gelabelt sind.

In Python gibt es mehrere Datentypen zum speichern von Mengen:

  • Liste ist eine Sammlung, die geordnet und veränderbar ist. Erlaubt doppelte Werte.
  • Tuple ist eine Sammlung, die geordnet und unveränderlich ist. Erlaubt doppelte Werte.
  • Set ist eine Sammlung, die ungeordnet, unveränderlich* und nicht indiziert ist. Keine doppelten Werte.
  • Dictionary ist eine Sammlung, die geordnet** und veränderbar ist. Keine doppelten Schlüssel.

*Set- Elemente können nicht geändert werden, aber man kann Elemente jederzeit entfernen und/oder hinzufügen.

**Ab Python-Version 3.7 sind Dictionaries geordnet. In Python 3.6 und früher sind Dictionaries ungeordnet.

# Menge als Set
feature = {4, 35.6, 34.2, "Beige", "Hund"}

# Menge als Tupel
feature = (4, 35.6, 34.2, "Beige", "Hund")

# Menge als Liste
feature = [4, 35.6, 34.2, "Beige", "Hund"]

# Menge als Dictionary
feature = {
 'beine': 4,
 'groesse': 35.6,
 'breite': 32.2,
 'farbe': "Braun",
 'label': "Hund"
}

Aufgabe

  • Gib einen Wert aus der Liste, dem Set, dem Tupel und dem Dictionary aus.
  • Diskutiere in der Klasse, welcher Mengendatentyp für unseren Anwendungsfall am besten geeignet ist. Bedenke, dass der Code schlank bleiben soll.

Lösung

Aufgabe

Gib einen Sammelwert aus o.g. Menge aus und anschließend einen Einzelwert.

Aufgabe

Erstelle ein Dictionary mit Deinen Lieblingsfilmen / Lieblingsspielen / Lieblingsbüchern und versuche die einzelnen Werte in Listen zu speichern.