2012-03-16 24 views
5

Estoy entrenando un clasificador svm con validación cruzada (stratifiedKfold) usando las interfaces scikits. Para cada conjunto de pruebas (de k), obtengo un resultado de clasificación. Quiero tener una matriz de confusión con todos los resultados. Scikits tiene una interfaz de matriz de confusión: sklearn.metrics.confusion_matrix (y_true, y_pred) Mi pregunta es cómo debo acumular los valores y_true y y_pred. Son arreglos (numpy). ¿Debo definir el tamaño de las matrices en función de mi parámetro k-fold? Y para cada resultado debo agregar el y_true y el y-pred a la matriz ????matriz de confusión scikits con validación cruzada

+2

Tengo una solución para este problema. Para cada iteración (a través de mi k-fold) creo una "matriz de confusión" que agrego a la anterior. De esta manera obtengo un CN que contiene todos los valores. Con numpy es fácil construir esta matriz acumulativa (cm + = cm) – user963386

+0

Pero todavía tengo el problema si quiero obtener un informe acumulado sobre precisión/recuperación (classification_report). Cada iteración tendrá un "y_true", y_pred ". ¿Cómo puedo obtener un informe final? – user963386

+0

A lo largo de la validación cruzada, y_true será constante. Para y_pred, puede seguir el mismo procedimiento como matriz de confusión. Tomar predicciones agregadas/totales. –

Respuesta

2

Puede usar una matriz de confusión agregada o calcular una para cada partición de CV y ​​calcular la media y la desviación estándar (o error estándar) para cada componente en la matriz como una medida de la variabilidad.

Para el informe de clasificación, el código tendría que modificarse para aceptar 2 entradas dimensionales para pasar las predicciones para cada partición de CV y ​​luego calcular las puntuaciones medias y la desviación estándar para cada clase.

+1

¿Cómo podría crear una matriz de confusión agregada? – Merlin

+0

El código sería útil ... – Merlin

Cuestiones relacionadas