Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lernen Herausforderung: Klassifizierung Untrennbarer Daten | Abschnitt
Grundlagen des Überwachten Lernens

bookHerausforderung: Klassifizierung Untrennbarer Daten

Sie verwenden den folgenden Datensatz mit zwei Merkmalen:

1234
import pandas as pd df = pd.read_csv('https://codefinity-content-media.s3.eu-west-1.amazonaws.com/b71ff7ac-3932-41d2-a4d8-060e24b00129/circles.csv') print(df.head())
copy

Wenn Sie den folgenden Code ausführen und das resultierende Streudiagramm betrachten, erkennen Sie, dass der Datensatz nicht linear trennbar ist:

123456
import pandas as pd import matplotlib.pyplot as plt df = pd.read_csv('https://codefinity-content-media.s3.eu-west-1.amazonaws.com/b71ff7ac-3932-41d2-a4d8-060e24b00129/circles.csv') plt.scatter(df['X1'], df['X2'], c=df['y']) plt.show()
copy

Verwendung von Kreuzvalidierung zur Bewertung einer einfachen logistischen Regression auf diesen Daten:

123456789101112131415161718
import pandas as pd import matplotlib.pyplot as plt from sklearn.preprocessing import StandardScaler from sklearn.linear_model import LogisticRegression from sklearn.model_selection import cross_val_score df = pd.read_csv('https://codefinity-content-media.s3.eu-west-1.amazonaws.com/b71ff7ac-3932-41d2-a4d8-060e24b00129/circles.csv') X = df[['X1', 'X2']] y = df['y'] X = StandardScaler().fit_transform(X) lr = LogisticRegression().fit(X, y) y_pred = lr.predict(X) plt.scatter(df['X1'], df['X2'], c=y_pred) plt.show() print(f'Cross-validation accuracy: {cross_val_score(lr, X, y).mean():.2f}')
copy

Wie Sie sehen, ist die reguläre logistische Regression für diese Aufgabe nicht geeignet. Die Verwendung von polynomialer Regression kann die Modellleistung verbessern. Zusätzlich ermöglicht der Einsatz von GridSearchCV, den optimalen C-Parameter für eine höhere Genauigkeit zu finden.

Konstruktor:

  • GridSearchCV(estimator, param_grid, scoring, cv = 5)
  • estimator — das Modellobjekt;
  • param_grid — Wörterbuch mit den zu durchsuchenden Parameterwerten;
    • scoring — die Metrik zur Bewertung beim Cross-Validation-Score;
  • cv — die Anzahl der Folds (standardmäßig 5);

Methoden:

  • fit(X, y) — Training der Modelle mit X, y;
  • predict(X) — Vorhersage der Klasse für X;
  • score(X, y) — gibt die Genauigkeit für das X, y-Set zurück;

Attribute:

  • best_estimator_ — Objekt des Modells mit dem höchsten Score;
  • best_score_ — der Score des best_estimator_.

In dieser Aufgabe wird auch die Klasse Pipeline verwendet. Sie können sie als Abfolge von Vorverarbeitungsschritten betrachten. Die Methode .fit_transform() wendet .fit_transform() nacheinander auf jeden Schritt in der Pipeline an.

Aufgabe

Swipe to start coding

Ihnen wird ein Datensatz zur Verfügung gestellt, der als DataFrame in der Variablen df beschrieben ist.

  • Erstellen Sie eine Pipeline, die die Polynomfeatures zweiten Grades von X enthält und skaliert wird. Speichern Sie die resultierende Pipeline in der Variablen pipe.
  • Erstellen Sie ein Dictionary param_grid mit den Werten [0.01, 0.1, 1, 10, 100] für den Hyperparameter C.
  • Initialisieren und trainieren Sie ein GridSearchCV-Objekt und speichern Sie das trainierte Objekt in der Variablen grid_cv.

Lösung

War alles klar?

Wie können wir es verbessern?

Danke für Ihr Feedback!

Abschnitt 1. Kapitel 26
single

single

Fragen Sie AI

expand

Fragen Sie AI

ChatGPT

Fragen Sie alles oder probieren Sie eine der vorgeschlagenen Fragen, um unser Gespräch zu beginnen

