Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Impara Sfida: Classificazione di Dati Inseparabili | Sezione
Practice
Projects
Quizzes & Challenges
Quiz
Challenges
/
Fondamenti di Apprendimento Supervisionato

bookSfida: Classificazione di Dati Inseparabili

Utilizzerai il seguente dataset con due caratteristiche:

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

Se esegui il codice qui sotto e osservi il grafico a dispersione risultante, noterai che il dataset non è linearmente separabile:

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

Utilizzo della validazione incrociata per valutare una semplice regressione logistica su questi dati:

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

Come puoi vedere, la Regressione Logistica standard non è adatta a questo compito. L'utilizzo della regressione polinomiale può aiutare a migliorare le prestazioni del modello. Inoltre, l'impiego di GridSearchCV consente di trovare il parametro ottimale C per una maggiore accuratezza.

Costruttore:

  • GridSearchCV(estimator, param_grid, scoring, cv = 5)
  • estimator — oggetto modello;
  • param_grid — dizionario con i valori dei parametri da esplorare;
    • scoring — metrica utilizzata per la valutazione tramite cross-validation;
  • cv — numero di fold (5 di default);

Metodi:

  • fit(X, y) — addestramento dei modelli utilizzando X, y;
  • predict(X) — previsione della classe per X;
  • score(X, y) — restituisce l'accuratezza per il set X, y;

Attributi:

  • best_estimator_ — oggetto del modello con il punteggio più alto;
  • best_score_ — punteggio del best_estimator_.

Questo esercizio utilizza anche la classe Pipeline. Puoi considerarla come una sequenza di passaggi di pre-processing. Il suo metodo .fit_transform() applica sequenzialmente .fit_transform() a ciascun passaggio della pipeline.

Compito

Swipe to start coding

Ti viene fornito un dataset descritto come un DataFrame nella variabile df.

  • Creare una pipeline che includa le caratteristiche polinomiali di grado 2 di X, venga scalata e memorizzare la pipeline risultante nella variabile pipe.
  • Creare un dizionario param_grid con i valori [0.01, 0.1, 1, 10, 100] per l'iperparametro C.
  • Inizializzare e addestrare un oggetto GridSearchCV e memorizzare l'oggetto addestrato nella variabile grid_cv.

Soluzione

Tutto è chiaro?

Come possiamo migliorarlo?

Grazie per i tuoi commenti!

Sezione 1. Capitolo 26
single

single

Chieda ad AI

expand

Chieda ad AI

ChatGPT

Chieda pure quello che desidera o provi una delle domande suggerite per iniziare la nostra conversazione

close

bookSfida: Classificazione di Dati Inseparabili

Scorri per mostrare il menu

Utilizzerai il seguente dataset con due caratteristiche:

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

Se esegui il codice qui sotto e osservi il grafico a dispersione risultante, noterai che il dataset non è linearmente separabile:

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

Utilizzo della validazione incrociata per valutare una semplice regressione logistica su questi dati:

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

Come puoi vedere, la Regressione Logistica standard non è adatta a questo compito. L'utilizzo della regressione polinomiale può aiutare a migliorare le prestazioni del modello. Inoltre, l'impiego di GridSearchCV consente di trovare il parametro ottimale C per una maggiore accuratezza.

Costruttore:

  • GridSearchCV(estimator, param_grid, scoring, cv = 5)
  • estimator — oggetto modello;
  • param_grid — dizionario con i valori dei parametri da esplorare;
    • scoring — metrica utilizzata per la valutazione tramite cross-validation;
  • cv — numero di fold (5 di default);

Metodi:

  • fit(X, y) — addestramento dei modelli utilizzando X, y;
  • predict(X) — previsione della classe per X;
  • score(X, y) — restituisce l'accuratezza per il set X, y;

Attributi:

  • best_estimator_ — oggetto del modello con il punteggio più alto;
  • best_score_ — punteggio del best_estimator_.

Questo esercizio utilizza anche la classe Pipeline. Puoi considerarla come una sequenza di passaggi di pre-processing. Il suo metodo .fit_transform() applica sequenzialmente .fit_transform() a ciascun passaggio della pipeline.

Compito

Swipe to start coding

Ti viene fornito un dataset descritto come un DataFrame nella variabile df.

  • Creare una pipeline che includa le caratteristiche polinomiali di grado 2 di X, venga scalata e memorizzare la pipeline risultante nella variabile pipe.
  • Creare un dizionario param_grid con i valori [0.01, 0.1, 1, 10, 100] per l'iperparametro C.
  • Inizializzare e addestrare un oggetto GridSearchCV e memorizzare l'oggetto addestrato nella variabile grid_cv.

Soluzione

Switch to desktopCambia al desktop per esercitarti nel mondo realeContinua da dove ti trovi utilizzando una delle opzioni seguenti
Tutto è chiaro?

Come possiamo migliorarlo?

Grazie per i tuoi commenti!

Sezione 1. Capitolo 26
single

single

some-alt