データの前処理について Data preprocessing| Udemy Machine Learning A-Z™: Hands-On Python & R In Data Science

データの前処理について(Data Preprocessing)

こんばんは。 先週からudemyでデータサイエンスについての講義を受講し始めました。今週はパート1でデータサイエンスに使用するデータの前処理について学びました。 その記録としてまとめてみます。 

前処理の内容

使用するライブラリとデータセットのインポート 損失しているデータの補完 categorical data データセットをテストセットとトレーニングセットへ分割 feature scaling

 

Pythonを用いたデータの前処理Data preprocessing

使用するライブラリとデータセットのインポート 

ライブラリは numpy matplotlib pandas を毎回使用します。

この中でpandasのread_csvというメソッドを利用してデータセットを取り込みます。 またこの講義に使用するデータセットは、最後の列が従属変数の値、他が独立変数となるように指定している。従属変数をy、独立変数をXとして振り分けます。 pandasのiloc()で行と列を選択してあげます。

損失しているデータの補完

データセットの中にデータのぬけがあった場合それらをどう処理すべきでしょうか。 一つの方法としては抜けているデータごと削除してしまおう、といった方法があります。 しかし削除してしまった分、精度が落ちてしまうので良い方法とは言えない。 平均的な値を入力するのが良い方法。 そのためにはsklearn.preprocessingにあるImputerクラスを利用します。 そしてimputeしたい範囲にfit_transformする。

categorical data

categorical dataは数値以外のデータを数値データとか処理しやすい値に置き換えること だと思いました。 例えば出身地であれば、 宮城→1 岩手→2 福島→3 といった感じです。 これはsklearn.preprocessingにあるLabelEncoderを使用します。

しかしこのように置き換えると順番が発生しデータの重みが変わってしまう。 全て0か1で表すためには元データを行列のデータに変換します。 pythonではsklearn.preprocessingにあるOneHotEncoderを使用します。

宮城→[1,0,0] 岩手→[0,1,0] 福島→[0,0,1] といった感じに変換できます。

データセットの分割

training setとtest setに分割します。 通常はテストセットは20%くらいだそうです。 割合はケースバイケースですが、さすがに50%以上は一度も見たことがないと言ってました。

sklearn.cross_validationのtrain_test_splitメソッドを利用。 Xとyを入れてあげればそれぞれのトレーニングセットをテストセットが返ってくる。

feature scaling

feature scalingはデータのスケールを調整します。 データセットのデータをそのまま機械学習に利用してしまうと単純に数字の大きさだけみてしまうからでしょうね。 例えば温度と湿度は同じスケールで使用してしまうと大変なことになってしまいます。

今回は標準化(standardization)を行いました。 これもsklearn.preprocessingを利用します。StandardScalerを使います。