「機械学習のためのpython入門講座」SkillupAI様のday7目の講座から学んだことを記載していきます☆
本記事は、「あ!どんなふうにあれ使うっけ?」っと言うときに参考にしてもらえると嬉しいです。一通りpythonに慣れてきたら、実際のプログラムを載せるなどして皆さんと一緒にレベルアップができればと思います!
それでは7日目行ってみましょう!
day7:データの前処理
※前処理の実施!
情報が過多になった為、分割してday7を記載しました。前の情報を見たい方はこちらをみてね。
前処理のステップ6:前処理の実施
大きく5つのステップを行います。
6-1)データ加工して意味のある特徴を抽出
【仮説】名前についている敬称は影響があるのではないか。
という考えのもと、Name列の特徴を抽出し、加工を行いましょう
ここで、trainデータ と test データを比較しましょう。この時に、
・サンプル数が少ないデータはないか
・双方のデータの特徴数(Mr とか Missなど)は同じか
を考える必要があります。ここで異なる場合は、敬称の置き換え作業を行う必要があります。
6-2)欠損値処理
欠損値のデータ数によって考える必要があります。
1)欠損値データが少ない場合(文字)
例えば、データが欠損している値が2つ程度であれば、一番個数が高い値へ補完することがよいでしょう。
今回のデータセットでいうと、 Embarked で欠損値が2つあった為、2つだけを補完することを考えます。
2)欠損値データが少ない場合(数字)
数字の特徴量としているモノに対して、欠損値があった場合は、無難に中央値を代入することを利用すると良い。
2)欠損値データが多めにある場合
平均値を用いた計算を行うことがありますが、平均値だととてもばらつきがあり、それが正しいのか。疑問が残ります。
そこで、前項で実施した特徴あるデータに変更した敬称を用いてみましょう。
3)欠損値データの有無の確認
処理は実施しましたので、最後に欠損値データの確認。isnull().sum() を実施
ここまでで、欠損値データの残りは大量に欠損しており、データの特徴量が活用できなさそうなCabinのみとなりました。
6-3)数値データのカテゴライズ化
学習を行うモデルには、統計的に意味のある特徴 を用いて算出を行いたい と考えます。その為、例えば年齢に対して一つずつの数値データの傾向をみるのではなく、10代・20代・30代といったグループ分けを行い傾向を確認していくことも重要になります。
カテゴライズ化した結果は、グラフかを行い傾向を確認しましょう。
下記の様な特徴から、運賃が高い方の傾向が生存率が高くなっている
といった傾向を感じることができますね。
6-4)不要データの削除
欠損値処理を行う事で分かった不要なデータを削除していきます。
また意味合いとして別の意味を持たせた内容(例えば、年齢や名前)は削除してもいいですね。
6-5)文字列データの数値への置き換え
文字列を学習することはできない為、素直に数値への置き換えを考えましょう。下記が例です。
ここまでで、すべての文字列も数字化できました!!
6-6)データフレームの保存
ここまでの間で処理を実施したデータをpythonで読み書きが可能なpickle形式で保存を実施します。これを行うことで、いつでも読み出しを行う事が可能です!
以上で前処理が終わりました~~。ついに、次は学習ですね!楽しみ~
今までの内容はこちらに☆