Feature-Selektion mit Scikit-Learn

Machine LearningMachine LearningBeginner
Jetzt üben

This tutorial is from open-source community. Access the source code

💡 Dieser Artikel wurde von AI-Assistenten übersetzt. Um die englische Version anzuzeigen, können Sie hier klicken

Einführung

Die Feature-Selektion ist ein wichtiger Schritt im maschinellen Lernen. Dabei wird die Auswahl der relevantesten Merkmale aus einem Datensatz vorgenommen, um die Genauigkeit und Leistung des Modells zu verbessern. Im Modul sklearn.feature_selection von scikit-learn werden verschiedene Methoden zur Feature-Selektion und zur Dimensionsreduzierung bereitgestellt.

In diesem Lab werden Sie durch den Prozess der Feature-Selektion mit scikit-learn geführt. Wir werden Techniken wie das Entfernen von Merkmalen mit geringer Varianz, die einvariate Feature-Selektion, die rekursive Feature-Eliminierung und die Feature-Selektion mit SelectFromModel behandeln.

Tipps für die VM

Nachdem der Start der VM 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 ab, und wir werden das Problem für Sie prompt beheben.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL sklearn(("Sklearn")) -.-> sklearn/DataPreprocessingandFeatureEngineeringGroup(["Data Preprocessing and Feature Engineering"]) sklearn(("Sklearn")) -.-> sklearn/UtilitiesandDatasetsGroup(["Utilities and Datasets"]) ml(("Machine Learning")) -.-> ml/FrameworkandSoftwareGroup(["Framework and Software"]) sklearn(("Sklearn")) -.-> sklearn/CoreModelsandAlgorithmsGroup(["Core Models and Algorithms"]) sklearn/CoreModelsandAlgorithmsGroup -.-> sklearn/ensemble("Ensemble Methods") sklearn/CoreModelsandAlgorithmsGroup -.-> sklearn/svm("Support Vector Machines") sklearn/DataPreprocessingandFeatureEngineeringGroup -.-> sklearn/feature_selection("Feature Selection") sklearn/UtilitiesandDatasetsGroup -.-> sklearn/datasets("Datasets") ml/FrameworkandSoftwareGroup -.-> ml/sklearn("scikit-learn") subgraph Lab Skills sklearn/ensemble -.-> lab-71110{{"Feature-Selektion mit Scikit-Learn"}} sklearn/svm -.-> lab-71110{{"Feature-Selektion mit Scikit-Learn"}} sklearn/feature_selection -.-> lab-71110{{"Feature-Selektion mit Scikit-Learn"}} sklearn/datasets -.-> lab-71110{{"Feature-Selektion mit Scikit-Learn"}} ml/sklearn -.-> lab-71110{{"Feature-Selektion mit Scikit-Learn"}} end

Entfernen von Merkmalen mit geringer Varianz

Die Klasse VarianceThreshold in scikit-learn kann verwendet werden, um Merkmale mit geringer Varianz zu entfernen. Merkmale mit geringer Varianz liefern dem Modell typischerweise nicht viel Information. Wir werden demonstrieren, wie VarianceThreshold verwendet wird, um Null-Varianz-Merkmale zu entfernen.

from sklearn.feature_selection import VarianceThreshold

X = [[0, 0, 1], [0, 1, 0], [1, 0, 0], [0, 1, 1], [0, 1, 0], [0, 1, 1]]

## Initialisiere VarianceThreshold mit einem Schwellenwert von 80% Variabilität
sel = VarianceThreshold(threshold=(.8 * (1 -.8)))

## Wähle Merkmale mit hoher Variabilität
X_selected = sel.fit_transform(X)

print("Ursprüngliche X-Shape:", X.shape)
print("X mit ausgewählten Merkmalen Shape:", X_selected.shape)
print("Ausgewählte Merkmale:", sel.get_support(indices=True))

Dieser Codeausschnitt demonstriert, wie VarianceThreshold verwendet wird, um Null-Varianz-Merkmale aus einem Datensatz zu entfernen. Die Ausgabe zeigt die ursprüngliche Form des Datensatzes und die Form nach der Auswahl von Merkmalen mit hoher Variabilität.

Einvariate Feature-Selektion

Die einvariable Feature-Selektion funktioniert, indem die besten Merkmale auf der Grundlage einvarianter statistischer Tests ausgewählt werden. In scikit-learn gibt es mehrere Klassen, die die einvariable Feature-Selektion implementieren:

  • SelectKBest: Wählt die k besten Merkmale mit den höchsten Bewertungen aus
  • SelectPercentile: Wählt einen benutzerdefinierten Prozentsatz der Merkmale mit den höchsten Bewertungen aus
  • SelectFpr: Wählt Merkmale auf der Grundlage der falschen Positivrate
  • SelectFdr: Wählt Merkmale auf der Grundlage der falschen Entdeckungsrate
  • SelectFwe: Wählt Merkmale auf der Grundlage des familiären Fehlers
  • GenericUnivariateSelect: Ermöglicht die Auswahl mit einer konfigurierbaren Strategie

