Utfordring: Klassifisering av uatskillelige data
Du vil bruke følgende datasett med to funksjoner:
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 kjører koden nedenfor og ser på det resulterende spredningsdiagrammet, vil du se at datasettet ikke er lineært separerbart:
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()
Bruk av kryssvalidering for å evaluere en enkel logistisk regresjon på dette datasettet:
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 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 tilbest_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.
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 variabelenpipe. - Opprett en ordbok
param_gridmed verdiene[0.01, 0.1, 1, 10, 100]for hyperparameterenC. - Initialiser og tren et
GridSearchCV-objekt og lagre det trente objektet i variabelengrid_cv.
Løsning
Takk for tilbakemeldingene dine!
single
Spør AI
Spør AI
Spør om hva du vil, eller prøv ett av de foreslåtte spørsmålene for å starte chatten vår
Fantastisk!
Completion rate forbedret til 3.33
Utfordring: Klassifisering av uatskillelige data
Sveip for å vise menyen
Du vil bruke følgende datasett med to funksjoner:
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 kjører koden nedenfor og ser på det resulterende spredningsdiagrammet, vil du se at datasettet ikke er lineært separerbart:
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()
Bruk av kryssvalidering for å evaluere en enkel logistisk regresjon på dette datasettet:
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 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 tilbest_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.
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 variabelenpipe. - Opprett en ordbok
param_gridmed verdiene[0.01, 0.1, 1, 10, 100]for hyperparameterenC. - Initialiser og tren et
GridSearchCV-objekt og lagre det trente objektet i variabelengrid_cv.
Løsning
Takk for tilbakemeldingene dine!
single