Kompilierte Pakete (wie NumPy, TensorFlow oder PyTables) benötigen oft einige Monate, bis sie für eine neue Python-Version verfügbar sind.
Empfehlung: Verwende eine ältere Python-Version (z.B. 3.8 anstatt 3.9) oder eine vorkompilierte Distribution (wie Anaconda)
Installation der wichtigsten Pakete in einer vorhandenen Python-Umgebung:
pip install jupyter numpy pandas matplotlib sklearn tensorflow
IPython = Fortgeschrittene interaktive Python Konsole, beinhaltet u.a. Autovervollständigung
kostenlose online Jupyter Notebooks:
VS Code kann sich mit dem IPython-Kernel verbinden:
In der Befehlspalette von VS Code (via F1) suchen wir nach: Python: Create New Blank Jupyter Notebook
Ausführen von Jupyterlab aus dem Terminal:
jupyter-lab
Code in eine Zelle schreiben, z.B.
import time
time.sleep(3)
1 + 1
dann Shift + Enter drücken
In IPython gibt es nummerierte Eingaben, z.B. [1]
Wenn das letzte Statement in einer Zelle einen Wert ergibt, wird dies als Ausgabe angezeigt
Um dies zu unterdrücken, schließe das letzte Statement mit einem Semikolon ab
Interface-Funktionalität (je nach Notebook-Typ verschieden):
Wir können Dokumentation über die standardisierte Sprache Markdown hinzufügen:
Wechsle von Code auf Markdown und versuche den folgenden Code:
# Heading
- item 1
- item 2
Zelle ausführen (oder verlassen), um das Resultat anzuzeigen, doppelklicken zum erneuten Editieren
Dokumentation zu Funktion / Klasse / Modul / ... in einer Python Konsole anzeigen:
help(str)
(Navigieren durch lange Ausgaben via Enter, Beenden via Q)
Shortcut in IPython / Jupyter:
str?
IPython beinhaltet direkten Zugriff auf viele Terminal-Befehle, z.B. ls
, cd
, ...
Wir können beliebige Terminal-Befehle ausführen, indem wir ein !
davor setzen
Anaconda = Python Distribution, die viele vorkompilierte Pakete und Entwicklerwerkzeuge enthält
Benötigt ~5GB Platz auf der Festplatte
Conda: Environment- und Paketmanager für Anaconda
Download von https://www.anaconda.com/products/individual
Unter Windows sollte der Installationspfad keine Leerzeichen enthalten (Empfehlung: C:/anaconda
) - siehe https://docs.anaconda.com/anaconda/user-guide/faq/#distribution-faq-windows-folder
Optionen während der Installation
zum Starten eines Jupyter Notebooks: Eintrag Jupyter Notebook im Startmenü / Befehl jupyter notebook
im Terminal
Stoppen: Quit im rechten oberen Eck der Ordneransicht (üblicherweise unter http://localhost:8888/tree)
Hauptphasen in CRISP-DM:
Ressource: PDF Version
Phasen:
NumPy: Library zur effizienten Verarbeitung numerischer Daten - basierend auf mehrdimensionalen Arrays
import numpy as np
# create a 2-dimensional array
iris = np.array([[5.1, 3.5, 1.4, 0.2],
[4.9, 3.0, 1.4, 0.2],
[4.7, 3.2, 1.3, 0.2],
[4.6, 3.1, 1.5, 0.2],
[5.0, 3.6, 1.4, 0.2]])
# get the first column
iris[:, 0] # [5.1, 4.9, 4.7, 4.6, 5.0]
# get the second column
iris[:, 1] # [3.5, 3.0, 3.2, 3.1, 3.6]
# get the mean value of the first column
iris[:, 0].mean() # 4.86
# divide the entries in the first column by the entries
# in the second column
iris[:, 0] / iris[:, 1] # [1.46, 1.63, 1.47, 1.48, 1.39]
Pandas: Library für Datenanalyse, basiert auf NumPy
Laden einer Tabelle (DataFrame) aus einer CSV-Datei:
import pandas as pd
titanic = pd.read_csv(
"https://raw.githubusercontent.com/datasciencedojo/datasets/master/titanic.csv",
index_col="PassengerId",
)
Anzeigen von Daten:
titanic
Anzeigen einer Spalte ("Series"):
titanic["Age"]
Zusammenfassung aller numerischen Daten:
titanic.describe()
Zusammenfassung einer Spalte ("Series"):
titanic["Age"].describe()
Durchschnitt einer Spalte ("Series"):
titanic["Age"].mean()
kategorische Daten:
titanic["Pclass"].value_counts()
Abfragen von Daten: Passagiere jünger als 1 Jahr
titanic[titanic["Age"] < 1]
Vorbereiten der Daten für eine Machine Learning Übung:
# column with a numeric value
titanic["Female"] = titanic["Sex"].replace(
{"female": 1, "male": 0}
)
# remove rows with missing age
titanic = titanic.dropna(subset=["Age"])
Pyplot: Interface zum Darstellen von Daten - in matplotlib beinhaltet, aus pandas aufrufbar
direktes Verwenden von pyplot:
import matplotlib.pyplot as plt
plt.hist(
titanic["Pclass"],
bins=[1, 2, 3, 4],
align="left",
)
plt.xticks([1, 2, 3]);
pyplot aus pandas heraus verwenden:
titanic["Pclass"].plot.hist(
bins=[1, 2, 3, 4],
align="left",
xticks=[1, 2, 3],
);
plt.boxplot(
titanic["Age"].dropna(),
whis=(0, 100),
labels=["Age"]
);
plt.hist(
titanic["Age"],
bins=[0, 10, 20, 30, 40, 50, 60, 70, 80],
);
Ãœbung: Voraussagen von Ãœberleben auf der Titanic basierend auf einer linearen Regression
Einfache Algorithmen können trainiert werden, um mit ca 80%-iger Sicherheit vorauszusagen, ob ein Passagier überlebt hat (basierend auf Geschlecht, Passagierklasse, Alter, Anzahl an Geschwistern bzw Eheleuten, Anzahl an Eltern bzw Kindern)
Definieren von Eingangsdaten und vorherzusagenden Ausgangsdaten:
passenger_data = titanic[
["Female", "Pclass", "Age", "SibSp", "Parch"]
]
survived = titanic["Survived"]
"Trainieren" eines Modells:
from sklearn.linear_model import LinearRegression
model = LinearRegression()
model.fit(passenger_data, survived)
Voraussagen eines Wertes für das Überleben von:
new_passenger_data = pd.DataFrame(
[
[1, 1, 40, 0, 0],
[0, 2, 40, 0, 0]
],
columns=["Female", "Pclass", "Age", "SibSp", "Parch"],
)
model.predict(new_passenger_data)
# [0.93, 0.23]