Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lernen Herausforderung: Klassifizierung Nicht Trennbarer Daten | Logistische Regression
Klassifikation mit Python

book
Herausforderung: Klassifizierung Nicht Trennbarer Daten

In dieser Herausforderung erhalten Sie den folgenden Datensatz:

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())
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

Hier ist sein Plot.

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'])
12345
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'])
copy

Der Datensatz ist sicherlich nicht linear trennbar. Schauen wir uns die Leistung der logistischen Regression an:

import pandas as pd
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)
print(cross_val_score(lr, X, y).mean())
123456789101112
import pandas as pd 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) print(cross_val_score(lr, X, y).mean())
copy

Das Ergebnis ist schrecklich. Reguläre logistische Regression ist für diese Aufgabe nicht geeignet. Ihre Aufgabe ist es zu überprüfen, ob PolynomialFeatures helfen wird. Um den besten C-Parameter zu finden, verwenden Sie die GridSearchCV-Klasse.

In dieser Herausforderung wird die Pipeline verwendet. Sie können es sich als eine Liste von Vorverarbeitungsschritten vorstellen. Die Methode .fit_transform() wendet .fit_transform() nacheinander auf jedes Element an.

Aufgabe

Swipe to start coding

Erstellen Sie ein logistisches Regressionsmodell mit polynomialen Merkmalen und finden Sie den besten C-Parameter mit GridSearchCV

  1. Erstellen Sie eine Pipeline, um eine X_poly-Variable zu erstellen, die die polynomialen Merkmale zweiten Grades von X enthält und skaliert wird.
  2. Erstellen Sie ein param_grid-Dictionary, um dem GridSearchCV mitzuteilen, dass Sie die Werte [0.01, 0.1, 1, 10, 100] eines C-Parameters ausprobieren möchten.
  3. Initialisieren und trainieren Sie ein GridSearchCV-Objekt.

Lösung

import pandas as pd
from sklearn.linear_model import LogisticRegression
from sklearn.preprocessing import StandardScaler, PolynomialFeatures
from sklearn.model_selection import cross_val_score, GridSearchCV
from sklearn.pipeline import Pipeline
# Read the data and assign `X`, `y` variables
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']
# Preprocess the data using `Pipeline`
pipe = Pipeline([('poly', PolynomialFeatures(2, include_bias=False)), # Polynomial Features
('scaler', StandardScaler())]) # Scaling
X_poly = pipe.fit_transform(X)
# Find the best model using `GridSearchCV`
lr = LogisticRegression()
param_grid = {'C': [0.01, 0.1, 1, 10, 100]}
grid_cv = GridSearchCV(lr, param_grid).fit(X_poly, y)
# Print the best score and the best estimator
print(grid_cv.best_score_)
print(grid_cv.best_estimator_)

War alles klar?

Wie können wir es verbessern?

Danke für Ihr Feedback!

Abschnitt 2. Kapitel 6
import pandas as pd
from sklearn.linear_model import LogisticRegression
from sklearn.preprocessing import StandardScaler, PolynomialFeatures
from sklearn.model_selection import cross_val_score, GridSearchCV
from sklearn.pipeline import Pipeline
# Read the data and assign `X`, `y` variables
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']
# Preprocess the data using `Pipeline`
pipe = Pipeline([('poly', PolynomialFeatures(___, include_bias=False)), # Polynomial Features
('scaler', ___())]) # Scaling
X_poly = pipe.fit_transform(X)
# Find the best model using `GridSearchCV`
lr = LogisticRegression()
param_grid = {'C': [___]}
grid_cv = GridSearchCV(lr, param_grid).___(X_poly, y)
# Print the best score and the best estimator
print(grid_cv.best_score_)
print(grid_cv.best_estimator_)

Fragen Sie AI

expand
ChatGPT

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

some-alt