Skip to main content

itmofs-lab

Uma interface simples, uniforme e honesta para seleção de características com a ITMO_FS.
Todos os métodos com a mesma API, um comando de ajuda que mostra o que entra e o que sai, e documentação completa.

Python License PyPI Status


Índice


Motivação

A ITMO_FS é uma biblioteca rica em métodos de feature selection (filtros, ensembles, wrappers), mas sua API é heterogênea: algumas medidas são funções, outras são classes; umas usam fit/transform, outras run/feature_ranking; as regras de corte operam sobre dicionários; e há particularidades de versão que só aparecem na execução.

O itmofs-lab resolve isso oferecendo:

  • API única — todo método se usa com fit / transform e expõe selected_, selected_names_ e scores_.
  • Comando de ajuda (itmofs-lab info <método>) que descreve exatamente o que entra (X, y, pré-processamento, parâmetros) e o que sai (score, ranking, subconjunto).
  • Um arquivo por método, importável isoladamente.
  • Honestidade sobre compatibilidade — métodos que não executam na versão instalada ficam catalogados e documentados, e levantam um erro claro em vez de falhar de forma obscura.
  • Rigor científico — projetado para que o conjunto de teste nunca participe da seleção.

Instalação

pip install itmofs-lab

Recomendação de ambiente. A ITMO_FS 0.3.3 é de ~2021. Para os métodos rodarem sem erros de runtime, use versões compatíveis das dependências:

pip install "numpy<2" "pandas<2" "scikit-learn<1.4" itmofs-lab

Uso em 30 segundos

import itmofs_lab as fs
from sklearn.datasets import load_breast_cancer
from sklearn.model_selection import train_test_split

X, y = load_breast_cancer(return_X_y=True)
X_tr, X_te, y_tr, y_te = train_test_split(X, y, stratify=y, random_state=42)

m = fs.get("gini_index", k=10)      # escolha o método pelo nome
m.fit(X_tr, y_tr)                   # ajusta SÓ no treino (anti-leakage)
X_tr_sel = m.transform(X_tr)
X_te_sel = m.transform(X_te)        # aplica as mesmas colunas ao teste

print(m.selected_)                  # índices selecionados
print(m.selected_names_)            # nomes (se passar feature_names no fit)
print(m.scores_)                    # scores por feature (ou None)

Comando de ajuda: o que entra e o que sai

Na linha de comando:

itmofs-lab list                     # todos os métodos + status
itmofs-lab families                 # métodos agrupados por família
itmofs-lab info gini_index          # o que entra e o que sai deste método
itmofs-lab run gini_index --dataset breast_cancer -k 10
itmofs-lab version

Exemplo de saída de itmofs-lab info chi2_measure:

Método: Chi-squared  [chi2_measure]
Família: filters.univariate  |  tipo: score_function
Status na ITMO_FS 0.3.3: OK — Executa normalmente.

ENTRA:
  X: sim
  y: obrigatório
  pré-processamento: dados não negativos (X>=0); escala recomendada: minmax
  parâmetros:
    - k: nº de features a manter (cutting rule 'K best')
    - ...

SAI:
  scores por feature; ranking; subconjunto selecionado; transforma treino e teste
  atributos após fit: selected_, selected_names_, scores_

No Python: fs.info("chi2_measure"), fs.list_methods(family="ensembles"), fs.get("chi2_measure").info().

Um arquivo por método

Cada método também é importável isoladamente:

from itmofs_lab.filters.univariate.gini_index import GiniIndex
from itmofs_lab.ensembles.WeightBased import WeightBased

m = GiniIndex(k=10)                 # equivalente a fs.get("gini_index", k=10)
print(GiniIndex.info())

Catálogo de métodos

Cobertura de todas as famílias da ITMO_FS:

Família Exemplos Métodos
Filtros univariados gini_index, f_ratio_measure, su_measure, chi2_measure, information_gain, reliefF_measure, correlações 15
Filtros multivariados MRMR, JMI, CMIM, CIFE, DCSF, MIM, FCBFDiscreteFilter, STIR, TraceRatioFisher 17
Filtros esparsos MCFS, UDFS, NDFS, RFS, SPEC 5
Filtros não supervisionados TraceRatioLaplacian 1
Ensembles WeightBased, Mixed, BestSum 3
Híbridos Melif, FilterWrapperHybrid 2
Embedded MOS 1
Wrappers BackwardSelection, SequentialForwardSelection, ... 7

