10. Unterrichtsblock
Python Lambda
Eine Lambda-Funktion ist eine kleine anonyme Funktion. Die Lambda-Funktion kann beliebig viele Argumente beinhalten, aber nur einen Ausdruck haben.
Syntax-Beispiel:
lambda argument1, argument2, argument3, usw : ausdruck
Der Ausdruck wird ausgeführt und das Ergebnis wird zurückgegeben:
Folgendes Beispiel fügt 10 zum Argument a
hinzu und gibt das Ergebnis zurück:
x = lambda a : a + 10
print(x(5))
Lambda-Funktionen können eine beliebige Anzahl von Argumenten annehmen. Hier wird Argument a
mit Argument b
multipliziert und das Ergebnis zurückgegeben:
x = lambda a, b : a * b
print(x(5, 6))
Folgendes Beispiel fasst die Argumente a
, b
und c
zusammen und gibt das Ergebnis zurück:
x = lambda a, b, c : a + b + c
print(x(5, 6, 2))
Warum sollte man die Lambda-Funktionen verwenden?
Die Leistungsfähigkeit von Lambda kommt am besten zur Geltung, wenn man sie als anonyme Funktion innerhalb einer anderen Funktion verwendet.
Angenommen, man hat eine Funktionsdefinition, die ein Argument akzeptiert, und dieses Argument wird mit einer unbekannten Zahl multipliziert:
def meinefunktion(n):
return lambda a : a * n
Beispielhafte Verwendung einer Funktionsdefinition, um eine Lambda-Funktion zu erstellen, die die gesendete Zahl immer verdoppelt bzw. verdreifacht:
def meinefunktion(n):
return lambda a : a * n
verdoppler = meinefunktion(2)
verdreifacher = meinefunktion(3)
print(verdoppler(11))
Man verwendet Lambda-Funktionen, wenn für einen kurzen Zeitraum eine anonyme Funktion erforderlich ist.
Python Mathematik
Python verfügt über eine Reihe integrierter Mathematikfunktionen, darunter ein umfangreiches Mathematikmodul, mit dem Sie mathematische Aufgaben an Zahlen ausführen können.
Integrierte mathematische Funktionen
Die Funktionen min()
und max()
können verwendet werden, um den niedrigsten oder höchsten Wert in einer Iterable zu finden:
x = min(5, 10, 25)
y = max(5, 10, 25)
print(x)
print(y)
Die abs()
Funktion gibt den absoluten (positiven) Wert der angegebenen Zahl zurück:
x = abs(-7.25)
print(x)
Die folgende Funktion gibt den Wert von x hoch y (x y ) zurück: pow(x, y)
# Gibt den Wert 4 hoch 3 zurück (dasselbe wie 4 * 4 * 4)
x = pow(4, 3)
print(x)
Das Mathematikmodul
Python verfügt außerdem über ein integriertes Modul namens math
, das die Liste der mathematischen Funktionen erweitert.
Um es zu verwenden, muss das math
Modul importiert werden
import math
Sobald man das math
Modul importiert hat , kann man mit der Verwendung von Methoden und Konstanten des Moduls beginnen.
Die math.sqrt()
Methode gibt beispielsweise die Quadratwurzel einer Zahl zurück:
import math
x = math.sqrt(64)
print(x)
Die math.ceil()
Methode rundet eine Zahl auf die nächste ganze Zahl auf, und die math.floor()
Methode rundet eine Zahl abwärts auf die nächste ganze Zahl und gibt das Ergebnis zurück:
import math
x = math.ceil(1.4)
y = math.floor(1.4)
print(x) # Ausgabe ist 2
print(y) # Ausgabe ist 1
Die math.pi
Konstante gibt den Wert von PI (3.14…) zurück:
import math
x = math.pi
print(x)
Vollständige Mathematik-Modulreferenz
Auf folgender Seite findet sich eine vollständige Referenz aller Methoden und Konstanten, die zum Mathematikmodul gehören:
https://docs.python.org/3/library/math.html
https://www.w3schools.com/python/module_math.asp
Python Nutzereingaben
Python ermöglicht Benutzereingaben. Das bedeutet, dass man den Benutzer um Eingaben bitten kann. Die Methode unterscheidet sich in Python 3.6 etwas von der in Python 2.7.
- Python 3.6 verwendet die
input()
Methode. - Python 2.7 verwendet die
raw_input()
Methode.
Im folgenden Beispiel wird nach dem Benutzernamen gefragt. Wenn man den Benutzernamen eingegeben hat, wird er auf dem Bildschirm ausgegeben:
# Python 3.6
nutzername = input("Nutzernamen eingeben:")
print("Nutzername ist: " + nutzername)
# Python 2.7
nutzername = raw_input("Nutzernamen eingeben:")
print("Nutzername ist: " + nutzername)
Python stoppt die Ausführung, wenn es um die
input()
Funktion geht, und fährt fort, wenn der Benutzer eine Eingabe gemacht hat.
Aufgabe
Ermittle den Datentyp, der bei Eingabe des Werts „5“ in ein input()
Feld entsteht.
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)
Vortrag aus der letzten Stunde
- Wir benötigen gelabelte Daten
- Die Werten sollen nicht doppelt vorkommen
- Die Werte sollen in einer bestimmten Reihenfolge aufrufbar sein
- Man soll die Werte auch einem bestimmten Schlüssel zuordnen können
- Die Werte müssen Ganzzahlen sein
- Man benötigt eine effiziente Methode, um große Arrays zu verarbeiten
- Wir benötigen eine Matrix (Liste von einer Liste)
- Import von
numpy
- Separieren der Eingabedaten und der Labels
Aktueller Projektfortschritt
Um eine Matritze zu erstellen, generieren wir ein Array von einem Array.
import numpy as np
beine = [4, 4, 4, 4, 2]
groesse = [35.6, 28.4, 55.9, 46.1, 5.2]
breite = [32.2, 18.5, 42.8, 39.3, 4.1]
label = [1, 1, 1, 1, 0]
rohdaten = {
'beine': beine,
'groesse': groesse,
'breite': breite,
'label': label
}
# Einzelne Arrays erstellen
groesse = np.array(rohdaten['groesse'])
# Matrix erstellen
feature = np.array([rohdaten['beine'], rohdaten['groesse'], rohdaten['breite']])
print(feature)
# Lösung vorletzte Aufgabe (Shape-Funktion)
print(feature.shape)
# Lösung letzte Aufgabe (transponieren)
print(feature.T)
# Lösung Hausaufgabe
print(np.mean(feature.T, axis=0))
Große Dagensätze
# Um das Programm zu trainieren werden große Datenmengen benötigt.
import numpy as np
feature = np.array([[4.0, 37.92655435, 23.90101111], # Hund
[4.0, 35.88942857, 22.73639281], # Hund
[4.0, 29.49674574, 21.42168559], # Hund
[4.0, 32.48016326, 21.7340484 ], # Hund
[4.0, 38.00676226, 24.37202837], # Hund
[4.0, 30.73073988, 22.69832608], # Hund
[4.0, 35.93672343, 21.07445241], # Hund
[4.0, 38.65212459, 20.57099727], # Hund
[4.0, 35.52041768, 21.74519457], # Hund
[4.0, 37.69535497, 20.33073640], # Hund
[4.0, 33.00699292, 22.57063861], # Hund
[4.0, 33.73140934, 23.81730782], # Hund
[4.0, 43.85053380, 20.05153803], # Hund
[4.0, 32.95555986, 24.12153986], # Hund
[4.0, 36.38192916, 19.20280266], # Hund
[4.0, 36.54270168, 20.45388966], # Hund
[4.0, 33.08246118, 22.20524015], # Hund
[4.0, 31.76866280, 21.01201139], # Hund
[4.0, 42.24260825, 20.44394610], # Hund
[4.0, 29.04450264, 22.46633771], # Hund
[4.0, 30.04284328, 21.54561621], # Hund
[4.0, 18.95626707, 19.66737753], # Kein Hund
[4.0, 18.60176718, 17.74023009], # Kein Hund
[4.0, 12.85314993, 18.42746953], # Kein Hund
[4.0, 28.62450072, 17.94781944], # Kein Hund
[4.0, 21.00655655, 19.33438286], # Kein Hund
[4.0, 17.33580556, 18.81696459], # Kein Hund
[4.0, 31.17129195, 17.23625014], # Kein Hund
[4.0, 19.36176482, 20.67772798], # Kein Hund
[4.0, 27.26581705, 16.71312863], # Kein Hund
[4.0, 21.19107828, 19.00673617], # Kein Hund
[4.0, 19.08131597, 15.24401994], # Kein Hund
[4.0, 26.69761925, 17.05937466], # Kein Hund
[2.0, 4.44136559 , 3.52432493 ], # Kein Hund
[2.0, 10.26395607, 1.07729281 ], # Kein Hund
[2.0, 7.39058439 , 3.44234423 ], # Kein Hund
[2.0, 4.23565118 , 4.28840232 ], # Kein Hund
[2.0, 3.87875761 , 5.12407692 ], # Kein Hund
[2.0, 15.12959925, 6.26045879 ], # Kein Hund
[0.0, 5.93041263 , 1.70841905 ], # Kein Hund
[0.0, 4.25054779 , 5.01371294 ], # Kein Hund
[0.0, 2.15139117 , 4.16668657 ], # Kein Hund
[0.0, 2.38283228 , 3.83347914 ]]) # Kein Hund
print(feature.shape)
# Erstellen der Label mit der NumPy "Verketten-Funktion" und den NumPy Funktionen "ones" und "zeros"
label = np.concatenate((np.ones(21), np.zeros(22)))
# Indizes auslesen
print(feature[2]) # Ganze Zeile Nr. 3
Aufgabe
- Gib den ersten Wert der zweiten Zeile aus
- Gib alle Werte der ersten Spalte aus und verwende max. 15 Zeichen Code (zzgl.
print()
) - Erstelle den Mittelwert aller Werte der ersten Spalte mit der neu erlernten Methode
- Gib die vorletzte Zeile der Matrix aus
- Gib den Bereich der Zeilen von 15 – 25 mit einem Befehl aus
- Gib jede dritte Zeile der Matrix aus
Visualisierung von Daten
In Python visualisert man Daten mit der Bibliothek Matplotlib
Installation
pip install matplotlib
Import
import matplotlib
Pyplot
Die meisten Matplotlib Anwendungen liegen im pyplot
Unterverzeichnis und werden im Normalfall mit dem plt
Alias imporitert.
import matplotlib.pyplot as plt
import numpy as np
xPunkte = np.array([0, 6])
yPunkte = np.array([0, 250])
plt.plot(xPunkte, yPunkte) # Anweisung zum Plotten
plt.show() # Anweisung zum Zeigen
Aufgabe
- Füge die Feature-Matrix und die Label zusammen, sodass jedes Feature ein Label erhält
- Speichere mittels Indizierung die Daten der Fische in eine neue Matrix „fische“