忘れないようにメモっとく

機械学習とかプログラミングとか。

kaggleにpythonを使ってみる(4) 〜 submission

予測結果を提出する。

これまでpandasやsklearnといったライブラリを利用して、予測モデルを作ってきたので提出までやってみる。
Make a submissionのページはこんな感じ。

f:id:Akiniwa:20130817200118p:plain

[ Clip or drop your submission here ] をクリックして、提出ファイルを選択する。
で、何を提出するんだろう(分からん)。
ファイルのフォーマットがよく分からないので、Get the Dataから、サンプルモデルを見てみる。例えば、gendermodel.pyは女性なら1、男性なら0を出力するとっても簡単なモデル。
これをtrain.csv、test.csvと同ディレクトリで実行すると、次のように出力される。

PassengerId,Survived
892,0
893,0
894,1
895,0
.....

一行目に列の名前を入れて、あとはカンマ区切りでPassengerIdとSurvivedを入力していくという、まあ普通のcsvのフォーマット。

ファイルを出力する部分↓↓

# 提出ファイルはtitanic_k.csv
f = csv.writer(open('titanic_k.csv', 'wb'))
# ヘッダーを出力。
f.writerow(["PassengerId","Survived"])

test_file_object = csv.reader(open('test.csv', 'rb'))
header = test_file_object.next()
ids = []

for row in test_file_object:
    # 本番用データの番号を抽出する。
    ids.append(row[0])

# 番号と生存を出力。
# outputはSurvivedの予測結果。0とか1のリスト。
f.writerows(zip(ids, output))

これで作られるのが、提出用ファイルのtitanic_k.csv。あとはkaggleにアップロードするだけ(wktk