Veja o catálogo completo, com o que entra / o que sai de cada método, na pasta docs/.

Regra científica: anti-leakage

O conjunto de teste nunca participa da seleção de características:

dataset → split treino/teste → preprocessing.fit(treino) → seletor.fit(treino)
        → transform(treino) e transform(teste) → classificador → avaliação no teste

Portanto: chame fit apenas com X_train (e y_train quando supervisionado); aplique transform ao teste depois; e escolha k/threshold somente por validação cruzada dentro do treino. Qualquer uso do teste na seleção é considerado vazamento de dados (data leakage).

Sobre o projeto

O itmofs-lab nasceu de um estudo prático, sistemático e reprodutível da biblioteca ITMO_FS, no contexto de pesquisa de pós-graduação sobre Ensemble Feature Selection. Cada método foi inspecionado em tempo de execução (assinatura real, atributos após fit, requisitos de dados) e exercitado em datasets didáticos, respeitando a regra anti-leakage. O resultado desse estudo foi consolidado neste pacote: uma camada fina, uniforme e documentada sobre a ITMO_FS, que preserva o comportamento nativo da biblioteca e apenas padroniza o uso — sem inventar scores, sem mascarar erros e sem alterar o pacote original.

Compatibilidade

Alguns métodos presentes na API da ITMO_FS 0.3.3 não executam nesta versão por bugs da própria biblioteca, dependências externas ausentes ou design que exigiria o conjunto de teste no ajuste. Esses métodos permanecem catalogados e documentados e, ao serem chamados, levantam NotSupportedError com o motivo:

Situação Exemplos
Bug na biblioteca 0.3.3 fit_criterion_measure, RecursiveElimination, TPhMGWO, HillClimbingWrapper
Dependência ausente qpfs_filter (requer solver de QP)
Design com vazamento SimulatedAnnealing (exige teste no fit)

Nada é mascarado: o status de cada método é explícito em itmofs-lab list e na documentação.

Documentação

  • Markdown: um arquivo por método em docs/methods/ + índice em docs/catalog.md.

  • Site (MkDocs Material):

    pip install mkdocs mkdocs-material
    mkdocs serve         # http://127.0.0.1:8000
    

Como citar

@software{santos_itmofs_lab,
  author  = {Santos, Vinicius de Souza},
  title   = {itmofs-lab: uma interface uniforme e documentada para seleção de características com a ITMO_FS},
  year    = {2026},
  url     = {https://github.com/ViniciusKanh/itmofs-lab}
}

Autor

Vinicius de Souza Santos Aluno de pós-graduação — Universidade Estadual Paulista (UNESP), Rio Claro ✉️ vinicius-souza.santos@unesp.br

Licença

Distribuído sob a licença MIT. Veja LICENSE.

Este pacote é uma camada de conveniência sobre a ITMO_FS, que possui sua própria licença e autores; o itmofs-lab não redistribui nem modifica o código da ITMO_FS.

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

itmofs_lab-0.1.0.tar.gz (35.5 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

itmofs_lab-0.1.0-py3-none-any.whl (72.4 kB view details)

Uploaded Python 3

File details

Details for the file itmofs_lab-0.1.0.tar.gz.

File metadata

  • Download URL: itmofs_lab-0.1.0.tar.gz
  • Upload date:
  • Size: 35.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/7.0.0 CPython/3.13.13

File hashes

Hashes for itmofs_lab-0.1.0.tar.gz
Algorithm Hash digest
SHA256 7d2024af2961135f53db555759d1f8e6a0c512b4535b193c7a573985bd2f85c6
MD5 c1222b4bfe99d7b9a010346e3551441c
BLAKE2b-256 3c5f4fe3d4324c5221eb0ecb3ffb39bb056a8ecd3800eff1d443d834417c7808

See more details on using hashes here.

File details

Details for the file itmofs_lab-0.1.0-py3-none-any.whl.

File metadata

  • Download URL: itmofs_lab-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 72.4 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/7.0.0 CPython/3.13.13

File hashes

Hashes for itmofs_lab-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 4aa4b21f350d8e2b17a5dd1a7d6be91f410fd29c10a0c0a890881ba2cb9a9222
MD5 6faa7349e5a610629a63901ab7350295
BLAKE2b-256 5c468b4b9001fb836861cbd273135a4ef25a9fb4c48bdd93ac98048ae7be67d2

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page