Hier ist ein Beispiel für die Verwendung von SelectKBest, um die zwei besten Merkmale aus dem Iris-Datensatz auszuwählen:

from sklearn.datasets import load_iris
from sklearn.feature_selection import SelectKBest
from sklearn.feature_selection import f_classif

## Lade den Iris-Datensatz
X, y = load_iris(return_X_y=True)

## Initialisiere SelectKBest mit der Bewertungsfunktion f_classif und k=2
selector = SelectKBest(f_classif, k=2)

## Wähle die besten Merkmale
X_selected = selector.fit_transform(X, y)

print("Ursprüngliche X-Shape:", X.shape)
print("X mit ausgewählten Merkmalen Shape:", X_selected.shape)
print("Ausgewählte Merkmale:", selector.get_support(indices=True))

In diesem Beispiel verwenden wir die Bewertungsfunktion f_classif und wählen die zwei besten Merkmale aus dem Iris-Datensatz aus. Die Ausgabe zeigt die ursprüngliche Form des Datensatzes und die Form nach der Auswahl der besten Merkmale.

Rekursive Feature-Eliminierung

Die rekursive Feature-Eliminierung (RFE) ist eine Feature-Selektionsmethode, die rekursiv immer kleinere Mengen von Merkmalen betrachtet, um die wichtigsten zu wählen. Sie funktioniert, indem ein externer Schätzer mit Gewichten für die Merkmale trainiert und die am wenigsten wichtigen Merkmale abgeschnitten werden.

from sklearn.svm import SVC
from sklearn.datasets import load_iris
from sklearn.feature_selection import RFE

## Lade den Iris-Datensatz
X, y = load_iris(return_X_y=True)

## Initialisiere SVC als externen Schätzer
estimator = SVC(kernel="linear")

## Initialisiere RFE mit dem externen Schätzer und wähle 2 Merkmale
selector = RFE(estimator, n_features_to_select=2)

## Wähle die besten Merkmale
X_selected = selector.fit_transform(X, y)

print("Ursprüngliche X-Shape:", X.shape)
print("X mit ausgewählten Merkmalen Shape:", X_selected.shape)
print("Ausgewählte Merkmale:", selector.get_support(indices=True))

In diesem Beispiel verwenden wir einen Support Vector Classifier (SVC) als externen Schätzer und wählen die zwei besten Merkmale aus dem Iris-Datensatz aus. Die Ausgabe zeigt die ursprüngliche Form des Datensatzes und die Form nach der Auswahl der besten Merkmale.

Feature-Selektion mit SelectFromModel

Die Klasse SelectFromModel ist ein Meta-Transformer, der mit jedem Schätzer verwendet werden kann, der jeder Eigenschaft eine Wichtigkeit zuweist. Es wählt Merkmale aufgrund ihrer Wichtigkeit aus und entfernt Merkmale, die unter einem bestimmten Schwellenwert liegen.

from sklearn.ensemble import RandomForestClassifier
from sklearn.datasets import load_iris
from sklearn.feature_selection import SelectFromModel

## Lade den Iris-Datensatz
X, y = load_iris(return_X_y=True)

## Initialisiere RandomForestClassifier als Schätzer
estimator = RandomForestClassifier()

## Initialisiere SelectFromModel mit dem Schätzer und dem Schwellenwert "mean"
selector = SelectFromModel(estimator, threshold="mean")

## Wähle die besten Merkmale
X_selected = selector.fit_transform(X, y)

print("Ursprüngliche X-Shape:", X.shape)
print("X mit ausgewählten Merkmalen Shape:", X_selected.shape)
print("Ausgewählte Merkmale:", selector.get_support(indices=True))

In diesem Beispiel verwenden wir einen Random Forest Classifier als Schätzer und wählen Merkmale aus, deren Wichtigkeit größer als die durchschnittliche Wichtigkeit ist. Die Ausgabe zeigt die ursprüngliche Form des Datensatzes und die Form nach der Auswahl der besten Merkmale.

Zusammenfassung

Die Feature-Selektion ist ein essentieller Schritt bei der maschinellen Lernung, um die Genauigkeit und Leistung von Modellen zu verbessern. In diesem Lab haben wir verschiedene Techniken behandelt, wie das Entfernen von Merkmalen mit geringer Varianz, die einvariable Feature-Selektion, die rekursive Feature-Eliminierung und die Feature-Selektion mit SelectFromModel. Diese Techniken helfen dabei, die am relevantestenen Merkmale auszuwählen und die Dimensionalität des Datensatzes zu reduzieren, was zu einer verbesserten Modellleistung führt.