Diskussion zum Artikel "Metamodelle für maschinelles Lernen und Handel: Ursprünglicher Zeitpunkt der Handelsaufträge" - Seite 12

 
Aleksey Vyazmikin #:

Und wie kann ein idex-Wert (0,1,2) mit einem Kalenderdatum verglichen werden?

Sie werden nicht verglichen, nur die Zeitspalte muss auf Index gesetzt werden, und 0,1,2 wird überhaupt nicht benötigt

Versuchen Sie das hervorgehobene in Ihrem Code

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 #:

Sie werden nicht verglichen, nur die Zeitspalte muss auf den Index gesetzt werden, und 0,1,2 ist überhaupt nicht erforderlich

Versuchen Sie das Hervorgehobene in Ihrem Code

Im Allgemeinen habe ich schon viel Zeit damit verbracht. Die Anpassung für Daten aus einer Datei war nicht erfolgreich.

Anscheinend ist es einfacher, den Code von Grund auf neu zu schreiben.

Die Daten verschwinden irgendwo nach dem Markup bei der zweiten Iteration - ich weiß nicht, ob das ein Problem mit dem Buch ist.

Уникальные значения в 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
>>> 
Dateien:
 

Im Grunde genommen, ja, findet hier eine Nullrunde statt

    # 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

Ich kann nicht verstehen, wie ich nach der ersten Iteration einen Wert größer als eins erhalten kann?

Da ich das nicht tue, werden alle Werte "
meta_labels
" für mich auf Null gesetzt.
 
Aleksey Vyazmikin #:

Im Grunde genommen, ja, findet hier eine Nullrunde statt

Ich kann nicht verstehen, wie ich nach der ersten Iteration einen Wert größer als eins erhalten kann?

Da ich es nicht verstehe, werden alle " " Werte für mich auf Null gesetzt.

Irgendetwas Seltsames geht hier vor. Geben Sie mir Zeit, mich zu konzentrieren, wir werden es später herausfinden) oder schicken Sie mir einen Teil Ihres Datensatzes.

 
Maxim Dmitrievsky #:

Irgendetwas Seltsames geht hier vor sich. Geben Sie mir Zeit, mich zu konzentrieren, wir werden es später herausfinden) oder senden Sie mir einen Teil Ihres Datensatzes

Dies ist ein grober Entwurf. Ich musste Probleme lösen, die Ihnen nicht aufgefallen sind, nämlich dass unausgewogene Klassen zu Fehlern bei der Aufteilung in Teilstichproben führen.

Solange es zählt - können Sie schlafen...

Ich werde versuchen, die Probe später hochzuladen.
Dateien:
 
Maxim Dmitrievsky #:

Hier ist ein Beispiel.

Trotzdem habe ich das Markup wohl nicht ganz verstanden.

 
Maxim Dmitrievsky #:

Verstehe ich das richtig, dass das Metamodell Beispiele mit der Klasse "1" klassifiziert und das zweite Modell bereits nur bei Einheiten des ersten aktiviert ist?

Ich bin nur verwirrt von deinem Code - was vom Modell als Einheit klassifiziert wird, wird als Null geschrieben. Wenn ich es richtig verstanden habe natürlich...

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

Generell, wenn ich die Methode richtig rekonstruiert habe, ist das Ergebnis wie folgt.

000

Ich habe Überprüfungen in den Code eingebaut - sonst stürzt er mit einem Fehler ab - anbei.

Und ich verstehe, dass das Parsen des Modells nicht funktioniert, weil sich der Modellcode geändert hat?

Dateien:
 
Aleksey Vyazmikin #:

Verstehe ich das richtig, dass das Metamodell Beispiele mit der Klasse "1" klassifiziert, und das zweite Modell bereits nur auf Einheiten des ersten aktiviert wird?

Ich bin nur verwirrt durch Ihren Code - was vom Modell als Einheit klassifiziert wird, wird als Null geschrieben. Wenn ich es richtig verstehe, natürlich...

Im Allgemeinen, wenn ich die Methode richtig wiederhergestellt habe, ist das Ergebnis wie folgt

Ich habe Überprüfungen in den Code eingefügt - andernfalls schlägt er mit einem Fehler fehl - im Anhang.

Und ich verstehe, dass das Parsen des Modells nicht funktioniert, weil der Modellcode geändert wurde?

Da x[0] Wahrscheinlichkeiten für die Nullklasse sind, gibt das Modell Wahrscheinlichkeiten für zwei Klassen an. Das heißt, wenn die Wahrscheinlichkeit für die Nullklasse kleiner als 0,5 ist, dann wird diese Klasse zuerst vorhergesagt. Also ist Wahr == 1 und umgekehrt. Es liegt also kein Fehler vor.

Ja, es gibt Änderungen in der neuen Version von catbust, ich schicke Ihnen die neuen Entwürfe. Ich bin im Moment etwas von meinem Computer entfernt, ich werde versuchen, Ihnen später zu helfen.
 
Maxim Dmitrievsky #:
Ja, es gibt Änderungen in der neuen Version der catbusta, ich werde die Umgestaltungen nicht berücksichtigen. Bin im Moment etwas von meinem Computer entfernt, werde versuchen, später zu helfen

Danke!

 
Aleksey Vyazmikin #:

Ich danke Ihnen.

Vielleicht sind in Ihrem Datensatz die Beschriftungen verkehrt herum