記事「機械学習や取引におけるメタモデル:取引注文のオリジナルタイミング」についてのディスカッション - ページ 12

削除済み  
Aleksey Vyazmikin #:

また、idex値(0,1,2)をカレンダーの日付とどのように比較できるのか?

それらは比較されず、ただtimeカラムがインデックスに設定されなければなりません。

あなたのコードで次のようにハイライトしてみてください

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

これらは比較されず、ただtimeカラムがインデックスに設定されなければならない。

あなたのコードでハイライトされている

一般的に、私はすでに多くの時間を無駄にした。ファイルからのデータへの適応はうまくいかなかった。

どうやら、ゼロから書き直す方が簡単なようだ。

2回目の繰り返しで、マークアップ後にデータがどこかに消えてしまう。

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

基本的には、そうだ。

    # 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

最初の反復の後、どうやって1より大きな値を得ることができるのか理解できません。

従って、私はそうしないので、すべての値"
meta_labels
"は私のためにゼロにされる。
削除済み  
Aleksey Vyazmikin #:

基本的には、そうだ。

最初の反復の後、どうして1より大きな値が得られるのか理解できない。

だから、すべての" "の値がゼロになる。

集中する時間をください、後で解決します)。

 
Maxim Dmitrievsky #:

集中する時間をくれ、後で考えよう)あるいは、データセットの一部を送ってくれ

これはラフ・ドラフトだ。つまり、不均衡なクラスは、サブサンプルに分割するときにエラーにつながるということです。

カウントしている間は眠れる...。

後でサンプルをアップロードしてみます。
ファイル:
 
Maxim Dmitrievsky #:

これが そのサンプルだ。

それにしても、マークアップを完全に理解していなかったようだ。

 
Maxim Dmitrievsky #:

メタモデルはクラス "1 "の例を分類し、2つ目のモデルは1つ目のモデルのユニットにのみ有効化されるということですね?

モデルによってユニットとして分類されたものがゼロとして書かれています。もちろん、私が正しく理解していればですが...。

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

一般的に、もし私がこの方法を正しく再構築したのであれば、結果は次のようになります。

000

私はコードにチェックを加えました - さもなければエラーでクラッシュします - 添付されています。

モデルの解析がうまくいかないのは、モデルのコードが変更されたからですか?

ファイル:
削除済み  
Aleksey Vyazmikin #:

メタ・モデルは例をクラス「1」に分類し、2つ目のモデルは1つ目のモデルのユニットにのみ適用される、という理解で合っていますか?

モデルによってユニットとして分類されたものがゼロとして書かれています。もちろん、私が正しく理解していればですが...。

一般的に、私がメソッドを正しく復元した場合、結果は次のようになります。

コードにチェックを加えました - そうしないとエラーで失敗します - 添付してあります。

モデルのコードが変更されたため、モデルの解析がうまくいかないのですね?

x[0]は0クラスの確率ですが、モデルは2クラスの確率を与えます。つまり、ヌル・クラスの確率が0.5より小さければ、そのクラスが最初に予測されます。したがって、True == 1 となり、その逆も同様です。したがって、エラーはありません。

はい、新しいバージョンのcatbustには変更があります。今パソコンから少し離れているので、後でお手伝いします。
 
Maxim Dmitrievsky #:
はい、新バージョンのキャットバスタには変更があります。今パソコンから少し離れているので、後で手伝えるようにするよ。

ありがとう。

削除済み  
Aleksey Vyazmikin #:

ありがとう。

たぶん、あなたのデータセットではラベルが逆さまになっているのでしょう。