#3 X_train、y_train、X_test、y_testの違い・特徴量エンジニアリングとは【今年中にKaggleでメダルを取る男】
「PythonではじめるKaggleスタートブック」という書籍で勉強していてわからなかったところを思考整理がてらまとめていきます。
(追記)
この記事書き終わってお分かりましたが、この書籍の最後にコードの解説が一文ずつ丁寧に解説されていました!気づいてよかった!!
疑問
なんでyとXのtrainデータでSurvivedだけなのと、Survivedを削除したものとに分けるのかがわからん。そもそも、なんでX_trainとy_trainに分けるのかがわからん。
y_train = train['Survived']
X_train = train.drop('Survived', axis=1)
X_test = test.drop('Survived', axis=1)
解説
今私は教師あり学習をしていて、教師あり学習とは「コンピュータに問題と答えを教えて、教わっていない問題に対しても答えを予測できる(正しい答えを出す)ようにする」ことを言います。
それを踏まえて、
問題:X_train
答え:y_train
であって、教わっていないのが
問題:X_test
答え:y_test
です。
そうすると
y_train = train['Survived']
は、生存したかいなか(Survived)という「答え」のみが格納された情報がy_trainである。
そして、
X_train = train.drop('Survived', axis=1)
は教わっている問題のことなので、X_trainにある情報から、y_trainが導き出されるのですよ〜ということを示すということですね。
そんでX_test = test.drop('Survived', axis=1)
っていうのは教わっていない問題なので先述したX_trainとy_trainの対応関係を学習して、X_testが学習され、最終的にy_testが導き出されるっていうことだと思います。
学び
Kaggleしかりデータ分析しかり、予測性能向上をするための一つの方法は特徴量エンジニアリングを見直すこと。
特徴量エンジニアリングとは、
- 既存のデータを機械学習アルゴリズムが扱えるようにデータの型をかえること
- 既存のデータから新たな特徴量を作ること
に分けられます。
おわりに
この書籍は3月中に終わらせることで、3月7日時点で60ページまで進んでいるのはかなり良いペースでは?
Discussion