Haaste: Erottamattoman Datan Luokittelu
Tulet käyttämään seuraavaa aineistoa, jossa on kaksi ominaisuutta:
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())
Jos suoritat alla olevan koodin ja tarkastelet tuloksena saatavaa hajontakuviota, huomaat, että aineisto ei ole lineaarisesti eroteltavissa:
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()
Käytetään ristivalidointia yksinkertaisen logistisen regressiomallin arviointiin tällä datalla:
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}')
Kuten huomaat, tavallinen logistinen regressio ei sovellu tähän tehtävään. Polynomiregressio voi parantaa mallin suorituskykyä. Lisäksi GridSearchCV:n käyttö mahdollistaa optimaalisen C-parametrin löytämisen paremman tarkkuuden saavuttamiseksi.
Konstruktori:
GridSearchCV(estimator, param_grid, scoring, cv = 5)estimator— mallin olio;param_grid— sanakirja, jossa on haettavat parametrien arvot;scoring— metriikka, jota käytetään ristiinvalidoinnin pisteytykseen;cv— taitosten määrä (oletuksena 5);
Menetelmät:
fit(X, y)— mallien koulutus käyttäen X, y;predict(X)— luokan ennustaminen X:lle;score(X, y)— palauttaa tarkkuuden X, y -joukolle;
Attribuutit:
best_estimator_— paras pistemäärän saanut mallin olio;best_score_—best_estimator_:n pistemäärä.
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.
Swipe to start coding
Sinulle on annettu tietojoukko, joka on kuvattu DataFrame-muodossa muuttujassa df.
- Luo putki (pipeline), joka sisältää muuttujan
Xtoisen asteen polynomiset piirteet ja skaalaa ne. Tallenna tuloksena syntyvä putki muuttujaanpipe. - Luo
param_grid-sanakirja, jossa[0.01, 0.1, 1, 10, 100]-hyperparametrin arvoina ovatC. - Alusta ja kouluta
GridSearchCV-olio ja tallenna koulutettu olio muuttujaangrid_cv.
Ratkaisu
Kiitos palautteestasi!
single
Kysy tekoälyä
Kysy tekoälyä
Kysy mitä tahansa tai kokeile jotakin ehdotetuista kysymyksistä aloittaaksesi keskustelumme
Mahtavaa!
Completion arvosana parantunut arvoon 3.33
Haaste: Erottamattoman Datan Luokittelu
Pyyhkäise näyttääksesi valikon
Tulet käyttämään seuraavaa aineistoa, jossa on kaksi ominaisuutta:
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())
Jos suoritat alla olevan koodin ja tarkastelet tuloksena saatavaa hajontakuviota, huomaat, että aineisto ei ole lineaarisesti eroteltavissa:
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()
Käytetään ristivalidointia yksinkertaisen logistisen regressiomallin arviointiin tällä datalla:
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}')
Kuten huomaat, tavallinen logistinen regressio ei sovellu tähän tehtävään. Polynomiregressio voi parantaa mallin suorituskykyä. Lisäksi GridSearchCV:n käyttö mahdollistaa optimaalisen C-parametrin löytämisen paremman tarkkuuden saavuttamiseksi.
Konstruktori:
GridSearchCV(estimator, param_grid, scoring, cv = 5)estimator— mallin olio;param_grid— sanakirja, jossa on haettavat parametrien arvot;scoring— metriikka, jota käytetään ristiinvalidoinnin pisteytykseen;cv— taitosten määrä (oletuksena 5);
Menetelmät:
fit(X, y)— mallien koulutus käyttäen X, y;predict(X)— luokan ennustaminen X:lle;score(X, y)— palauttaa tarkkuuden X, y -joukolle;
Attribuutit:
best_estimator_— paras pistemäärän saanut mallin olio;best_score_—best_estimator_:n pistemäärä.
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.
Swipe to start coding
Sinulle on annettu tietojoukko, joka on kuvattu DataFrame-muodossa muuttujassa df.
- Luo putki (pipeline), joka sisältää muuttujan
Xtoisen asteen polynomiset piirteet ja skaalaa ne. Tallenna tuloksena syntyvä putki muuttujaanpipe. - Luo
param_grid-sanakirja, jossa[0.01, 0.1, 1, 10, 100]-hyperparametrin arvoina ovatC. - Alusta ja kouluta
GridSearchCV-olio ja tallenna koulutettu olio muuttujaangrid_cv.
Ratkaisu
Kiitos palautteestasi!
single