Skip to main content

DataKhanon

License: MIT Python scikit-learn

Biblioteca de Ciência de Dados com API simples por fora e engenharia científica rigorosa por dentro.

Faça análise exploratória, corrija os dados, treine, avalie e exporte um modelo em poucos comandos — sem cair nas armadilhas científicas mais comuns (vazamento de dados, métricas enganosas para dados desbalanceados, etc.). Funciona bem em scripts, Jupyter e Google Colab.


Instalação

pip install datakhanon

Extras opcionais (não são necessários para o uso básico):

pip install "datakhanon[viz,explainer]"

Quickstart — 1 comando

import datakhanon as dk

res = dk.run("dados.csv", target="classe")   # inspeciona → processa → treina → avalia → salva
print(res.metrics)                            # métricas no holdout (SEM vazamento)
res.save("outputs/exp1")                      # run completo em disco
res.export("modelo.joblib")                   # modelo pronto p/ deploy

dk.run faz, na ordem cientificamente correta:

  1. inspeciona o dataset (nulos, duplicatas, outliers, balanceamento do alvo);
  2. separa treino/holdout ANTES de qualquer transformação;
  3. pré-processa (limpeza, imputação, encoding, scaling, seleção de features) reajustando tudo dentro dos folds da validação cruzada;
  4. treina e seleciona o melhor modelo (ou um ensemble);
  5. avalia no holdout com métricas apropriadas;
  6. salva modelo, schema, métricas e relatório.

A coluna alvo nunca entra nas features e o preprocessing nunca "vê" o conjunto de teste — as duas causas clássicas de métricas infladas.


Fluxo interativo (Jupyter / Colab)

Para analisar, corrigir e olhar os dados antes de treinar, use Dataset:

import datakhanon as dk

ds = dk.Dataset("dados.csv", target="classe")

# 1) Avaliar o dataset ANTES de mexer
ds.inspect()            # resumo + alertas (missing, duplicatas, outliers, desbalanceamento)
ds.head()               # olhar algumas linhas
ds.plot_missing()       # gráficos matplotlib (renderizam inline no notebook)
ds.plot_correlation()
ds.plot_target()

# 2) Ver e corrigir outliers
ds.outliers()               # onde estão (por coluna, IQR ou z-score)
ds.fix_outliers("clip")     # winsoriza; ou "remove" / "nan"
ds.clean(drop_dupes=True)   # remove duplicatas

# 3) Treinar (escolhendo o modo)
res = ds.run(models="best")        # melhor modelo por CV
# res = ds.run(models="ensemble")  # combina os melhores num Voting
# res = ds.run(models="rf")        # um modelo específico

# 4) Resultado estruturado
res.metrics            # dict de métricas
res.best_model_name
res.features           # features efetivamente usadas
res.plot()             # matriz de confusão (classif.) ou previsto-vs-real (regressão)

# 5) Salvar e exportar
res.save("outputs/exp1")
res.export("outputs/modelo.joblib")

Escolhendo o modelo

models= aceita:

  • "auto" / "best" — testa candidatos por validação cruzada e escolhe o melhor;
  • "ensemble" — combina os melhores candidatos num VotingClassifier/VotingRegressor;
  • o nome de um candidato — "logistic", "rf", "gb", "dt" (classificação); "linear", "rf_reg", "gb_reg", "dt_reg", "svr" (regressão);
  • um estimador do scikit-learn já configurado (ex.: RandomForestClassifier(...)).

A tarefa (classificação binária/multiclasse ou regressão) é detectada automaticamente a partir do alvo.


Métricas

Nunca dependa só de accuracy. Para classificação, res.metrics traz accuracy, balanced_accuracy, precision, recall, f1, mcc, e — quando há probabilidades — roc_auc, average_precision (PR-AUC) e log_loss. Para regressão: mse, rmse, mae, median_ae, r2 e mape (protegido contra divisão por zero).

A métrica de seleção do melhor modelo é escolhida com um default seguro por tarefa (roc_auc para binária, f1_macro para multiclasse, r2 para regressão) e pode ser trocada:

res = dk.run("dados.csv", target="classe", metric="average_precision")

Inferência com um modelo salvo

import datakhanon as dk
import pandas as pd

model = dk.load("outputs/exp1")            # carrega o pipeline (preprocessor + modelo)
novos = pd.read_csv("novos_dados.csv")
preds = model.predict(novos)               # o preprocessing salvo é reaplicado

CLI

datakhanon inspect dados.csv --target classe --save relatorio/
datakhanon run dados.csv --target classe --models auto --cv 5 --out outputs/exp1
datakhanon predict --run outputs/exp1 --data novos.csv --out predicoes.csv

Níveis de API

  1. Rápida — dk.run(...), dk.Dataset(...), dk.inspect(...), dk.load(...).
  2. Configurável — dk.Experiment(dk.ExperimentConfig(target=..., cv=..., metric=..., models=..., preprocess={...})).
  3. Baixo nível — componentes de sempre em datakhanon.preprocess (Preprocessor, encoders, imputers, FeatureEngineer, detect_outliers, handle_outliers), datakhanon.model (AutoTrainer, metrics, selector, persistence, exporter) e datakhanon.visualize.

A API antiga (Preprocessor, AutoTrainer, quick_experiment_*) continua funcionando — e o quick_experiment_* agora roda o fluxo sem vazamento.


Estrutura de um run salvo

outputs/exp1/
├─ config.json
├─ schema.json
├─ summary.json
├─ model/best_model.joblib
├─ eda/data_health_report.html
└─ predictions/predictions.csv

Desenvolvimento

pip install -e ".[dev]"
pytest                          # roda a suíte de testes (inclui testes de leakage)
pytest --cov=datakhanon --cov-report=term-missing

Licença e créditos

Licença: MIT. Autor: Vinicius de Souza Santos.

Metadata

Release files for datakhanon 0.2.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for datakhanon 0.2.0
File Size Uploaded Provenance
datakhanon-0.2.0.tar.gz 1.5 MB Without provenance Details

Built distribution (wheel)

Table of built distributions (wheels) for datakhanon 0.2.0
File Interpreter ABI Platform
datakhanon-0.2.0-py3-none-any.whl Python 3 none any Details

Total release size: 1.6 MB

Release files / datakhanon-0.2.0.tar.gz

Download URL datakhanon-0.2.0.tar.gz
Size 1.5 MB
Tags Source
SHA-256 checksum
How to use checksums
b56bf8703f3b0ee3dbdf8bb5c25f394669f11c3df9ae14e2723329bd0b2ad5c1
BLAKE2b-256 checksum
How to use checksums
618693ee767a790bdd7f71a1835a5885e51af257fe7f494d517fba270f05d1c0
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.13

Release files / datakhanon-0.2.0-py3-none-any.whl

Download URL datakhanon-0.2.0-py3-none-any.whl
Size 78.3 kB
Tags Python 3
SHA-256 checksum
How to use checksums
98d33e0d0a96f1d789b6d9bfe9b696bcc683f6f2af9814ea3207611950876743
BLAKE2b-256 checksum
How to use checksums
9265f3ccd8723d5a221ee0b830862c40c304de93401a4795ecae6a894a8eeb64
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.13

Security for datakhanon 0.2.0

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page