Discussão do artigo "Metamodelos em aprendizado de máquina e negociação: Tempo original das ordens de negociação" - página 12

[Excluído]  
Aleksey Vyazmikin #:

E como um valor idex (0,1,2) pode ser comparado a uma data de calendário?

Eles não são comparados, apenas a coluna de tempo deve ser definida como índice, e 0,1,2 não é necessário

Tente o destacado em seu código

def get_prices() -> pd.DataFrame:
    p = pd.read_csv('files/EURUSD_H1.csv', delim_whitespace=True)
    pFixed = pd.DataFrame(columns=['time', 'close'])
    pFixed['time'] = p['<DATE>'] + ' ' + p['<TIME>']
    pFixed['time'] = pd.to_datetime(pFixed['time'], format='mixed')
    pFixed['close'] = p['<CLOSE>']
    pFixed.set_index('time', inplace=True)
    pFixed.index = pd.to_datetime(pFixed.index, unit='s')
    pFixed = pFixed.dropna()
    pFixedC = pFixed.copy()

    count = 0
    for i in PERIODS:
        pFixed[str(count)] = pFixedC.rolling(i).mean() - pFixedC
        count += 1

    return pFixed.dropna()
 
Maxim Dmitrievsky #:

Elas não são comparadas, apenas a coluna de tempo deve ser definida como índice, e 0,1,2 não é necessário

tente o destacado em seu código

Em geral, já perdi muito tempo. A adaptação para dados de um arquivo não foi bem-sucedida.

Aparentemente, é mais fácil reescrever do zero.

Os dados desaparecem em algum lugar após a marcação na segunda iteração - não sei se é algum tipo de problema com o livro.

Уникальные значения в train_y (meta model): [0.]
Traceback (most recent call last):
  File "F:/FX/Python/meta_modeling_Viborka.py", line 504, in <module>
    res.append(brute_force(pr[pr.columns[1:]], bad_samples_fraction=0.5))
  File "F:/FX/Python/meta_modeling_Viborka.py", line 265, in brute_force
    meta_model.fit(train_X, train_y, eval_set=(test_X, test_y),
  File "C:\Program Files\Python38\lib\site-packages\catboost\core.py", line 5100, in fit
    self._fit(X, y, cat_features, text_features, embedding_features, None, sample_weight, None, None, None, None, baseline, use_best_model,
  File "C:\Program Files\Python38\lib\site-packages\catboost\core.py", line 2319, in _fit
    self._train(
  File "C:\Program Files\Python38\lib\site-packages\catboost\core.py", line 1723, in _train
    self._object._train(train_pool, test_pool, params, allow_clear_pool, init_model._object if init_model else None)
  File "_catboost.pyx", line 4645, in _catboost._CatBoost._train
  File "_catboost.pyx", line 4694, in _catboost._CatBoost._train
_catboost.CatBoostError: C:/Go_Agent/pipelines/BuildMaster/catboost.git/catboost/private/libs/target/target_converter.cpp:375: Target contains only one unique value
>>> 
Arquivos anexados:
 

Basicamente, sim, há uma zeragem acontecendo aqui

    # mark bad labels from bad_samples_book
    if BAD_SAMPLES_BOOK.value_counts().max() > 1:
        to_mark = BAD_SAMPLES_BOOK.value_counts()
        mean = to_mark.mean()
        marked_idx = to_mark[to_mark > mean*bad_samples_fraction].index
        pr2.loc[pr2.index.isin(marked_idx), 'meta_labels'] = 0.0
    else:
        pr2.loc[pr2.index.isin(BAD_SAMPLES_BOOK), 'meta_labels'] = 0.0

Não consigo entender como posso obter um valor maior que um após a primeira iteração?

Portanto, como não consigo, todos os valores "
meta_labels
" são zerados para mim.
[Excluído]  
Aleksey Vyazmikin #:

Basicamente, sim, há uma zeragem acontecendo aqui

Não consigo entender como posso obter um valor maior que um após a primeira iteração?

Portanto, como não entendo, todos os valores " " são zerados para mim.

Algo estranho está acontecendo. Dê-me tempo para me concentrar e descobriremos isso mais tarde) ou envie-me um pedaço do seu conjunto de dados.

 
Maxim Dmitrievsky #:

algo estranho está acontecendo. dê-me tempo para me concentrar, descobriremos isso mais tarde) ou envie-me uma parte de seu conjunto de dados

Este é um rascunho. Tive que resolver problemas que não ocorreram a você, ou seja, classes desbalanceadas levam a erros ao dividir em subamostras.

Enquanto isso conta, você pode dormir...

Tentarei carregar a amostra mais tarde.
Arquivos anexados:
 
Maxim Dmitrievsky #:

Aqui está um exemplo.

Ainda assim, acho que não entendi completamente a marcação.

 
Maxim Dmitrievsky #:

Entendo corretamente que o metamodelo classifica os exemplos com a classe "1", e o segundo modelo já está ativado somente nas unidades do primeiro?

Estou confuso com seu código - o que é classificado pelo modelo como uma unidade é escrito como um zero. Se eu entendi corretamente, é claro...

    p2 = [x[0] < 0.5 for x in p]
    p2_meta = [x[0] < 0.5 for x in p_meta]

Em geral, se eu tiver reconstruído corretamente o método, o resultado será o seguinte.

000

Adicionei verificações no código - caso contrário, ele trava com um erro - anexado.

E entendo que a análise do modelo não funciona, porque o código do modelo foi alterado?

Arquivos anexados:
[Excluído]  
Aleksey Vyazmikin #:

Entendo corretamente que o metamodelo classifica os exemplos com a classe "1", e o segundo modelo já está ativado somente nas unidades do primeiro?

Estou confuso com seu código - o que é classificado pelo modelo como uma unidade é escrito como um zero. Se eu entendi corretamente, é claro...

Em geral, se eu tiver restaurado corretamente o método, o resultado será o seguinte

Adicionei verificações no código - caso contrário, ele falhará com um erro - anexado.

E eu entendo que a análise do modelo não funciona porque o código do modelo foi alterado?

Lá x[0] são probabilidades para a classe nula, o modelo fornece probabilidades para duas classes. Ou seja, se a probabilidade da classe nula for menor que 0,5, então a classe é prevista primeiro. Portanto, True == 1 e vice-versa. Portanto, não há erro.

Sim, há alterações na nova versão do catbust, enviarei a você os novos designs. Estou um pouco longe do meu computador no momento, tentarei ajudá-lo mais tarde
 
Maxim Dmitrievsky #:
Sim, há mudanças na nova versão do catbusta, vou descontar os redesenhos. Estou um pouco longe do meu computador no momento, tentarei ajudar mais tarde

Obrigado.

[Excluído]  
Aleksey Vyazmikin #:

Obrigado.

Talvez em seu conjunto de dados os rótulos estejam de cabeça para baixo