Sfida: Classificazione di Dati Inseparabili
Utilizzerai il seguente dataset con due caratteristiche:
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())
Se esegui il codice qui sotto e osservi il grafico a dispersione risultante, noterai che il dataset non è linearmente separabile:
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()
Utilizzo della validazione incrociata per valutare una semplice regressione logistica su questi dati:
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}')
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.
Questo esercizio utilizza anche la classe Pipeline. Puoi considerarla come una sequenza di fasi di pre-elaborazione. Il suo metodo .fit_transform() applica in sequenza .fit_transform() a ciascuna fase della pipeline.
Swipe to start coding
Ti viene fornito un dataset descritto come un DataFrame nella variabile df.
- Crea una pipeline che includa le caratteristiche polinomiali di grado 2 di
X, le scali e memorizza la pipeline risultante nella variabilepipe. - Crea un dizionario
param_gridcon i valori[0.01, 0.1, 1, 10, 100]per l'iperparametroC. - Inizializza e addestra un oggetto
GridSearchCVe memorizza l'oggetto addestrato nella variabilegrid_cv.
Soluzione
Grazie per i tuoi commenti!
single
Chieda ad AI
Chieda ad AI
Chieda pure quello che desidera o provi una delle domande suggerite per iniziare la nostra conversazione
Can you explain how to use polynomial regression with this dataset?
How does GridSearchCV help in finding the optimal C parameter?
What is the purpose of using a Pipeline in this context?
Awesome!
Completion rate improved to 4.17
Sfida: Classificazione di Dati Inseparabili
Scorri per mostrare il menu
Utilizzerai il seguente dataset con due caratteristiche:
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())
Se esegui il codice qui sotto e osservi il grafico a dispersione risultante, noterai che il dataset non è linearmente separabile:
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()
Utilizzo della validazione incrociata per valutare una semplice regressione logistica su questi dati:
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}')
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.
Questo esercizio utilizza anche la classe Pipeline. Puoi considerarla come una sequenza di fasi di pre-elaborazione. Il suo metodo .fit_transform() applica in sequenza .fit_transform() a ciascuna fase della pipeline.
Swipe to start coding
Ti viene fornito un dataset descritto come un DataFrame nella variabile df.
- Crea una pipeline che includa le caratteristiche polinomiali di grado 2 di
X, le scali e memorizza la pipeline risultante nella variabilepipe. - Crea un dizionario
param_gridcon i valori[0.01, 0.1, 1, 10, 100]per l'iperparametroC. - Inizializza e addestra un oggetto
GridSearchCVe memorizza l'oggetto addestrato nella variabilegrid_cv.
Soluzione
Grazie per i tuoi commenti!
single