close

bookHerausforderung: Klassifizierung Untrennbarer Daten

Swipe um das Menü anzuzeigen

Sie verwenden den folgenden Datensatz mit zwei Merkmalen:

1234
import pandas as pd df = pd.read_csv('https://codefinity-content-media.s3.eu-west-1.amazonaws.com/b71ff7ac-3932-41d2-a4d8-060e24b00129/circles.csv') print(df.head())
copy

Wenn Sie den folgenden Code ausführen und das resultierende Streudiagramm betrachten, erkennen Sie, dass der Datensatz nicht linear trennbar ist:

123456
import pandas as pd import matplotlib.pyplot as plt df = pd.read_csv('https://codefinity-content-media.s3.eu-west-1.amazonaws.com/b71ff7ac-3932-41d2-a4d8-060e24b00129/circles.csv') plt.scatter(df['X1'], df['X2'], c=df['y']) plt.show()
copy

Verwendung von Kreuzvalidierung zur Bewertung einer einfachen logistischen Regression auf diesen Daten:

123456789101112131415161718
import pandas as pd import matplotlib.pyplot as plt from sklearn.preprocessing import StandardScaler from sklearn.linear_model import LogisticRegression from sklearn.model_selection import cross_val_score df = pd.read_csv('https://codefinity-content-media.s3.eu-west-1.amazonaws.com/b71ff7ac-3932-41d2-a4d8-060e24b00129/circles.csv') X = df[['X1', 'X2']] y = df['y'] X = StandardScaler().fit_transform(X) lr = LogisticRegression().fit(X, y) y_pred = lr.predict(X) plt.scatter(df['X1'], df['X2'], c=y_pred) plt.show() print(f'Cross-validation accuracy: {cross_val_score(lr, X, y).mean():.2f}')
copy

Wie Sie sehen, ist die reguläre logistische Regression für diese Aufgabe nicht geeignet. Die Verwendung von polynomialer Regression kann die Modellleistung verbessern. Zusätzlich ermöglicht der Einsatz von GridSearchCV, den optimalen C-Parameter für eine höhere Genauigkeit zu finden.

Konstruktor:

  • GridSearchCV(estimator, param_grid, scoring, cv = 5)
  • estimator — das Modellobjekt;
  • param_grid — Wörterbuch mit den zu durchsuchenden Parameterwerten;
    • scoring — die Metrik zur Bewertung beim Cross-Validation-Score;
  • cv — die Anzahl der Folds (standardmäßig 5);

Methoden:

  • fit(X, y) — Training der Modelle mit X, y;
  • predict(X) — Vorhersage der Klasse für X;
  • score(X, y) — gibt die Genauigkeit für das X, y-Set zurück;

Attribute:

  • best_estimator_ — Objekt des Modells mit dem höchsten Score;
  • best_score_ — der Score des best_estimator_.

In dieser Aufgabe wird auch die Klasse Pipeline verwendet. Sie können sie als Abfolge von Vorverarbeitungsschritten betrachten. Die Methode .fit_transform() wendet .fit_transform() nacheinander auf jeden Schritt in der Pipeline an.

Aufgabe

Swipe to start coding

Ihnen wird ein Datensatz zur Verfügung gestellt, der als DataFrame in der Variablen df beschrieben ist.

  • Erstellen Sie eine Pipeline, die die Polynomfeatures zweiten Grades von X enthält und skaliert wird. Speichern Sie die resultierende Pipeline in der Variablen pipe.
  • Erstellen Sie ein Dictionary param_grid mit den Werten [0.01, 0.1, 1, 10, 100] für den Hyperparameter C.
  • Initialisieren und trainieren Sie ein GridSearchCV-Objekt und speichern Sie das trainierte Objekt in der Variablen grid_cv.

Lösung

Switch to desktopWechseln Sie zum Desktop, um in der realen Welt zu übenFahren Sie dort fort, wo Sie sind, indem Sie eine der folgenden Optionen verwenden
War alles klar?

Wie können wir es verbessern?

Danke für Ihr Feedback!

Abschnitt 1. Kapitel 26
single

single

some-alt