Einführung
Das cross_decomposition-Modul in scikit-learn enthält überwachte Schätzer zur Dimensionsreduzierung und Regression, insbesondere für Partial Least Squares (PLS)-Algorithmen. Diese Algorithmen finden die grundlegende Beziehung zwischen zwei Matrizen, indem sie diese in einen Unterraum niedriger Dimension projizieren, sodass die Kovarianz zwischen den transformierten Matrizen maximal ist.
In diesem Lab werden wir die verschiedenen Cross-Decomposition-Algorithmen von scikit-learn erkunden und lernen, wie wir sie für Dimensionsreduzierung und Regressionsaufgaben verwenden.
Tipps für die VM
Nachdem der VM-Start abgeschlossen ist, klicken Sie in der oberen linken Ecke, um zur Registerkarte Notebook zu wechseln und Jupyter Notebook für die Übung zu nutzen.
Manchmal müssen Sie einige Sekunden warten, bis Jupyter Notebook vollständig geladen ist. Die Validierung von Vorgängen kann aufgrund der Einschränkungen von Jupyter Notebook nicht automatisiert werden.
Wenn Sie bei der Lernphase Probleme haben, können Sie Labby gerne fragen. Geben Sie nach der Sitzung Feedback, und wir werden das Problem für Sie prompt beheben.
Importieren der erforderlichen Bibliotheken
Lassen Sie uns beginnen, indem wir die erforderlichen Bibliotheken für dieses Lab importieren.
import numpy as np
from sklearn.cross_decomposition import PLSRegression, PLSCanonical, CCA, PLSSVD
Laden des Datensatzes
Als nächstes laden wir einen Beispiel-Datensatz, um die Cross-Decomposition-Algorithmen zu demonstrieren. Aus Gründen der Einfachheit erstellen wir zwei Matrizen X und Y mit zufälligen Werten.
np.random.seed(0)
X = np.random.random((100, 5))
Y = np.random.random((100, 3))
PLSRegression
Anpassen des PLSRegression-Modells
Wir beginnen mit dem PLSRegression-Algorithmus, der eine Form der regularisierten linearen Regression ist. Wir werden das Modell an unsere Daten anpassen.
pls = PLSRegression(n_components=2)
pls.fit(X, Y)
Transformation der Daten
Wir können die ursprünglichen Daten mit dem angepassten Modell transformieren. Die transformierten Daten werden eine reduzierte Dimension haben.
X_transformed = pls.transform(X)
Y_transformed = pls.transform(Y)
PLSCanonical
Anpassen des PLSCanonical-Modells
Als nächstes verwenden wir den PLSCanonical-Algorithmus, der die kanonische Korrelation zwischen zwei Matrizen findet. Dieser Algorithmus ist nützlich, wenn es Multikollinearität zwischen den Merkmalen gibt.
plsc = PLSCanonical(n_components=2)
plsc.fit(X, Y)
Transformation der Daten
Wir können die ursprünglichen Daten mit dem angepassten Modell transformieren. Die transformierten Daten werden eine reduzierte Dimension haben.
X_transformed = plsc.transform(X)
Y_transformed = plsc.transform(Y)
CCA
Anpassen des CCA-Modells
Der CCA-Algorithmus ist ein spezieller Fall von PLS und steht für Canonical Correlation Analysis. Er findet die Korrelation zwischen zwei Mengen von Variablen.
cca = CCA(n_components=2)
cca.fit(X, Y)
Transformation der Daten
Wir können die ursprünglichen Daten mit dem angepassten Modell transformieren. Die transformierten Daten werden eine reduzierte Dimension haben.
X_transformed = cca.transform(X)
Y_transformed = cca.transform(Y)
PLSSVD
Anpassen des PLSSVD-Modells
Der PLSSVD-Algorithmus ist eine vereinfachte Version von PLSCanonical, der die Singulärwertzerlegung (SVD) der Kreuzkovarianzmatrix nur einmal berechnet. Dieser Algorithmus ist nützlich, wenn die Anzahl der Komponenten auf eins begrenzt ist.
plssvd = PLSSVD(n_components=1)
plssvd.fit(X, Y)
Transformation der Daten
Wir können die ursprünglichen Daten mit dem angepassten Modell transformieren. Die transformierten Daten werden eine reduzierte Dimension haben.
X_transformed = plssvd.transform(X)
Y_transformed = plssvd.transform(Y)
Zusammenfassung
In diesem Lab haben wir die von scikit-learn bereitgestellten Kreuzzerlegungsmethoden untersucht. Wir haben uns mit PLSRegression, PLSCanonical, CCA und PLSSVD vertraut gemacht. Wir haben auch gesehen, wie man diese Modelle an die Daten anpasst und die Daten in eine Darstellung mit geringerer Dimension transformiert. Diese Algorithmen sind nützlich für die Dimensionsreduzierung und Regressionsaufgaben, insbesondere wenn es Multikollinearität zwischen den Merkmalen gibt oder wenn die Anzahl der Variablen größer ist als die Anzahl der Stichproben.