Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lære Utfordring: Klassifisering av uatskillelige data | Seksjon
Grunnleggende Overvåket Læring

bookUtfordring: Klassifisering av uatskillelige data

Du vil bruke følgende datasett med to funksjoner:

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 kjører koden nedenfor og ser på det resulterende spredningsdiagrammet, vil du se at datasettet ikke er lineært separerbart:

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

Bruk av kryssvalidering for å evaluere en enkel logistisk regresjon på dette datasettet:

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 vanlig logistisk regresjon ikke egnet for denne oppgaven. Bruk av polynomisk regresjon kan bidra til å forbedre modellens ytelse. I tillegg gir bruk av GridSearchCV deg muligheten til å finne den optimale C-parameteren for bedre nøyaktighet.

Konstruktør:

  • GridSearchCV(estimator, param_grid, scoring, cv = 5)
  • estimator — modellobjektet;
  • param_grid — ordbok med parametere og verdier som skal undersøkes;
  • scoring — metrikken som brukes for kryssvalideringsscore;
  • cv — antall fold (5 som standard);

Metoder:

  • fit(X, y) — trener modellene ved bruk av X, y;
  • predict(X) — predikerer klassen for X;
  • score(X, y) — returnerer nøyaktigheten for X, y-settet;

Attributter:

  • best_estimator_ — objektet til modellen med høyest score;
  • best_score_ — scoren til best_estimator_.

Denne oppgaven bruker også Pipeline-klassen. Du kan se på den som en sekvens av forhåndsprosesseringssteg. Dens .fit_transform()-metode anvender sekvensielt .fit_transform() på hvert steg i pipelinen.

Oppgave

Swipe to start coding

Du har fått et datasett beskrevet som en DataFrame i variabelen df.

  • Opprett en pipeline som inneholder polynomielle trekk av grad 2 for X, skaler disse, og lagre den resulterende pipelinen i variabelen pipe.
  • Opprett en ordbok param_grid med verdiene [0.01, 0.1, 1, 10, 100] for hyperparameteren C.
  • Initialiser og tren et GridSearchCV-objekt og lagre det trente objektet i variabelen grid_cv.

Løsning

Alt var klart?

Hvordan kan vi forbedre det?

Takk for tilbakemeldingene dine!

Seksjon 1. Kapittel 26
single

single

Spør AI

expand

Spør AI

ChatGPT

Spør om hva du vil, eller prøv ett av de foreslåtte spørsmålene for å starte chatten vår

close

bookUtfordring: Klassifisering av uatskillelige data

Sveip for å vise menyen

Du vil bruke følgende datasett med to funksjoner:

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 kjører koden nedenfor og ser på det resulterende spredningsdiagrammet, vil du se at datasettet ikke er lineært separerbart:

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

Bruk av kryssvalidering for å evaluere en enkel logistisk regresjon på dette datasettet:

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 vanlig logistisk regresjon ikke egnet for denne oppgaven. Bruk av polynomisk regresjon kan bidra til å forbedre modellens ytelse. I tillegg gir bruk av GridSearchCV deg muligheten til å finne den optimale C-parameteren for bedre nøyaktighet.

Konstruktør:

  • GridSearchCV(estimator, param_grid, scoring, cv = 5)
  • estimator — modellobjektet;
  • param_grid — ordbok med parametere og verdier som skal undersøkes;
  • scoring — metrikken som brukes for kryssvalideringsscore;
  • cv — antall fold (5 som standard);

Metoder:

  • fit(X, y) — trener modellene ved bruk av X, y;
  • predict(X) — predikerer klassen for X;
  • score(X, y) — returnerer nøyaktigheten for X, y-settet;

Attributter:

  • best_estimator_ — objektet til modellen med høyest score;
  • best_score_ — scoren til best_estimator_.

Denne oppgaven bruker også Pipeline-klassen. Du kan se på den som en sekvens av forhåndsprosesseringssteg. Dens .fit_transform()-metode anvender sekvensielt .fit_transform() på hvert steg i pipelinen.

Oppgave

Swipe to start coding

Du har fått et datasett beskrevet som en DataFrame i variabelen df.

  • Opprett en pipeline som inneholder polynomielle trekk av grad 2 for X, skaler disse, og lagre den resulterende pipelinen i variabelen pipe.
  • Opprett en ordbok param_grid med verdiene [0.01, 0.1, 1, 10, 100] for hyperparameteren C.
  • Initialiser og tren et GridSearchCV-objekt og lagre det trente objektet i variabelen grid_cv.

Løsning

Switch to desktopBytt til skrivebordet for virkelighetspraksisFortsett der du er med et av alternativene nedenfor
Alt var klart?

Hvordan kan vi forbedre det?

Takk for tilbakemeldingene dine!

Seksjon 1. Kapittel 26
single

single

some-alt