Die ersten Schritte in Scikit-learn (sklearn)

3 min read

Scikit-learn (sklearn)

Dieser Artikel ist der freien Software-Bibliothek Scikit-learn gewidmet. Unsere Aufgabe ist es, zu erklären, wie diese Bibliothek aus praktischer Hinsicht verwendet werden kann. Darüber hinaus versuchen wir, Scikit-learn etwas ausführlicher darzustellen, um Ihnen die Möglichkeit geben, sich sogar etwas zu merken. Tatsächlich ist dies ein Spickzettel für die Lernenden, in dem alle Schritte des Lernprozesses dargestellt sind: Laden, Vorbearbeitung, Training und Testen der Daten, Erstellen des eigenen Modells mithilfe des überwachten und unüberwachten Lernens, Anpassen des Modells in die Vorhersage und schließlich die Bewertung der Leistung des Modells.

Wie bereits erwähnt ist Scikit-learn eine allgemeine Open-Source-Bibliothek für die Datenanalyse in Python. Es basiert auf anderen numerischen und wissenschaftlichen Python-Bibliotheken: NumPy, SciPy und Matplotlib und enthält eine Reihe von Implementierungen für verschiedene gängige Klassifikation-, Regressions- und Clustering-Algorithmen des maschinellen Lernens, darunter Support-Vektor-Maschinen, Random Forest, Gradient Boosting, k-means und DBSCAN.

Die Geschichte des Scikit-learns

Scikit-learn startete 2007 als scikits.learn,  ein Google Summer of Code-Projekt von David Cournapeau.

Etwas später trat Matthieu Brucher dem Projekt bei und begann, es im Rahmen seiner Diplomarbeit zu nutzen. Die nächste Phase in der Entwicklung des Scikit-learn ist mit INRIA, dem Nationalen Forschungsinstitut für Informatik und Automatisierung (Frankreich) verbunden, das 2010 die Führung des Projekts übernahm. Die erste öffentliche Version (v0.1 beta) erschien Ende Januar 2010. Seit 2018 wird Scikit-learn aktiv weiterentwickelt.

Im Projekt sind derzeit mehr als 30 aktive Mitarbeiter beteiligt. Seine Hauptsponsoren sind INRIA, Google, Tinyclues und der Python Software Foundation.

Welche Voraussetzungen sind für den Einsatz der Sklearn-Bibliothek erforderlich?

Da diese Bibliothek auf SciPy (Scientific Python) aufgebaut ist, ist es notwendig, es als allererstes vor der Verwendung von Scikit-learn zu installieren. Dieser Stapel schließt folgendes ein:

  • NumPy: Eine Programmbibliothek, die eine einfache Handhabung mit generell großen mehrdimensionalen Arrays ermöglicht
  • SciPy: Eine Phyton-basierte Open-Source-Bibliothek, die hauptsächlich für wissenschaftliches Rechnen und Visualisierung verwendet wird
  • Matplotlib: Eine umfassende 2D/3D-Plotting-Bibliothek
  • IPython (Interactive Python): ein Kommandozeileninterpreter zum interaktiven Arbeiten mit Phyton
  • SymPy: eine PythonBibliothek für symbolisch-mathematische Berechnungen
  • Pandas: eine PythonBibliothek, die Hilfsmittel für die Verwaltung von Daten und deren Analyse anbietet.

Betrachten wir nun einige praktische Umsetzungen, wie sie in den jeweiligen Szenarien eingesetzt werden können.

Der erste Schritt ist das Laden der Daten

Es sollte darauf hingewiesen werden, dass Daten numerisch sein und als NumPy-Arrays oder SciPy-Sparse-Matrizen gespeichert werden müssen. Andere Arten, die in numerische Arrays konvertierbar sind, wie beispielsweise Pandas DataFrame, können auch akzeptiert werden.

>>> import numpy as np
>>> X = np.random.random((10,5))
>>> y = np.array(['M','M','F','F','M','F','M','M','F','F','F'])

Vorbearbeitung der Daten

