機械学習
Python3
DeepAnalytics

DeepAnalyticsで開催されている金融モデリングチャレンジのサンプルコードを書いてみる

More than 1 year has passed since last update.


はじめに

「大手ヘッジファンドX: 金融モデリングチャレンジ」というタイトルでDeepAnalyticsのコンテストが開催されていますが、他のコンテストと異なり以下のような記載がありました。


他参加者との情報共有は可能

コンテスト参加者が他参加者と本コンテストの予測に関連するデータ・ソースコードを共有する行為は可能です。

ブログなどでの情報発信も行っていただいて構いません。


ということなので、初学者がはじめの第一歩を踏み出す一助となるべく、簡単なサンプルコードを公開してみます。

オプトDSL・DeepAnalyticsコンテスト『大手ヘッジファンドX: 金融モデリングチャレンジ』

ちなみに、懸賞の金額は1位が50万円です。


環境構築

言語はPython3で、ライブラリはscikit-learnを使用します。

手前味噌ではありますが、構築手順は以下のURLをご参照下さい。


データのダウンロード

以下のサイトでユーザー登録をし、データをダウンロードします。

ダウンロードしたらZipファイルを展開し、一つのフォルダに入れます。

オプトDSL・DeepAnalyticsコンテスト『大手ヘッジファンドX: 金融モデリングチャレンジ』


データの読込

import pandas as pd

# 学習データ
df_train = pd.read_csv("train.csv")

# テストデータ
df_test = pd.read_csv("test.csv")

# 投稿用データ
df_submit = pd.read_csv("sample_submit.csv", header=None)
df_submit.columns = ["data_id","target"]


学習データの作成

# 学習に使用する列の指定

X_cols = df_test.columns.tolist()[1:]
y_cols = ["target"]

# 入力と出力に分割
X = df_train[X_cols].as_matrix().astype("float")
y = df_train[y_cols].as_matrix().astype("int").flatten()


学習とスコアの確認

# 教師データを学習データと検証データに分割

from sklearn import model_selection
X_train, X_test, y_train, y_test = model_selection.train_test_split(X, y, test_size=.1)

# 学習
from sklearn.ensemble import RandomForestClassifier
model = RandomForestClassifier()
model.fit(X_train, y_train)
model.score(X_test,y_test)


予測

# テストデータで予測

X = df_test[X_cols].as_matrix().astype("float")
result = model.predict_proba(X)


投稿データの出力

# サンプルデータを書換

df_submit["target"] = pd.DataFrame(result)[[1]]

# CSV出力
df_submit.to_csv('submit.csv', header=None, index=None)


投稿

以下のURLにて、投稿するファイルを選択し、RandomForest、Pythonにチェックを入れて送信。

https://deepanalytics.jp/compe/53/subscription

さて、成績はいかがでしたか?


これから

色々なモデルを試したり、ハイパーパラメータの調整をしたり、データから新しい特徴量を作って追加したり、やることいっぱいです(^-^)

でも、締め切りまでまだまだ時間がいっぱいあるので、みなさんどんどんチャレンジしてみましょう!!