Aprendizado de máquina no trading: teoria, prática, negociação e não só - página 2477

 

Para os interessados, aqui está um roteiro para equilibrar classes em um problema de classificação.

O balanceamento é baseado na reamostragem da amostra original utilizando o modelo de mistura Gaussiano. Aconselho a usá-la, porque nos conjuntos de dados locais as etiquetas de classe raramente são equilibradas.

Poupa muito tempo e nervosismo.

import pandas as pd
from sklearn import mixture
import numpy as np

class GMM(object):
    def __init__(self, n_components):
        self.gmm = mixture.GaussianMixture(
                                            n_components=n_components,
                                            covariance_type='full', verbose=0,
                                            max_iter=1000,
                                            tol=1 e-4,
                                            init_params='kmeans')
        self.name_col = []
        # print("GMM_model -- create")


    def fit_data(self, data):
        self.name_col =  data.columns
        self.gmm.fit(data)
        # print("GMM_model -- fit comlite")

    def get_samples(self, n_samp):
        generated = self.gmm.sample(n_samp)
        gen = pd.DataFrame(generated[0])
        for c in range(len(self.name_col)):
            gen.rename(columns={gen.columns[c]: self.name_col[c]}, inplace=True)

        return gen

def get_balance_dataset(X,Y, gmm=30,num_samples= 200, frac=1):
        '''
        X -             features
        Y -             targets [0,1]
        gmm -           number of mixture components
        num_samples -   number of samples for each class
        num_samples -   percentage of a random number of samples from the original sampling


        '''
    name_targ = Y.columns
    X_out = pd.DataFrame()
    Y_out = pd.DataFrame()
    for index,name in enumerate(name_targ):
        prt_data = pd.concat([X, Y[name]], axis=1)
        if frac!=1:
            prt_data = prt_data[prt_data[name] == 1].drop(columns=[name]).sample(frac=frac)
        else:
            prt_data = prt_data[prt_data[name] == 1].drop(columns=[name])

        gmm_1 = GMM(n_components=gmm)
        gmm_1.fit_data(prt_data)
        sig_X = gmm_1.get_samples(num_samples)
        sig_Y = np.zeros((num_samples, len(name_targ)))
        sig_Y[:, index] = 1
        sig_Y = pd.DataFrame(sig_Y, columns=name_targ)
        X_out = pd.concat([X_out, sig_X], axis=0)
        Y_out = pd.concat([Y_out, sig_Y], axis=0)

    return X_out.to_numpy(), Y_out.to_numpy()
 
iwelimorn #:

Para os interessados, aqui está um roteiro para equilibrar classes em um problema de classificação.

O balanceamento é baseado na reamostragem da amostra original utilizando o modelo de mistura Gaussiano. Aconselho a usá-lo, porque nos conjuntos de dados locais as etiquetas de classe raramente são equilibradas.

Poupa muito tempo e nervosismo.

Não há bíblias normais em python para isto?

 
mytarmailS #:

Não há nenhuma biblioteca padrão em Python para isto?

Provavelmente há, mas ainda não encontrei nenhum.

 
iwelimorn #:

Para os interessados, aqui está um roteiro para equilibrar classes em um problema de classificação.

O balanceamento é baseado na reamostragem da amostra original utilizando o modelo de mistura Gaussiano. Aconselho a usá-la, porque nos conjuntos de dados locais as etiquetas de classe raramente são equilibradas.

Poupa muito tempo e nervosismo.

Acho que temos de especificar isso, ao resolver problemas de classificação com redes neurais.
As florestas e os reforços não requerem equilíbrio.

 
iwelimorn #:

Provavelmente há bibliotecas como esta, mas ainda não encontrei nenhuma.

Estou a ver... É que R-ka tem toneladas de coisas para MO, e python é posicionado como uma linguagem para MO, e não tem nada além de 2-3 bibliotecas desbloqueadas.

Isto não é compreensível((

 
elibrarius #:

Penso que temos de esclarecer isso, ao resolver problemas de classificação com redes neurais.
As florestas e os reforços não requerem equilíbrio.

Talvez.

 
mytarmailS #:

Estou a ver... É que R-ka tem muitas coisas para MO, e python é posicionado como uma linguagem para MO, e não tem nada além de 2-3 binários desbloqueados.

Eu não entendo ((

Não estou familiarizado com R, estudo MO como eletivo e estou apenas no início do meu desespero no desfiladeiro com Daning-Krueger.

[Excluído]  
mytarmailS #:

Não há bíblias normais em python para isto?

Há uma bíblia usada ali, apenas embrulhada
[Excluído]  
iwelimorn #:

Para os interessados, aqui está um roteiro para equilibrar classes em um problema de classificação.

O balanceamento é baseado na reamostragem da amostra original utilizando o modelo de mistura Gaussiano. Aconselho a usá-la, porque nos conjuntos de dados locais as etiquetas de classe raramente são equilibradas.

Poupa muito tempo e nervosismo.

Na minha opinião, há aqui mais uma normalização do que um efeito de equilíbrio. Mais a amostragem das distribuições ajuda contra o sobretreinamento
 
iwelimorn #:

o início da viagem para o desfiladeiro do desespero

))) Tudo vai ficar bem!