Standardisierung
>>> from sklearn.preprocessing import StandardScaler
>>> scaler = StandardScaler().fit(X_train)
>>> standardized_X = scaler.transform(X_train)
>>> standardized_X_test = scaler.transform(X_test)
Normalisierung
>>> from sklearn.preprocessing import Normalizer
>>> scaler = Normalizer().fit(X_train)
>>> normalized_X = scaler.transform(X_train)
>>> normalized_X_test = scaler.transform(X_test)
Binarisierung
>>> from sklearn.preprocessing import Binarizer
>>> binarizer = Binarizer(threshold=0.0).fit(X)
>>> binary_X = binarizer.transform(X)
Codierung kategorialer Features
>>> from sklearn.preprocessing import LabelEncoder
>>> enc = LabelEncoder()
>>> y = enc.fit_transform(y)
Imputation fehlender Werte
>>>from sklearn.preprocessing import Imputer
>>>imp = Imputer(missing_values=0, strategy='mean', axis=0)
>>>imp.fit_transform(X_train)
Erstellen der Polynom-Features
>>> from sklearn.preprocessing import PolynomialFeatures
>>> poly = PolynomialFeatures(5)
>>> oly.fit_transform(X)

Trainings- und Testdaten

>>> from sklearn.model_selection import train_test_split
>>> X_train, X_test, y_train, y_test = train_test_split(X,y,random_state=0)

Erstellen des eigenen Modells

Überwachtes Lernen mit einem Estimator 

Lineare Regression
>>> from sklearn.linear_model import LinearRegression
>>> lr = LinearRegression(normalize=True)
Support-Vektor-Maschinen (SVM)
>>> from sklearn.svm import SVC
>>> svc = SVC(kernel='linear')
Naive Bayes
>>> from sklearn.naive_bayes import GaussianNB
>>> gnb = GaussianNB()
KNN/k-nächste-Nachbarn
>>> from sklearn import neighbors
>>> knn = neighbors.KNeighborsClassifier(n_neighbors=5)

Unüberwachtes Lernen mit einem Estimator

Principal Component Analysis (PCA)/Hauptkomponentenanalyse

>>> from sklearn.decomposition import PCA
>>> pca = PCA(n_components=0.95)
k-Means
>>> from sklearn.cluster import KMeans
>>> k_means = KMeans(n_clusters=3, random_state=0)

Modellanpassung

Überwachtes Lernen

>>> lr.fit(X, y)
>>> knn.fit(X_train, y_train)
>>> svc.fit(X_train, y_train)

Unüberwachtes Lernen

>>> k_means.fit(X_train)
>>> pca_model = pca.fit_transform(X_train)

Vorhersage

Überwachtes Lernen mit einem Estimator

>>> y_pred = svc.predict(np.random.random((2,5)))
>>> y_pred = lr.predict(X_test)
>>> y_pred = knn.predict_proba(X_test))

Unüberwachtes Lernen mit einem Estimator

>>> y_pred = k_means.predict(X_test)

Bewertung der Leistung des eigenen Modells

Klassifizierungsmetriken

Genauigkeitswert
>>> knn.score(X_test, y_test)
>>> from sklearn.metrics import accuracy_score
>>> accuracy_score(y_test, y_pred)
Klassifizierungsbericht
>>> from sklearn.metrics import classification_report
>>> print(classification_report(y_test, y_pred)))
Wahrheitsmatrix
>>> from sklearn.metrics import confusion_matrix
>>> print(confusion_matrix(y_test, y_pred)))

Regressionsmetriken

Der mittlere absolute Fehler

>>> from sklearn.metrics import mean_absolute_error
>>> y_true = [3, -0.5, 2])
>>> mean_absolute_error(y_true, y_pred))

Der mittlere quadratische Fehler

>>> from sklearn.metrics import mean_squared_error
>>> mean_squared_error(y_test, y_pred))

Das Bestimmtheitsmaß

>>> from sklearn.metrics import r2_score
>>> r2_score(y_true, y_pred))

Clustering-Metriken

Angepasster Rand-Index

>>> from sklearn.metrics import adjusted_rand_score
>>> adjusted_rand_score(y_true, y_pred))

Homogenität

>>> from sklearn.metrics import homogeneity_score
>>> homogeneity_score(y_true, y_pred))

V-Maß

>>> from sklearn.metrics import v_measure_score
>>> metrics.v_measure_score(y_true, y_pred))

Kreuzvalidierung

>>> print(cross_val_score(knn, X_train, y_train, cv=4))
>>> print(cross_val_score(lr, X, y, cv=2))

Spickzettel zum Scikit-learn-Algorithmus

Hoffentlich war diese Sammlung von Materialien sachkundig und hilfreich und erleichterte Ihnen den Einstieg in Scikit-learn. 

Sollten Sie Fragen zu Scikit-learn haben, so können Sie sich an das Team von AI-United.de per Mail oder Q&A wenden.

Quelle

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.