Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Oppiskele Haaste: Erottamattoman Datan Luokittelu | Logistinen Regressio
Luokittelu Pythonilla

bookHaaste: Erottamattoman Datan Luokittelu

Käytät seuraavaa aineistoa, jossa on kaksi ominaisuutta:

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

Jos suoritat alla olevan koodin ja tarkastelet tuloksena saatua hajontakuviota, huomaat, että aineisto ei ole lineaarisesti eroteltavissa:

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

Käytetään ristivalidointia arvioimaan yksinkertaista logistista regressiota tällä datalla:

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

Kuten huomaat, tavallinen logistinen regressio ei sovellu tähän tehtävään. Polynomiregression käyttö voi parantaa mallin suorituskykyä. Lisäksi GridSearchCV:n hyödyntäminen mahdollistaa optimaalisen C-parametrin löytämisen paremman tarkkuuden saavuttamiseksi.

Tässä tehtävässä käytetään myös Pipeline-luokkaa. Voit ajatella sitä esikäsittelyvaiheiden jonomaisena sarjana. Sen .fit_transform()-metodi soveltaa peräkkäin .fit_transform()-toimintoa jokaisessa putkiston vaiheessa.

Tehtävä

Swipe to start coding

Sinulle on annettu aineisto, joka on kuvattu DataFrame-muodossa muuttujassa df.

  • Luo putki (pipeline), joka sisältää muuttujan X toisen asteen polynomiset piirteet ja skaalaa ne. Tallenna muodostettu putki muuttujaan pipe.
  • Luo param_grid-sanakirja, jossa [0.01, 0.1, 1, 10, 100]-hyperparametrin arvoina ovat C.
  • Alusta ja kouluta GridSearchCV-olio ja tallenna koulutettu olio muuttujaan grid_cv.

Ratkaisu

Oliko kaikki selvää?

Miten voimme parantaa sitä?

Kiitos palautteestasi!

Osio 2. Luku 6
single

single

Kysy tekoälyä

expand

Kysy tekoälyä

ChatGPT

Kysy mitä tahansa tai kokeile jotakin ehdotetuista kysymyksistä aloittaaksesi keskustelumme

close

Awesome!

Completion rate improved to 4.17

bookHaaste: Erottamattoman Datan Luokittelu

Pyyhkäise näyttääksesi valikon

Käytät seuraavaa aineistoa, jossa on kaksi ominaisuutta:

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

Jos suoritat alla olevan koodin ja tarkastelet tuloksena saatua hajontakuviota, huomaat, että aineisto ei ole lineaarisesti eroteltavissa:

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

Käytetään ristivalidointia arvioimaan yksinkertaista logistista regressiota tällä datalla:

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

Kuten huomaat, tavallinen logistinen regressio ei sovellu tähän tehtävään. Polynomiregression käyttö voi parantaa mallin suorituskykyä. Lisäksi GridSearchCV:n hyödyntäminen mahdollistaa optimaalisen C-parametrin löytämisen paremman tarkkuuden saavuttamiseksi.

Tässä tehtävässä käytetään myös Pipeline-luokkaa. Voit ajatella sitä esikäsittelyvaiheiden jonomaisena sarjana. Sen .fit_transform()-metodi soveltaa peräkkäin .fit_transform()-toimintoa jokaisessa putkiston vaiheessa.

Tehtävä

Swipe to start coding

Sinulle on annettu aineisto, joka on kuvattu DataFrame-muodossa muuttujassa df.

  • Luo putki (pipeline), joka sisältää muuttujan X toisen asteen polynomiset piirteet ja skaalaa ne. Tallenna muodostettu putki muuttujaan pipe.
  • Luo param_grid-sanakirja, jossa [0.01, 0.1, 1, 10, 100]-hyperparametrin arvoina ovat C.
  • Alusta ja kouluta GridSearchCV-olio ja tallenna koulutettu olio muuttujaan grid_cv.

Ratkaisu

Switch to desktopVaihda työpöytään todellista harjoitusta vartenJatka siitä, missä olet käyttämällä jotakin alla olevista vaihtoehdoista
Oliko kaikki selvää?

Miten voimme parantaa sitä?

Kiitos palautteestasi!

Osio 2. Luku 6
single

single

some-alt