Tabular Classification
Joblib
Keras
Portuguese
English
scikit-learn
medical
xgboost
random-forest
genetic-algorithm
arbovirus
dengue
zika
chikungunya
glaucoma
image-classification
cartesi
risc-v
Instructions to use bisnet0/episcope-arbovirus-ml with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Libraries
- Keras
How to use bisnet0/episcope-arbovirus-ml with Keras:
# !pip install -U keras tensorflow huggingface_hub # Keras needs TensorFlow installed to read "hf://" paths, so the tensorflow backend is selected here; # "jax" and "torch" also work for computation once TensorFlow is installed. import os os.environ["KERAS_BACKEND"] = "tensorflow" import keras model = keras.saving.load_model("hf://bisnet0/episcope-arbovirus-ml") - Notebooks
- Google Colab
- Kaggle
EpiScope β arbovirus & glaucoma diagnostic models
Model artifacts produced by EpiScope, a clinical decision-support system for arboviruses (dengue, zika, chikungunya) and glaucoma. The same models are served by a Flask/GraphQL API and β for the Web3 build β inside the Cartesi Machine (RISC-V), so a diagnosis can be executed and verified on-chain instead of being trusted.
EpiScope won 1st place in the Cartesi Rollups Challenge (Cartesi Β· UFBA Β· Tomorrow Β· Positivo Tecnologia, 2025).
Tabular models (symptom + lab triage)
| file | estimator | notes |
|---|---|---|
tabular/randomforest.joblib |
RandomForestClassifier | 100 trees, 15 features, 3 classes |
tabular/xgboost_standard.joblib |
XGBClassifier | 100 estimators, default search |
tabular/xgboost_genetic.joblib |
XGBClassifier | 188 estimators, hyperparameters found by a genetic algorithm (see metadata/best_hyperparameters.json) |
tabular/xgboost_model.joblib |
XGBClassifier | deployed model served by the API |
tabular/decisiontree.joblib |
DecisionTreeClassifier | interpretable baseline / rule extraction |
- Input features (15): febre, mialgia, cefaleia, exantema, vomito, nausea, dor_costas, conjuntvit, artrite, artralgia, petequia_n, leucopenia, dor_retro, sexo_encoded, idade
- Target classes: 1=dengue, 0=zika, 2=chikungunya
- Genetic search result:
n_estimators=188, max_depth=3, learning_rate=0.1487, subsample=0.951, colsample_bytree=0.622, gamma=1.5385
import joblib, json
cols = json.load(open("metadata/model_columns.json"))
model = joblib.load("tabular/xgboost_genetic.joblib")
# X = [[...]] ordered exactly as `cols`
# print(model.predict_proba(X)) # [zika, dengue, chikungunya]
Glaucoma CNN
glaucoma/glaucoma_cnn_model.h5 β Keras CNN, input 224Γ224, binary classification
(Glaucomatous / Normal), see metadata/glaucoma_info.json.
How the models are used
- Symptom/lab payload or a fundus image comes in through the API.
- The tabular model and/or the CNN produce a diagnosis with per-class probabilities.
- Google Gemini narrates the result and explains the reasoning in natural language.
- In the DApp build, the same inference runs inside the Cartesi Machine and the result is committed through rollups β a verifiable, tamper-evident medical opinion.
Limitations
- Decision support only, not a diagnostic device; no clinical validation or regulatory clearance.
- Trained on public epidemiological data (symptom/lab surveillance), which is skewed to notified cases β prevalence in an unselected population differs.
- The tabular models consume exactly the 15 features listed above; missing values must be handled upstream.