LoginSignup
3
4

More than 5 years have passed since last update.

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

Last updated at Posted at 2017-10-29

はじめに

「大手ヘッジファンド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にチェックを入れて送信。

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

これから

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

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

3
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
4