機械学習やプログラミングを始めたての筆者が自分なりに試行錯誤やさまざまな著書などを参考にして自力でkaggleのコンペに挑戦した時のコードをまとめたものです。
初めてブログ記事を書きますので見にくいと思いますがご容赦ください。
#ライブラリのインポート
import pandas as pd
import numpy as np
#csvファイルの読み込み
train = pd.read_csv("train.csv")
test = pd.read_csv("test.csv")
#学習データの先頭5行を読み出し
train.head()
#テストデータの先頭5行を読み出し
test.head()
全体のデータ数とshapeも学習の参考になるのかも。と思い下記のコードでshapeを調べました。
print(train.shape)
print(test.shape)
結果は
学習データ・・・891,12
テストデータ・・・418,11
ということが分かりました。
続いて、学習用データとテストデータのデータ要約を確認するために下記の作業。
#カラム名、欠損値の有無、データタイプなどを確認。
train.info()
#カラム名、欠損値の有無、データタイプなどを確認。
test.info()
#学習データの統計情報を表示
train.describe()
#学習データを特徴量と目的変数に分ける
train_x = train.drop(["Survived"], axis=1)
train_y = train["Survived"]
#特徴量をそのままコピー
test_x = test.copy()
■予測にあまり適していないと思われる変数を除外しています。
from sklearn.preprocessing import LabelEncoder
#PassengerIdを削除
train_x = train_x.drop(["PassengerId"], axis=1)
test_x = test_x.drop(["PassengerId"], axis=1)
#Name, Ticket,Cabinを削除
train_x = train_x.drop(["Name", "Ticket", "Cabin"], axis=1)
test_x = test_x.drop(["Name", "Ticket", "Cabin"], axis=1)
for i in ["Sex", "Embarked"]:
le = LabelEncoder()
le.fit(train_x[i].fillna("NA"))
train_x[i] = le.transform(train_x[i].fillna("NA"))
test_x[i] = le.transform(test_x[i].fillna("NA"))
#xgboostを使ってモデルの学習と予測
from xgboost import XGBClassifier
model = XGBClassifier(n_estimators=20, random_state=71)
model.fit(train_x, train_y)
pred = model.predict_proba(test_x)[:, 1]
pred_label = np.where(pred > 0.5, 1, 0)
print(pred)
print(pred_label)
ここまでが私が色々調べながら「Titanic」へエントリーしたコードの記述です。
自分でチャレンジすることで、色んなメソッドの役割を理解することができました。
学習を初めて2ヶ月しか経っていませんが、私の中では自力で一つのモデルを作り成果としてエントリーできたのが非常に嬉しかったです。
上位の方のコードを拝見させていただくと、かなり勉強になることばかりです。
次回の成果物は可視化作業も含めて精度の向上を目指し頑張っていこうと思います。
ここまでご覧いただいてありがとうございます。
次回も何かしらの成果をアップできればと思います。