DataKhanon
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:
- inspeciona o dataset (nulos, duplicatas, outliers, balanceamento do alvo);
- separa treino/holdout ANTES de qualquer transformação;
- pré-processa (limpeza, imputação, encoding, scaling, seleção de features) reajustando tudo dentro dos folds da validação cruzada;
- treina e seleciona o melhor modelo (ou um ensemble);
- avalia no holdout com métricas apropriadas;
- 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 numVotingClassifier/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
- Rápida —
dk.run(...),dk.Dataset(...),dk.inspect(...),dk.load(...). - Configurável —
dk.Experiment(dk.ExperimentConfig(target=..., cv=..., metric=..., models=..., preprocess={...})). - Baixo nível — componentes de sempre em
datakhanon.preprocess(Preprocessor, encoders, imputers,FeatureEngineer,detect_outliers,handle_outliers),datakhanon.model(AutoTrainer,metrics,selector,persistence,exporter) edatakhanon.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)
| File | Size | Uploaded | Provenance | |
|---|---|---|---|---|
| datakhanon-0.2.0.tar.gz | 1.5 MB | Without provenance | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| 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.