-
DockerでKaggle環境を構築して機械学習に入門してみる
案件で機械学習の知識が必要になりましたのでDockerで環境を構築し、試してみようと思います。 以下の手順で進めます。 Dockerでの環境構築 Kaggleから訓練データ、テストデータをダウンロード データの整形 予測結果の出力 私は機械学習についての知識が皆無ですので間違っている箇所もあるかもしれません。。。 環境構築 環境はDockerで構築します。 Kaggle公式のDockerImageがあるらしいのでそちらを利用します。 docker-compose.yml kaggle/pythonでなくpythonのみのイメージでも良いのですがkaggle/pythonであればpandasなどのライブラリもインストール済みなのでオススメです。 これで環境構築は完了です。 Kaggle Kaggleは機械学習、データサイエンスのコミュニティサイトです。機械学習のための「訓練データ」と予測を分析する「テストデータ」をダウンロードすることができ、それを元に機械学習で結果を導き、Kaggleに提出するとScoreが表示されます。 今回は機械学習初心者向けである「タイタニック号の生存者予測」を試してみようと思います。 まず以下のページから訓練データである「train.csv」とテストデータである「test.csv」をダウンロードします。 https://www.kaggle.com/c/titanic/data# それぞれ中身を確認してみます。 乗客ID, 生存可否, Passenger’s class, 名前, 性別, 年齢, 乗船した兄弟/配偶者の数, 乗船した親/子の数, チケット番号, 運賃, 船室番号, 乗船港となっています。 Passenger’s classは1, 2, 3の数値データで1がファーストクラスとなる船室クラスの数値のようです。Embarkedは乗客が乗船した港で、C, Q, Sの3種類、それぞれCherbourg, Queenstown, Southamptonとなります。 test.csvを確認してみるとSurvivedのデータがありません。train.csvのデータで機械学習モデルを作成し、test.csvの乗客の生存可否(Survived)を求める。という課題のようです。 データの整形 欠損しているデータもあり、そのままでは使用できないので平均値などで埋めます。そもそもどのくらい欠損しているのか見てみましょう。 Age, Cabinが多く欠損していますがそれ以外のデータは問題なさそうです。 欠損値を埋める Age(年齢)の欠損値を埋めます。とりあえず中央値を使うように実装してみます。 medianで中央値を得ることができます。 これでAgeの欠損値は埋まりました。CabinとEmbrakedも欠損していますが今回は使用しないのでこのままで進めます。 数値化とtest.csvデータの整形 次にデータの整形を行います。今回使用する「決定木分析」では文字列を扱うことができませんので性別のデータを数値に変換します。 male(男性)を0、female(女性)を1に変換しました。 test.csvのデータも同様に整形します。 test.csvについてはFareデータも一部欠損していましたので中央値で埋めています。 決定木分析…