ファイナンス機械学習:分数次差分をとった特徴量 練習問題 E-mini S&P ドルバーの対数価格累積分数次差分へのトリプルバー 決定木
前記事でトリプルバーを適用して得たラベルを、決定木バギング分類器を使ってフィッティングするが、ここでは、sklearn.ensembleのbaggingClassifierの引数の一つmax_samplesに、ラベルの平均独自性を重みとして与える。
max_samplesは、渡される値が整数$${n}$$であった場合は、特徴量$${X}$$から、$${n}$$個のサンプルをブートストラップ法でサンプリングし、値が実数$${r}$$であれば、$${X.shape[0]\time r}$$個のサンプルをブートストラップ法でサンプリングする。決定木のパラメータ、テストデータ、トレーニングデータは前記事と同じとする。
nCoEvent=wg.getNumCoEvents(dfEvents.index,t1,dfEvents.index)
TW=wg.getSampleTW(t1,nCoEvent,dfEvents.index)
from sklearn.ensemble import BaggingClassifier
skl_bag = BaggingClassifier(estimator = tree,
n_estimators = n_estimate, # the number of trees as a estimate
max_samples = TW.mean(), #if you put max_sample = 1.0, pls mentally get ready to wait
max_features = 1.0,
bootstrap = True, #must always be True
bootstrap_features=False,
oob_score = True, # You will need to have bootstrap = True
warm_start = False,
n_jobs = 1, # For parallel computering, -1 means use all
random_state = random_state, #seed figure
verbose = 0)
# Fit and score
skl_bag.fit(X_train, y_train)
print(f'RF OOB accuracy: {skl_bag.oob_score_}')
y_sklpred = skl_bag.predict(X_test)
y_sklprob = skl_bag.predict_proba(X_test)[:,1]
print(classification_report(y_true=y_test, y_pred=y_sklpred))
fpr, tpr, thresholds = roc_curve(y_test, y_sklprob)
roc_auc = auc(fpr, tpr)
plt.plot(fpr,tpr,label=' ROC area = %0.2f' %(roc_auc))
この記事が気に入ったらサポートをしてみませんか?