lucasbaldezzari / bcihack2

0 stars 0 forks source link

sanityCheck #29

Closed lucasbaldezzari closed 11 months ago

lucasbaldezzari commented 1 year ago

Agregar un método sanityCheck() en Core para chequear diferentes parámetros antes de iniciar la sesión para no crashear durante la sesión o de Entrenamiento, de Calibración u Online cuando estas están en marcha.

Durante sesiones de Calibración

Chequear que:

Durante sesiones Online

De momento se usaran los mismos chequeos que la sesión de calibración.

lucasbaldezzari commented 11 months ago

En este sanity check debe chequearse qué tipo de función debe usarse para predecir los valores de cada instancia dependiendo del clasificador a usar. Se puede usar is_instance() para derterminar qué modelo se usa y en base a eso setear un flag que permita durante la sesión de calibración u online usar el que corresponda. A modo de ejemplo, LDA estima las probabilidades de que una observación pertenzca a cierta clase y por ende el método predict_proba() funciona. En SVC esto no es así, y se debe setear el atributo probability = True para poder hacer uso de una función predict_proba() (que según la documentación puede ser incosistente con la función predict() del SVC). Se podría evaluar si el modelo fue entrenado con el atributo en True y en caso de ser así, se usaría predict_proba y se puede usar, caso contrario, no.

lucasbaldezzari commented 11 months ago

Respecto al clasificador que se va a usar, una forma de poder chequear si la cantidad de clases utilizadas cuando se entrenó el clasificador se corresponde en cantidad (aunque no en que tipo de clase/movimiento fue) es intentar usar el método predict_proba(trialToPredict) del pipeline con un array que tenga el mismo shape que trialToPredict y comparar la cantidad de datos retornados por trialToPredict y la cantidad de clases a utilizar en la sesión.

Si estos datos discrepan, entonces la cantidad de clases que se pretende usar en la sesión no se corresponden con la cantidad de clases que se usaron durante la sesión de entrenamiento.

Importante: Este chequeo sólo permite saber si hay discrepancias en la cantidad de clases utilizadas durante el entrenamiento, pero no nos dice nada acerca de qué clases fueron las que se usaron, para esto se podría comparar los valores de las clases dentro del archivo de eventos pasado dentro de ConfigAPP y los Valores Clases seteados en la ConfigAPP.