Desafío: Clasificación de Datos Inseparables
Utilizará el siguiente conjunto de datos con dos características:
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())
Si ejecuta el siguiente código y observa el diagrama de dispersión resultante, verá que el conjunto de datos no es linealmente separable:
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()
Utilicemos la validación cruzada para evaluar una regresión logística simple en estos datos:
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}')
Como puedes ver, la Regresión Logística regular no es adecuada para esta tarea. Utilizar regresión polinómica puede ayudar a mejorar el rendimiento del modelo. Además, emplear GridSearchCV permite encontrar el parámetro óptimo C para una mayor precisión.
Esta tarea también utiliza la clase Pipeline. Puedes considerarla como una secuencia de pasos de preprocesamiento. Su método .fit_transform() aplica secuencialmente .fit_transform() a cada paso en la secuencia.
Swipe to start coding
Se proporciona un conjunto de datos descrito como un DataFrame en la variable df.
- Crear un pipeline que contenga las características polinómicas de grado 2 de
X, escalar los datos y almacenar el pipeline resultante en la variablepipe. - Crear un diccionario
param_gridcon los valores[0.01, 0.1, 1, 10, 100]para el hiperparámetroC. - Inicializar y entrenar un objeto
GridSearchCVy almacenar el objeto entrenado en la variablegrid_cv.
Solución
¡Gracias por tus comentarios!
single
Pregunte a AI
Pregunte a AI
Pregunte lo que quiera o pruebe una de las preguntas sugeridas para comenzar nuestra charla
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
Desafío: Clasificación de Datos Inseparables
Desliza para mostrar el menú
Utilizará el siguiente conjunto de datos con dos características:
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())
Si ejecuta el siguiente código y observa el diagrama de dispersión resultante, verá que el conjunto de datos no es linealmente separable:
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()
Utilicemos la validación cruzada para evaluar una regresión logística simple en estos datos:
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}')
Como puedes ver, la Regresión Logística regular no es adecuada para esta tarea. Utilizar regresión polinómica puede ayudar a mejorar el rendimiento del modelo. Además, emplear GridSearchCV permite encontrar el parámetro óptimo C para una mayor precisión.
Esta tarea también utiliza la clase Pipeline. Puedes considerarla como una secuencia de pasos de preprocesamiento. Su método .fit_transform() aplica secuencialmente .fit_transform() a cada paso en la secuencia.
Swipe to start coding
Se proporciona un conjunto de datos descrito como un DataFrame en la variable df.
- Crear un pipeline que contenga las características polinómicas de grado 2 de
X, escalar los datos y almacenar el pipeline resultante en la variablepipe. - Crear un diccionario
param_gridcon los valores[0.01, 0.1, 1, 10, 100]para el hiperparámetroC. - Inicializar y entrenar un objeto
GridSearchCVy almacenar el objeto entrenado en la variablegrid_cv.
Solución
¡Gracias por tus comentarios!
single