Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lære Udfordring: Klassificering af Uadskillelige Data | Logistisk Regression
Klassifikation med Python

bookUdfordring: Klassificering af Uadskillelige Data

Du vil bruge følgende datasæt med to funktioner:

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

Hvis du kører koden nedenfor og ser på det resulterende spredningsdiagram, vil du se, at datasættet ikke er lineært adskilleligt:

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

Lad os anvende krydsgodkendelse til at evaluere en simpel logistisk regression på dette datasæt:

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

Som du kan se, er almindelig logistisk regression ikke egnet til denne opgave. Brug af polynomiel regression kan hjælpe med at forbedre modellens ydeevne. Derudover gør anvendelsen af GridSearchCV det muligt at finde den optimale C-parameter for bedre nøjagtighed.

Denne opgave anvender også klassen Pipeline. Du kan betragte den som en sekvens af forbehandlingsskridt. Dens .fit_transform()-metode anvender sekventielt .fit_transform() på hvert trin i pipelinen.

Opgave

Swipe to start coding

Du har fået et datasæt, der er beskrevet som en DataFrame i variablen df.

  • Opret en pipeline, der indeholder polynomielle features af grad 2 af X, og som bliver skaleret. Gem den resulterende pipeline i variablen pipe.
  • Opret en ordbog param_grid med værdierne [0.01, 0.1, 1, 10, 100] for hyperparameteren C.
  • Initialiser og træn et GridSearchCV-objekt, og gem det trænede objekt i variablen grid_cv.

Løsning

Var alt klart?

Hvordan kan vi forbedre det?

Tak for dine kommentarer!

Sektion 2. Kapitel 6
single

single

Spørg AI

expand

Spørg AI

ChatGPT

Spørg om hvad som helst eller prøv et af de foreslåede spørgsmål for at starte vores chat

close

Awesome!

Completion rate improved to 4.17

bookUdfordring: Klassificering af Uadskillelige Data

Stryg for at vise menuen

Du vil bruge følgende datasæt med to funktioner:

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

Hvis du kører koden nedenfor og ser på det resulterende spredningsdiagram, vil du se, at datasættet ikke er lineært adskilleligt:

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

Lad os anvende krydsgodkendelse til at evaluere en simpel logistisk regression på dette datasæt:

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

Som du kan se, er almindelig logistisk regression ikke egnet til denne opgave. Brug af polynomiel regression kan hjælpe med at forbedre modellens ydeevne. Derudover gør anvendelsen af GridSearchCV det muligt at finde den optimale C-parameter for bedre nøjagtighed.

Denne opgave anvender også klassen Pipeline. Du kan betragte den som en sekvens af forbehandlingsskridt. Dens .fit_transform()-metode anvender sekventielt .fit_transform() på hvert trin i pipelinen.

Opgave

Swipe to start coding

Du har fået et datasæt, der er beskrevet som en DataFrame i variablen df.

  • Opret en pipeline, der indeholder polynomielle features af grad 2 af X, og som bliver skaleret. Gem den resulterende pipeline i variablen pipe.
  • Opret en ordbog param_grid med værdierne [0.01, 0.1, 1, 10, 100] for hyperparameteren C.
  • Initialiser og træn et GridSearchCV-objekt, og gem det trænede objekt i variablen grid_cv.

Løsning

Switch to desktopSkift til skrivebord for at øve i den virkelige verdenFortsæt der, hvor du er, med en af nedenstående muligheder
Var alt klart?

Hvordan kan vi forbedre det?

Tak for dine kommentarer!

Sektion 2. Kapitel 6
single

single

some-alt