彷徨うおのこ

死ぬまで死なないぜ おれは

Python(AI実装プログラム言語)で、titanic号の生存者予測を行いました。(Python,Data Analytics)

みなさまこんにちは。休日はいかがお過ごしでしょうか?
僕は需要予測のモデル分析を行いましたので、結果とやり方を共有します。

[概要]
-kaggleとは?(https://www.kaggle.com)
データサイエンティストのコンペティションサイト。企業が案件を出して、賞金も出るのでモチベーションあがりやすい。
今回は、上記サイトのtutorialであるtitanicの生存者/死亡者を各人の特徴(年齢、性別、いた場所など)から割り出すモデルを作成しました。

-使用言語:Python
AIプログラム、データ解析、WEBアプリ作成、データスクレイピングなど多様な用途に用いられているプログラミング言語アメリカでは、今一番hotな言語だとか、そうでないとか...

[実装]
-まず、データの読み込みと単純な分割。
import pandas as pd
import matplotlib.pyplot as plt
df = pd.read_csv("train.csv").replace("male",0).replace("female",1)

-欠損値の補完
df["Age"].fillna(df.Age.median(), inplace=True)

-データ整形(大家族の生存率は低いという状況考慮)
df["FamilySize"] = df["SibSp"] + df["Parch"] + 1
df2 = df.drop(["Name", "SibSp", "Parch", "Ticket", "Fare", "Cabin", "Embarked"], axis=1)

-データを学習させる
train_data = df2.values
xs = train_data[:, 2:]
y  = train_data[:, 1]

-予測モデル構築
from sklearn.ensemble import RandomForestClassifier
forest = RandomForestClassifier(n_estimators = 100)

forest = forest.fit(xs, y) #学習してる

test_df= pd.read_csv("test.csv").replace("male",0).replace("female",1)

test_df["Age"].fillna(df.Age.median(), inplace=True)
test_df["FamilySize"] = df["SibSp"] + df["Parch"] + 1
test_df2 = test_df.drop(["Name", "SibSp", "Parch", "Ticket", "Fare", "Cabin", "Embarked"], axis=1)

-予測モデルに予測してもらう
test_data = test_df2.values
xs_test = test_data[:, 1:]
output = forest.predict(xs_test)

print(len(test_data[:,0]), len(output))
zip_data = zip(test_data[:,0].astype(int), output.astype(int))
predict_data = list(zip_data)

-学習結果を吐き出す
import csv
with open("predict_result_data.csv", "w") as f:
    writer = csv.writer(f, lineterminator='\n')
    writer.writerow(["PassengerId", "Survived"])
    for pid, survived in zip(test_data[:,0].astype(int), output.astype(int)):
        writer.writerow([pid, survived])

テンプレ実装ってかんじですかね?