Skip to content

08-k-nearest-neighbours.ipynb #6

@mezcolantriz

Description

@mezcolantriz

Hola @carlos-villa-restrepo , por aquí las issues!

LO QUE HAS HECHO MUY BIEN

  • Eliminación de duplicados correcta: df = df.drop_duplicates() - Bien aplicado.

  • Verificación de nulos: df.isnull().sum().

  • Visualización de la variable objetivo: Gráfico de distribución de quality.

  • Discretización con pd.cut: Muy bien usar pd.cut() para crear las 3 categorías. Es una alternativa válida al lambda.

  • Análisis de correlaciones muy completo: El heatmap Y las observaciones detalladas de cada variable. Excelente análisis.

  • Escalado correcto: StandardScaler aplicado correctamente a train y test, usando fit_transform en train y transform en test. ¡Perfecto!

  • Uso de SMOTE: Intentaste balancear las clases - esto demuestra pensamiento avanzado.

  • Visualización 3D con Plotly: Muy buen extra para visualizar las clases.

  • Hiperparametrización: RandomizedSearchCV con múltiples parámetros.

  • Conclusión honesta sobre SMOTE: Reconociste que SMOTE no funcionó bien para este caso y explicaste por qué. Esto demuestra análisis crítico.


ERRORES Y PUNTOS A MEJORAR

1. NO hiciste la gráfica de accuracy vs k

El enunciado pedía específicamente:

"Crea un bucle para probar diferentes valores de k. Grafica accuracy vs k"

No hay ninguna gráfica de este tipo. Deberías haber hecho:

k_values = range(1, 21)
accuracies = []
for k in k_values:
    model = KNeighborsClassifier(n_neighbors=k)
    model.fit(X_train_scaled, y_train)
    accuracies.append(accuracy_score(y_test, model.predict(X_test_scaled)))

plt.plot(k_values, accuracies, marker='o')
plt.xlabel('k')
plt.ylabel('Accuracy')
plt.show()

2. NO usaste confusion_matrix

El enunciado pedía:

"Evalúa el rendimiento usando: accuracy_score, confusion_matrix, classification_report"

Importaste classification_report pero nunca lo usaste. Tampoco usaste confusion_matrix.


3. NO creaste la función predict_wine_quality

El enunciado pedía:

"Crea una función que reciba valores numéricos y prediga la calidad"


4. NO guardaste el modelo

No hay código con pickle para guardar el modelo final.


Buen trabajo, Carlos. Tu análisis es profundo y la experimentación con SMOTE demuestra curiosidad. La conclusión sobre por qué SMOTE no funcionó es excelente. Sin embargo, te faltaron varios requisitos del enunciado: la gráfica de k, las métricas adicionales, la función de predicción y guardar el modelo.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions