Chapter 4: Feature Engineering for Model Improvement
4.3 Ejercicios prácticos para el capítulo 4
Estos ejercicios te ayudarán a practicar la selección de características y el ajuste del modelo usando RFE y la importancia de características. Cada ejercicio incluye una solución con código para orientación.
Ejercicio 1: Identificar características importantes con Random Forests
Usa un Random Forest Classifier para identificar las características más importantes en un conjunto de datos. Enfócate en entender las puntuaciones de importancia de características y selecciona las principales características basándote en estas puntuaciones.
- Carga el conjunto de datos y divídelo en conjuntos de entrenamiento y prueba.
- Entrena un Random Forest Classifier y muestra las puntuaciones de importancia de características.
- Selecciona las 5 características principales basándote en su importancia y reevalúa el modelo.
from sklearn.ensemble import RandomForestClassifier
from sklearn.datasets import make_classification
from sklearn.model_selection import train_test_split
from sklearn.metrics import accuracy_score
import pandas as pd
# Generate a sample dataset
X, y = make_classification(n_samples=200, n_features=10, n_informative=6, random_state=42)
df = pd.DataFrame(X, columns=[f'Feature_{i}' for i in range(1, 11)])
df['Target'] = y
# Split data into training and testing sets
X_train, X_test, y_train, y_test = train_test_split(df.drop(columns=['Target']), df['Target'], test_size=0.3, random_state=42)
# Solution: Train Random Forest model and calculate feature importance
rf_model = RandomForestClassifier(random_state=42)
rf_model.fit(X_train, y_train)
feature_importances = pd.DataFrame({'Feature': X_train.columns, 'Importance': rf_model.feature_importances_})
feature_importances = feature_importances.sort_values(by='Importance', ascending=False)
print("Feature Importance Ranking:")
print(feature_importances)
# Select top 5 features
top_features = feature_importances['Feature'].head(5).values
X_train_top = X_train[top_features]
X_test_top = X_test[top_features]
# Train Random Forest with top 5 features and evaluate
rf_model.fit(X_train_top, y_train)
y_pred = rf_model.predict(X_test_top)
print("Accuracy with Top 5 Features:", accuracy_score(y_test, y_pred))
En esta solución:
- Calculamos la importancia de cada característica y seleccionamos las 5 principales basándonos en sus puntuaciones.
- Se evalúa la precisión del modelo utilizando solo las características principales para analizar su impacto en el rendimiento.
Ejercicio 2: Aplicar RFE con regresión logística
Usa RFE con un modelo de regresión logística para identificar las mejores características para una tarea de clasificación. Selecciona las 6 características principales y evalúa la precisión del modelo.
- Entrena RFE con regresión logística en los datos de entrenamiento.
- Selecciona las 6 características principales y vuelve a entrenar el modelo utilizando solo estas características.
- Compara el rendimiento del modelo con el conjunto completo de características.
from sklearn.linear_model import LogisticRegression
from sklearn.feature_selection import RFE
# Solution: Initialize Logistic Regression and RFE
log_reg = LogisticRegression(max_iter=1000)
rfe = RFE(estimator=log_reg, n_features_to_select=6)
# Fit RFE and select top features
rfe.fit(X_train, y_train)
# Display selected features
selected_features = [f'Feature_{i+1}' for i, selected in enumerate(rfe.support_) if selected]
print("Selected Features with RFE:", selected_features)
# Evaluate accuracy with selected features
X_train_rfe = X_train[selected_features]
X_test_rfe = X_test[selected_features]
log_reg.fit(X_train_rfe, y_train)
y_pred_rfe = log_reg.predict(X_test_rfe)
print("Model Accuracy with RFE-Selected Features:", accuracy_score(y_test, y_pred_rfe))
En esta solución:
RFE identifica las 6 características principales, y volvemos a entrenar la regresión logística utilizando solo esas características, comparando la precisión con el conjunto completo de características.
Ejercicio 3: Realizar ajuste de hiperparámetros con RFE y Random Forest
Combina RFE y GridSearchCV para realizar selección de características y ajuste de modelo para un Random Forest Classifier. Ajusta parámetros como el número de características seleccionadas, n_estimators
y max_depth
.
- Define una cuadrícula de parámetros para RFE y el modelo Random Forest.
- Usa GridSearchCV para encontrar la mejor combinación de características y parámetros del modelo.
- Muestra el número óptimo de características y los parámetros del modelo, junto con la precisión obtenida.
from sklearn.model_selection import GridSearchCV
from sklearn.feature_selection import RFE
from sklearn.ensemble import RandomForestClassifier
# Solution: Initialize RFE with Random Forest
rf = RandomForestClassifier(random_state=42)
rfe = RFE(estimator=rf)
# Define parameter grid
param_grid = {
'n_features_to_select': [5, 7, 9],
'estimator__n_estimators': [50, 100],
'estimator__max_depth': [None, 10]
}
# GridSearchCV for tuning RFE and Random Forest parameters
grid_search = GridSearchCV(estimator=rfe, param_grid=param_grid, cv=3, scoring='accuracy')
grid_search.fit(X_train, y_train)
# Display best parameters and accuracy
print("Best Parameters from GridSearch:", grid_search.best_params_)
print("Best Model Accuracy:", grid_search.best_score_)
En esta solución:
Realizamos una búsqueda en la cuadrícula para ajustar simultáneamente el número de características seleccionadas por RFE y los parámetros de Random Forest, identificando la mejor configuración para optimizar la precisión.
Ejercicio 4: Crear características basadas en la importancia de las características
Usando las puntuaciones de importancia de características, crea un término de interacción entre dos características altamente importantes. Luego, vuelve a entrenar el modelo y evalúa la precisión para verificar si el término de interacción mejora el rendimiento.
- Identifica dos características de alta importancia del modelo Random Forest previo.
- Crea una nueva característica de interacción multiplicando estas dos características.
- Entrena un modelo con la nueva característica y compara el rendimiento con el conjunto original de características.
# Identify top two features from feature importance
top_two_features = feature_importances['Feature'].head(2).values
print("Top Two Features for Interaction:", top_two_features)
# Create interaction term
X_train['Interaction_Term'] = X_train[top_two_features[0]] * X_train[top_two_features[1]]
X_test['Interaction_Term'] = X_test[top_two_features[0]] * X_test[top_two_features[1]]
# Train Random Forest with interaction feature
rf_model.fit(X_train, y_train)
y_pred_interaction = rf_model.predict(X_test)
print("Accuracy with Interaction Feature:", accuracy_score(y_test, y_pred_interaction))
En esta solución:
- Creamos un término de interacción entre las dos características más importantes y lo añadimos al conjunto de datos antes de entrenar el modelo.
- Luego, comparamos la nueva precisión con la del modelo sin el término de interacción para evaluar la mejora.
Estos ejercicios cubren aplicaciones prácticas de la importancia de las características, RFE y ajuste de hiperparámetros. Al dominar estas técnicas, mejorarás tu capacidad para seleccionar y diseñar características que aumenten la precisión y generalización del modelo.
4.3 Ejercicios prácticos para el capítulo 4
Estos ejercicios te ayudarán a practicar la selección de características y el ajuste del modelo usando RFE y la importancia de características. Cada ejercicio incluye una solución con código para orientación.
Ejercicio 1: Identificar características importantes con Random Forests
Usa un Random Forest Classifier para identificar las características más importantes en un conjunto de datos. Enfócate en entender las puntuaciones de importancia de características y selecciona las principales características basándote en estas puntuaciones.
- Carga el conjunto de datos y divídelo en conjuntos de entrenamiento y prueba.
- Entrena un Random Forest Classifier y muestra las puntuaciones de importancia de características.
- Selecciona las 5 características principales basándote en su importancia y reevalúa el modelo.
from sklearn.ensemble import RandomForestClassifier
from sklearn.datasets import make_classification
from sklearn.model_selection import train_test_split
from sklearn.metrics import accuracy_score
import pandas as pd
# Generate a sample dataset
X, y = make_classification(n_samples=200, n_features=10, n_informative=6, random_state=42)
df = pd.DataFrame(X, columns=[f'Feature_{i}' for i in range(1, 11)])
df['Target'] = y
# Split data into training and testing sets
X_train, X_test, y_train, y_test = train_test_split(df.drop(columns=['Target']), df['Target'], test_size=0.3, random_state=42)
# Solution: Train Random Forest model and calculate feature importance
rf_model = RandomForestClassifier(random_state=42)
rf_model.fit(X_train, y_train)
feature_importances = pd.DataFrame({'Feature': X_train.columns, 'Importance': rf_model.feature_importances_})
feature_importances = feature_importances.sort_values(by='Importance', ascending=False)
print("Feature Importance Ranking:")
print(feature_importances)
# Select top 5 features
top_features = feature_importances['Feature'].head(5).values
X_train_top = X_train[top_features]
X_test_top = X_test[top_features]
# Train Random Forest with top 5 features and evaluate
rf_model.fit(X_train_top, y_train)
y_pred = rf_model.predict(X_test_top)
print("Accuracy with Top 5 Features:", accuracy_score(y_test, y_pred))
En esta solución:
- Calculamos la importancia de cada característica y seleccionamos las 5 principales basándonos en sus puntuaciones.
- Se evalúa la precisión del modelo utilizando solo las características principales para analizar su impacto en el rendimiento.
Ejercicio 2: Aplicar RFE con regresión logística
Usa RFE con un modelo de regresión logística para identificar las mejores características para una tarea de clasificación. Selecciona las 6 características principales y evalúa la precisión del modelo.
- Entrena RFE con regresión logística en los datos de entrenamiento.
- Selecciona las 6 características principales y vuelve a entrenar el modelo utilizando solo estas características.
- Compara el rendimiento del modelo con el conjunto completo de características.
from sklearn.linear_model import LogisticRegression
from sklearn.feature_selection import RFE
# Solution: Initialize Logistic Regression and RFE
log_reg = LogisticRegression(max_iter=1000)
rfe = RFE(estimator=log_reg, n_features_to_select=6)
# Fit RFE and select top features
rfe.fit(X_train, y_train)
# Display selected features
selected_features = [f'Feature_{i+1}' for i, selected in enumerate(rfe.support_) if selected]
print("Selected Features with RFE:", selected_features)
# Evaluate accuracy with selected features
X_train_rfe = X_train[selected_features]
X_test_rfe = X_test[selected_features]
log_reg.fit(X_train_rfe, y_train)
y_pred_rfe = log_reg.predict(X_test_rfe)
print("Model Accuracy with RFE-Selected Features:", accuracy_score(y_test, y_pred_rfe))
En esta solución:
RFE identifica las 6 características principales, y volvemos a entrenar la regresión logística utilizando solo esas características, comparando la precisión con el conjunto completo de características.
Ejercicio 3: Realizar ajuste de hiperparámetros con RFE y Random Forest
Combina RFE y GridSearchCV para realizar selección de características y ajuste de modelo para un Random Forest Classifier. Ajusta parámetros como el número de características seleccionadas, n_estimators
y max_depth
.
- Define una cuadrícula de parámetros para RFE y el modelo Random Forest.
- Usa GridSearchCV para encontrar la mejor combinación de características y parámetros del modelo.
- Muestra el número óptimo de características y los parámetros del modelo, junto con la precisión obtenida.
from sklearn.model_selection import GridSearchCV
from sklearn.feature_selection import RFE
from sklearn.ensemble import RandomForestClassifier
# Solution: Initialize RFE with Random Forest
rf = RandomForestClassifier(random_state=42)
rfe = RFE(estimator=rf)
# Define parameter grid
param_grid = {
'n_features_to_select': [5, 7, 9],
'estimator__n_estimators': [50, 100],
'estimator__max_depth': [None, 10]
}
# GridSearchCV for tuning RFE and Random Forest parameters
grid_search = GridSearchCV(estimator=rfe, param_grid=param_grid, cv=3, scoring='accuracy')
grid_search.fit(X_train, y_train)
# Display best parameters and accuracy
print("Best Parameters from GridSearch:", grid_search.best_params_)
print("Best Model Accuracy:", grid_search.best_score_)
En esta solución:
Realizamos una búsqueda en la cuadrícula para ajustar simultáneamente el número de características seleccionadas por RFE y los parámetros de Random Forest, identificando la mejor configuración para optimizar la precisión.
Ejercicio 4: Crear características basadas en la importancia de las características
Usando las puntuaciones de importancia de características, crea un término de interacción entre dos características altamente importantes. Luego, vuelve a entrenar el modelo y evalúa la precisión para verificar si el término de interacción mejora el rendimiento.
- Identifica dos características de alta importancia del modelo Random Forest previo.
- Crea una nueva característica de interacción multiplicando estas dos características.
- Entrena un modelo con la nueva característica y compara el rendimiento con el conjunto original de características.
# Identify top two features from feature importance
top_two_features = feature_importances['Feature'].head(2).values
print("Top Two Features for Interaction:", top_two_features)
# Create interaction term
X_train['Interaction_Term'] = X_train[top_two_features[0]] * X_train[top_two_features[1]]
X_test['Interaction_Term'] = X_test[top_two_features[0]] * X_test[top_two_features[1]]
# Train Random Forest with interaction feature
rf_model.fit(X_train, y_train)
y_pred_interaction = rf_model.predict(X_test)
print("Accuracy with Interaction Feature:", accuracy_score(y_test, y_pred_interaction))
En esta solución:
- Creamos un término de interacción entre las dos características más importantes y lo añadimos al conjunto de datos antes de entrenar el modelo.
- Luego, comparamos la nueva precisión con la del modelo sin el término de interacción para evaluar la mejora.
Estos ejercicios cubren aplicaciones prácticas de la importancia de las características, RFE y ajuste de hiperparámetros. Al dominar estas técnicas, mejorarás tu capacidad para seleccionar y diseñar características que aumenten la precisión y generalización del modelo.
4.3 Ejercicios prácticos para el capítulo 4
Estos ejercicios te ayudarán a practicar la selección de características y el ajuste del modelo usando RFE y la importancia de características. Cada ejercicio incluye una solución con código para orientación.
Ejercicio 1: Identificar características importantes con Random Forests
Usa un Random Forest Classifier para identificar las características más importantes en un conjunto de datos. Enfócate en entender las puntuaciones de importancia de características y selecciona las principales características basándote en estas puntuaciones.
- Carga el conjunto de datos y divídelo en conjuntos de entrenamiento y prueba.
- Entrena un Random Forest Classifier y muestra las puntuaciones de importancia de características.
- Selecciona las 5 características principales basándote en su importancia y reevalúa el modelo.
from sklearn.ensemble import RandomForestClassifier
from sklearn.datasets import make_classification
from sklearn.model_selection import train_test_split
from sklearn.metrics import accuracy_score
import pandas as pd
# Generate a sample dataset
X, y = make_classification(n_samples=200, n_features=10, n_informative=6, random_state=42)
df = pd.DataFrame(X, columns=[f'Feature_{i}' for i in range(1, 11)])
df['Target'] = y
# Split data into training and testing sets
X_train, X_test, y_train, y_test = train_test_split(df.drop(columns=['Target']), df['Target'], test_size=0.3, random_state=42)
# Solution: Train Random Forest model and calculate feature importance
rf_model = RandomForestClassifier(random_state=42)
rf_model.fit(X_train, y_train)
feature_importances = pd.DataFrame({'Feature': X_train.columns, 'Importance': rf_model.feature_importances_})
feature_importances = feature_importances.sort_values(by='Importance', ascending=False)
print("Feature Importance Ranking:")
print(feature_importances)
# Select top 5 features
top_features = feature_importances['Feature'].head(5).values
X_train_top = X_train[top_features]
X_test_top = X_test[top_features]
# Train Random Forest with top 5 features and evaluate
rf_model.fit(X_train_top, y_train)
y_pred = rf_model.predict(X_test_top)
print("Accuracy with Top 5 Features:", accuracy_score(y_test, y_pred))
En esta solución:
- Calculamos la importancia de cada característica y seleccionamos las 5 principales basándonos en sus puntuaciones.
- Se evalúa la precisión del modelo utilizando solo las características principales para analizar su impacto en el rendimiento.
Ejercicio 2: Aplicar RFE con regresión logística
Usa RFE con un modelo de regresión logística para identificar las mejores características para una tarea de clasificación. Selecciona las 6 características principales y evalúa la precisión del modelo.
- Entrena RFE con regresión logística en los datos de entrenamiento.
- Selecciona las 6 características principales y vuelve a entrenar el modelo utilizando solo estas características.
- Compara el rendimiento del modelo con el conjunto completo de características.
from sklearn.linear_model import LogisticRegression
from sklearn.feature_selection import RFE
# Solution: Initialize Logistic Regression and RFE
log_reg = LogisticRegression(max_iter=1000)
rfe = RFE(estimator=log_reg, n_features_to_select=6)
# Fit RFE and select top features
rfe.fit(X_train, y_train)
# Display selected features
selected_features = [f'Feature_{i+1}' for i, selected in enumerate(rfe.support_) if selected]
print("Selected Features with RFE:", selected_features)
# Evaluate accuracy with selected features
X_train_rfe = X_train[selected_features]
X_test_rfe = X_test[selected_features]
log_reg.fit(X_train_rfe, y_train)
y_pred_rfe = log_reg.predict(X_test_rfe)
print("Model Accuracy with RFE-Selected Features:", accuracy_score(y_test, y_pred_rfe))
En esta solución:
RFE identifica las 6 características principales, y volvemos a entrenar la regresión logística utilizando solo esas características, comparando la precisión con el conjunto completo de características.
Ejercicio 3: Realizar ajuste de hiperparámetros con RFE y Random Forest
Combina RFE y GridSearchCV para realizar selección de características y ajuste de modelo para un Random Forest Classifier. Ajusta parámetros como el número de características seleccionadas, n_estimators
y max_depth
.
- Define una cuadrícula de parámetros para RFE y el modelo Random Forest.
- Usa GridSearchCV para encontrar la mejor combinación de características y parámetros del modelo.
- Muestra el número óptimo de características y los parámetros del modelo, junto con la precisión obtenida.
from sklearn.model_selection import GridSearchCV
from sklearn.feature_selection import RFE
from sklearn.ensemble import RandomForestClassifier
# Solution: Initialize RFE with Random Forest
rf = RandomForestClassifier(random_state=42)
rfe = RFE(estimator=rf)
# Define parameter grid
param_grid = {
'n_features_to_select': [5, 7, 9],
'estimator__n_estimators': [50, 100],
'estimator__max_depth': [None, 10]
}
# GridSearchCV for tuning RFE and Random Forest parameters
grid_search = GridSearchCV(estimator=rfe, param_grid=param_grid, cv=3, scoring='accuracy')
grid_search.fit(X_train, y_train)
# Display best parameters and accuracy
print("Best Parameters from GridSearch:", grid_search.best_params_)
print("Best Model Accuracy:", grid_search.best_score_)
En esta solución:
Realizamos una búsqueda en la cuadrícula para ajustar simultáneamente el número de características seleccionadas por RFE y los parámetros de Random Forest, identificando la mejor configuración para optimizar la precisión.
Ejercicio 4: Crear características basadas en la importancia de las características
Usando las puntuaciones de importancia de características, crea un término de interacción entre dos características altamente importantes. Luego, vuelve a entrenar el modelo y evalúa la precisión para verificar si el término de interacción mejora el rendimiento.
- Identifica dos características de alta importancia del modelo Random Forest previo.
- Crea una nueva característica de interacción multiplicando estas dos características.
- Entrena un modelo con la nueva característica y compara el rendimiento con el conjunto original de características.
# Identify top two features from feature importance
top_two_features = feature_importances['Feature'].head(2).values
print("Top Two Features for Interaction:", top_two_features)
# Create interaction term
X_train['Interaction_Term'] = X_train[top_two_features[0]] * X_train[top_two_features[1]]
X_test['Interaction_Term'] = X_test[top_two_features[0]] * X_test[top_two_features[1]]
# Train Random Forest with interaction feature
rf_model.fit(X_train, y_train)
y_pred_interaction = rf_model.predict(X_test)
print("Accuracy with Interaction Feature:", accuracy_score(y_test, y_pred_interaction))
En esta solución:
- Creamos un término de interacción entre las dos características más importantes y lo añadimos al conjunto de datos antes de entrenar el modelo.
- Luego, comparamos la nueva precisión con la del modelo sin el término de interacción para evaluar la mejora.
Estos ejercicios cubren aplicaciones prácticas de la importancia de las características, RFE y ajuste de hiperparámetros. Al dominar estas técnicas, mejorarás tu capacidad para seleccionar y diseñar características que aumenten la precisión y generalización del modelo.
4.3 Ejercicios prácticos para el capítulo 4
Estos ejercicios te ayudarán a practicar la selección de características y el ajuste del modelo usando RFE y la importancia de características. Cada ejercicio incluye una solución con código para orientación.
Ejercicio 1: Identificar características importantes con Random Forests
Usa un Random Forest Classifier para identificar las características más importantes en un conjunto de datos. Enfócate en entender las puntuaciones de importancia de características y selecciona las principales características basándote en estas puntuaciones.
- Carga el conjunto de datos y divídelo en conjuntos de entrenamiento y prueba.
- Entrena un Random Forest Classifier y muestra las puntuaciones de importancia de características.
- Selecciona las 5 características principales basándote en su importancia y reevalúa el modelo.
from sklearn.ensemble import RandomForestClassifier
from sklearn.datasets import make_classification
from sklearn.model_selection import train_test_split
from sklearn.metrics import accuracy_score
import pandas as pd
# Generate a sample dataset
X, y = make_classification(n_samples=200, n_features=10, n_informative=6, random_state=42)
df = pd.DataFrame(X, columns=[f'Feature_{i}' for i in range(1, 11)])
df['Target'] = y
# Split data into training and testing sets
X_train, X_test, y_train, y_test = train_test_split(df.drop(columns=['Target']), df['Target'], test_size=0.3, random_state=42)
# Solution: Train Random Forest model and calculate feature importance
rf_model = RandomForestClassifier(random_state=42)
rf_model.fit(X_train, y_train)
feature_importances = pd.DataFrame({'Feature': X_train.columns, 'Importance': rf_model.feature_importances_})
feature_importances = feature_importances.sort_values(by='Importance', ascending=False)
print("Feature Importance Ranking:")
print(feature_importances)
# Select top 5 features
top_features = feature_importances['Feature'].head(5).values
X_train_top = X_train[top_features]
X_test_top = X_test[top_features]
# Train Random Forest with top 5 features and evaluate
rf_model.fit(X_train_top, y_train)
y_pred = rf_model.predict(X_test_top)
print("Accuracy with Top 5 Features:", accuracy_score(y_test, y_pred))
En esta solución:
- Calculamos la importancia de cada característica y seleccionamos las 5 principales basándonos en sus puntuaciones.
- Se evalúa la precisión del modelo utilizando solo las características principales para analizar su impacto en el rendimiento.
Ejercicio 2: Aplicar RFE con regresión logística
Usa RFE con un modelo de regresión logística para identificar las mejores características para una tarea de clasificación. Selecciona las 6 características principales y evalúa la precisión del modelo.
- Entrena RFE con regresión logística en los datos de entrenamiento.
- Selecciona las 6 características principales y vuelve a entrenar el modelo utilizando solo estas características.
- Compara el rendimiento del modelo con el conjunto completo de características.
from sklearn.linear_model import LogisticRegression
from sklearn.feature_selection import RFE
# Solution: Initialize Logistic Regression and RFE
log_reg = LogisticRegression(max_iter=1000)
rfe = RFE(estimator=log_reg, n_features_to_select=6)
# Fit RFE and select top features
rfe.fit(X_train, y_train)
# Display selected features
selected_features = [f'Feature_{i+1}' for i, selected in enumerate(rfe.support_) if selected]
print("Selected Features with RFE:", selected_features)
# Evaluate accuracy with selected features
X_train_rfe = X_train[selected_features]
X_test_rfe = X_test[selected_features]
log_reg.fit(X_train_rfe, y_train)
y_pred_rfe = log_reg.predict(X_test_rfe)
print("Model Accuracy with RFE-Selected Features:", accuracy_score(y_test, y_pred_rfe))
En esta solución:
RFE identifica las 6 características principales, y volvemos a entrenar la regresión logística utilizando solo esas características, comparando la precisión con el conjunto completo de características.
Ejercicio 3: Realizar ajuste de hiperparámetros con RFE y Random Forest
Combina RFE y GridSearchCV para realizar selección de características y ajuste de modelo para un Random Forest Classifier. Ajusta parámetros como el número de características seleccionadas, n_estimators
y max_depth
.
- Define una cuadrícula de parámetros para RFE y el modelo Random Forest.
- Usa GridSearchCV para encontrar la mejor combinación de características y parámetros del modelo.
- Muestra el número óptimo de características y los parámetros del modelo, junto con la precisión obtenida.
from sklearn.model_selection import GridSearchCV
from sklearn.feature_selection import RFE
from sklearn.ensemble import RandomForestClassifier
# Solution: Initialize RFE with Random Forest
rf = RandomForestClassifier(random_state=42)
rfe = RFE(estimator=rf)
# Define parameter grid
param_grid = {
'n_features_to_select': [5, 7, 9],
'estimator__n_estimators': [50, 100],
'estimator__max_depth': [None, 10]
}
# GridSearchCV for tuning RFE and Random Forest parameters
grid_search = GridSearchCV(estimator=rfe, param_grid=param_grid, cv=3, scoring='accuracy')
grid_search.fit(X_train, y_train)
# Display best parameters and accuracy
print("Best Parameters from GridSearch:", grid_search.best_params_)
print("Best Model Accuracy:", grid_search.best_score_)
En esta solución:
Realizamos una búsqueda en la cuadrícula para ajustar simultáneamente el número de características seleccionadas por RFE y los parámetros de Random Forest, identificando la mejor configuración para optimizar la precisión.
Ejercicio 4: Crear características basadas en la importancia de las características
Usando las puntuaciones de importancia de características, crea un término de interacción entre dos características altamente importantes. Luego, vuelve a entrenar el modelo y evalúa la precisión para verificar si el término de interacción mejora el rendimiento.
- Identifica dos características de alta importancia del modelo Random Forest previo.
- Crea una nueva característica de interacción multiplicando estas dos características.
- Entrena un modelo con la nueva característica y compara el rendimiento con el conjunto original de características.
# Identify top two features from feature importance
top_two_features = feature_importances['Feature'].head(2).values
print("Top Two Features for Interaction:", top_two_features)
# Create interaction term
X_train['Interaction_Term'] = X_train[top_two_features[0]] * X_train[top_two_features[1]]
X_test['Interaction_Term'] = X_test[top_two_features[0]] * X_test[top_two_features[1]]
# Train Random Forest with interaction feature
rf_model.fit(X_train, y_train)
y_pred_interaction = rf_model.predict(X_test)
print("Accuracy with Interaction Feature:", accuracy_score(y_test, y_pred_interaction))
En esta solución:
- Creamos un término de interacción entre las dos características más importantes y lo añadimos al conjunto de datos antes de entrenar el modelo.
- Luego, comparamos la nueva precisión con la del modelo sin el término de interacción para evaluar la mejora.
Estos ejercicios cubren aplicaciones prácticas de la importancia de las características, RFE y ajuste de hiperparámetros. Al dominar estas técnicas, mejorarás tu capacidad para seleccionar y diseñar características que aumenten la precisión y generalización del modelo.