はじめに
「大手ヘッジファンド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にチェックを入れて送信。
さて、成績はいかがでしたか?
これから
色々なモデルを試したり、ハイパーパラメータの調整をしたり、データから新しい特徴量を作って追加したり、やることいっぱいです(^-^)
でも、締め切りまでまだまだ時間がいっぱいあるので、みなさんどんどんチャレンジしてみましょう!!