Scénario de test & Cas d'usage
Clasificación utilizando redes bayesianas.
Descubrir todas las acciones de bayesianNetClassifierCrea una tabla de gran volumen (50,000 pacientes) con síntomas (nominales) y resultados de pruebas (intervalo). La variable objetivo es el diagnóstico final.
| 1 | DATA casuser.PACIENTES_DIAGNOSTICO; |
| 2 | call streaminit(1234); |
| 3 | LENGTH Fiebre $ 6 Tos $ 2 Dolor_Cabeza $ 7 Diagnostico $ 12; |
| 4 | DO i = 1 to 50000; |
| 5 | Fiebre = ifn(rand('uniform') < 0.4, 'Alta', 'Normal'); |
| 6 | Tos = ifn(rand('uniform') < 0.5, 'Si', 'No'); |
| 7 | Dolor_Cabeza = ifn(rand('uniform') < 0.3, 'Intenso', 'Leve'); |
| 8 | Presion_Arterial = 90 + 60 * rand('uniform'); |
| 9 | Nivel_Colesterol = 150 + 100 * rand('uniform'); |
| 10 | IF (Fiebre='Alta' and Tos='Si' and Presion_Arterial > 130) THEN Diagnostico = 'Enfermedad_X'; |
| 11 | ELSE IF (Dolor_Cabeza='Intenso' and Nivel_Colesterol > 220) THEN Diagnostico = 'Enfermedad_Y'; |
| 12 | ELSE Diagnostico = 'Sano'; |
| 13 | OUTPUT; |
| 14 | END; |
| 15 | RUN; |
| 1 | PROC CAS; |
| 2 | TABLE.loadTable / |
| 3 | caslib='CASUSER' path='PACIENTES_DIAGNOSTICO.sashdat' casout={name='PACIENTES_DIAGNOSTICO', replace=true}; |
| 4 | RUN; |
| 1 | PROC CAS; |
| 2 | bayesianNetClassifier.bnet / |
| 3 | TABLE={name='PACIENTES_DIAGNOSTICO'}, |
| 4 | target='Diagnostico', |
| 5 | inputs={{name='Fiebre'}, {name='Tos'}, {name='Dolor_Cabeza'}, {name='Presion_Arterial'}, {name='Nivel_Colesterol'}}, |
| 6 | nominals={'Fiebre', 'Tos', 'Dolor_Cabeza', 'Diagnostico'}, |
| 7 | partByFrac={validate=0.3, seed=5678}, |
| 8 | structures={'TAN', 'PC'}, |
| 9 | maxParents=2, |
| 10 | parenting='BESTSET', |
| 11 | numBin=5, |
| 12 | bestModel=true, |
| 13 | outNetwork={name='RED_DIAGNOSTICO', replace=true}, |
| 14 | saveState={name='MODELO_DIAGNOSTICO_OPTIMO', replace=true}; |
| 15 | RUN; |
La acción debe ejecutarse sin problemas de rendimiento, evaluar los modelos TAN y PC en el conjunto de validación y seleccionar el mejor. Se deben crear las tablas `MODELO_DIAGNOSTICO_OPTIMO` (el estado del modelo ganador) y `RED_DIAGNOSTICO` (la estructura de red del modelo ganador). Los resultados en el log deben indicar claramente qué estructura y parámetros fueron seleccionados como los mejores.