Skip to main content

A brute-force based way of fiding the best ratio for your data. Focused on Tree models.

Project description

DataScience Suite

Este pacote tem o objetivo de agregar os diversos códigos autorais que criamos para todo o pipeline de produção dos modelos. Atualmente é apenas um teste e possui apenas a library dssuite(ring.py) com algumas funções que facilitam leitura, tuning e avaliação dos modelos.

Documentação rudimentar

SampleStress(Classe)

Classe que permite fazer brute force de dataset para identificar melhor amostra de treino, razão de True/False e melhores Hyperparametros. É composta por 3 funções construtoras e utiliza várias outras presentes dentro desse pacote. Para avaliar o modelo é possível usar função de scoring do próprio Sklearn ou criar o seu próprio parametro de avaliação. Para fazer isso, ver maiores informações na documentação do sklearn: https://scikit-learn.org/stable/modules/generated/sklearn.metrics.make_scorer.html Dentro desse pacote temos a custom_confusion que foi feita para ser usada no maker_scorer do SKlearn

Algumas explicações de parâmetros da classe:

  • model: Modelo a ser otimizado
  • iterations: Número de rodadas de iteração a serem realizadas, quanto mais rodadas mais tempo vai demorar!(exponencial)
  • ratio: ritmo de evolução da proporção True/False entre as iterações. Ex.: Iterações = 10, ratio = 1 então ao todo 10 tamanhos de amostras serão testadas e para cada uma dessas 10 amostras, 10 razões de proporção entre True/False vão ser testadas. Total de rodadas de otimização do exemplo: 100
  • scorer: Aceita 'recall', 'precision', 'f1' e etc.. Aceita função própria.
  • regression: A classe de sample_stressing, por padrão, foca em modelos de classificação porém é possível usar ela para modelos de regressão também.
  • drop : Lista de colunas a serem dropadas do dataset final, se não existir nenhuma só ignorar.

Resample

Função usada pela classe SampleStress para gerar as amostras com diferentes tamanhos e razões de target

def resample(dataframe, sample_ratio=1, sample_size=0):
    header = dataframe.columns
    positives = (dataframe.loc[dataframe['target']==1]).to_numpy()
    pos_ratio = int(sample_size/(sample_ratio+1))
    if sample_size>0:
        if pos_ratio < len(positives):
            positives = positives[:pos_ratio]
        else:
            iterations = int(pos_ratio/len(positives))
            r = int(((pos_ratio/len(positives)) % 1)*len(positives))
            temp = positives
            for i in range(iterations-1):
                temp = np.append(temp, positives, axis=0)
            positives = np.append(temp, positives[:r], axis=0)
        sample_size=len(positives)
    else:
        sample_size = len(positives)
    positives = pd.DataFrame(positives)
    positives.columns = header
    neg_ratio = sample_size*sample_ratio
    negatives = (dataframe.loc[dataframe['target']==0])[:neg_ratio].to_numpy()
    negatives = pd.DataFrame(negatives)
    negatives.columns = header
    return negatives.append(positives).reset_index().drop(columns=['index'])

DataBuilder

Para datasets muito grandes, construí essa classe que tem duas funções que iteram pelo dataframe e fazem o tratamento dos dados para tornar o dataset mais leve e reduzir o consumo de memória ram. Isso acelera muito o tempo de manipulação dos dados pois impede que os dados vazem para armazenamento mais lento como HD/SSD

A classe ainda está "especializada" para o caso que foi construída, isso é rápido de ajeitar e é o próximo passo para ela. Por esse motivo ainda não vou colocar mais detalhes.

Project details


Download files

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

Source Distribution

ds-suite-1.0.7.tar.gz (7.6 kB view details)

Uploaded Source

Built Distribution

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

ds_suite-1.0.7-py3-none-any.whl (9.4 kB view details)

Uploaded Python 3

File details

Details for the file ds-suite-1.0.7.tar.gz.

File metadata

  • Download URL: ds-suite-1.0.7.tar.gz
  • Upload date:
  • Size: 7.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.1 importlib_metadata/3.10.0 pkginfo/1.7.0 requests/2.25.1 requests-toolbelt/0.9.1 tqdm/4.59.0 CPython/3.8.8

File hashes

Hashes for ds-suite-1.0.7.tar.gz
Algorithm Hash digest
SHA256 54b366bfd67787a9c45cec518cc45836a3ded784b4e234bf646ffd9a33bdba2c
MD5 5e06a590f1cdc1b79b1fbc31f86221bc
BLAKE2b-256 84f983f8bdeff9584e3c30f62f7193b1d5c907ad7a5c7eb74a6b89740cfc0824

See more details on using hashes here.

File details

Details for the file ds_suite-1.0.7-py3-none-any.whl.

File metadata

  • Download URL: ds_suite-1.0.7-py3-none-any.whl
  • Upload date:
  • Size: 9.4 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.1 importlib_metadata/3.10.0 pkginfo/1.7.0 requests/2.25.1 requests-toolbelt/0.9.1 tqdm/4.59.0 CPython/3.8.8

File hashes

Hashes for ds_suite-1.0.7-py3-none-any.whl
Algorithm Hash digest
SHA256 5910e96bc22a39bc599178f78b1bb98e7539f7a4c175017e8b5bbf24f34f7537
MD5 6214b8f6ccbb45598f54cdceedac7aec
BLAKE2b-256 477584fa53c2d6eb7f5ad8458f62cc637805d610abf6284dbb836b6b372ee68d

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 Pingdom Monitoring Sentry Error logging StatusPage Status page