Resolución de Problemas Basada en Escenarios con Sklearn
Estás construyendo un clasificador de spam. Después del entrenamiento inicial, encuentras una alta precisión pero muchos correos electrónicos legítimos se marcan como spam (altos falsos positivos). ¿Cómo abordarías esto usando Sklearn?
Respuesta:
Esto indica la necesidad de optimizar la precisión (precision) sobre la exhaustividad (recall). Utilizaría sklearn.metrics.classification_report para analizar la precisión y la exhaustividad, y luego ajustaría el umbral de clasificación (por ejemplo, usando model.predict_proba) o elegiría un modelo que permita el aprendizaje sensible al costo o la reponderación de clases para penalizar más fuertemente los falsos positivos.
Tienes un conjunto de datos con 1 millón de filas y 1000 características. Entrenar un modelo LogisticRegression estándar está tardando demasiado. ¿Qué estrategias de Sklearn puedes emplear para acelerar el entrenamiento?
Respuesta:
Para conjuntos de datos grandes, consideraría usar SGDClassifier con loss='log_loss' para el descenso de gradiente estocástico, que es más escalable. Alternativamente, podría usar LogisticRegression con solver='saga' o solver='liblinear' para conjuntos de datos grandes, y potencialmente reducir el número de características usando sklearn.decomposition.PCA o técnicas de selección de características.
Tu modelo funciona bien en el conjunto de entrenamiento pero mal en datos no vistos. ¿Cómo diagnosticas y mitigas este sobreajuste (overfitting) usando herramientas de Sklearn?
Respuesta:
Este es un signo clásico de sobreajuste. Usaría sklearn.model_selection.GridSearchCV o RandomizedSearchCV con validación cruzada para encontrar los hiperparámetros óptimos. La regularización (penalizaciones L1/L2 en modelos lineales, alpha en Ridge/Lasso, C en SVMs) y la reducción de la complejidad del modelo son estrategias clave de mitigación.
Estás trabajando con un conjunto de datos donde una característica es 'Ciudad' con 500 valores únicos. ¿Cómo preprocesarías esto para un modelo de Sklearn?
Respuesta:
Usaría sklearn.preprocessing.OneHotEncoder para convertir la característica categórica 'Ciudad' en un formato numérico adecuado para los modelos de Sklearn. Para un número muy alto de valores únicos, podría considerar la codificación por objetivo (target encoding) o capas de incrustación (embedding layers) si se usa aprendizaje profundo, o la reducción de dimensionalidad después de la codificación one-hot.
Necesitas comparar el rendimiento de RandomForestClassifier y GradientBoostingClassifier en un conjunto de datos. ¿Cómo asegurarías una comparación justa usando Sklearn?
Respuesta:
Usaría sklearn.model_selection.StratifiedKFold para la validación cruzada para asegurar divisiones consistentes entre modelos y mantener las proporciones de clases. Luego, evaluaría ambos modelos utilizando las mismas métricas (por ejemplo, F1-score, ROC AUC) en los pliegues de prueba, potencialmente optimizando los hiperparámetros para cada modelo usando GridSearchCV.
Tu conjunto de datos tiene valores faltantes en varias columnas. Describe cómo los manejarías usando Sklearn.
Respuesta:
Usaría sklearn.impute.SimpleImputer para rellenar los valores faltantes, típicamente con la media, mediana o el valor más frecuente, dependiendo de la distribución de la característica. Para una imputación más compleja, se podría considerar IterativeImputer (MICE) o KNNImputer, especialmente dentro de un Pipeline.
Estás construyendo un sistema de recomendación y necesitas encontrar elementos similares basándote en sus características. ¿Qué módulo de Sklearn usarías y por qué?
Respuesta:
Usaría sklearn.metrics.pairwise para calcular puntuaciones de similitud, como cosine_similarity o euclidean_distances, entre los vectores de características de los elementos. Esto permite una computación eficiente de matrices de similitud, que son fundamentales para los sistemas de recomendación basados en contenido.
Tienes un conjunto de datos desequilibrado donde la clase minoritaria es de interés principal. ¿Cómo entrenarías un modelo y evaluarías su rendimiento usando Sklearn?
Respuesta:
Usaría sklearn.utils.resample para el sobremuestreo (oversampling) de la clase minoritaria o el submuestreo (undersampling) de la clase mayoritaria, o imblearn.over_sampling.SMOTE. Para la evaluación, me centraría en métricas como recall, precision, f1_score o roc_auc_score de sklearn.metrics, en lugar de solo la precisión, ya que son más informativas para conjuntos de datos desequilibrados.
Has entrenado un modelo SVC, pero es demasiado lento para predicciones en tiempo real. ¿Qué alternativas o estrategias de Sklearn podrías considerar?
Respuesta:
Para predicciones más rápidas, consideraría usar LinearSVC si los datos son linealmente separables, o SGDClassifier con una pérdida hinge, que son más eficientes para conjuntos de datos grandes. Alternativamente, podría reducir el número de vectores de soporte ajustando C o usando un kernel diferente, o explorar modelos basados en árboles como LightGBM o XGBoost.
Necesitas crear un pipeline de aprendizaje automático robusto que incluya preprocesamiento, selección de características y entrenamiento de modelos. ¿Cómo estructurarías esto usando Sklearn?
Respuesta:
Usaría sklearn.pipeline.Pipeline para encadenar estos pasos. Esto asegura que el preprocesamiento y la selección de características se apliquen consistentemente tanto a los datos de entrenamiento como a los de prueba, y previene la fuga de datos durante la validación cruzada. Por ejemplo: Pipeline([('scaler', StandardScaler()), ('selector', SelectKBest()), ('model', LogisticRegression())]).