Udfordring: Klassificering af Uadskillelige Data
Du vil bruge følgende datasæt med to funktioner:
1234import 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())
Hvis du kører koden nedenfor og ser på det resulterende spredningsdiagram, vil du se, at datasættet ikke er lineært adskilleligt:
123456import 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()
Lad os anvende krydsgodkendelse til at evaluere en simpel logistisk regression på dette datasæt:
123456789101112131415161718import 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}')
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.
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 variablenpipe. - Opret en ordbog
param_gridmed værdierne[0.01, 0.1, 1, 10, 100]for hyperparameterenC. - Initialiser og træn et
GridSearchCV-objekt, og gem det trænede objekt i variablengrid_cv.
Løsning
Tak for dine kommentarer!
single
Spørg AI
Spørg AI
Spørg om hvad som helst eller prøv et af de foreslåede spørgsmål for at starte vores chat
Awesome!
Completion rate improved to 4.17
Udfordring: Klassificering af Uadskillelige Data
Stryg for at vise menuen
Du vil bruge følgende datasæt med to funktioner:
1234import 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())
Hvis du kører koden nedenfor og ser på det resulterende spredningsdiagram, vil du se, at datasættet ikke er lineært adskilleligt:
123456import 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()
Lad os anvende krydsgodkendelse til at evaluere en simpel logistisk regression på dette datasæt:
123456789101112131415161718import 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}')
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.
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 variablenpipe. - Opret en ordbog
param_gridmed værdierne[0.01, 0.1, 1, 10, 100]for hyperparameterenC. - Initialiser og træn et
GridSearchCV-objekt, og gem det trænede objekt i variablengrid_cv.
Løsning
Tak for dine kommentarer!
single