機械学習

借金予測の② Object型の処理【MLC#14】

こんにちは、チズチズです!

今日もKaggleやります。

振り返り★

昨日の記事

  • 分類問題
  • データ量はそこまで多くない
  • オブジェクト型(文字)があったから次数値化させると言った

昨日は時間が無くてそこまでコード書けませんでしたが吟味までは入りました。

Object型の処理

Objectでわかりやすいのが曜日です。

このようなデータがあったとします。

これを普通に突っ込んでも認識はしてくれません(今のsklearnは直してくれるとか聞いたようなないような

数値化させないといけません。

0
1
2
2
3
0

こうやって順に数を振ってしまうと数が大きいほうが~小さい方が~となってしまいます。平均が月あたりとかよくわからないことになってしまいます。

このように2つ以上のデータにおいて順に番号を付けることは望ましくありません。数字が小さければ大きければに偏ってしまいます。

そこでOneHotEncoder!

さっきまでのはLabelEncoderというものです。

OneHotEncoderを使うと…

1000
0100
0010
0010
0001
1000

カテゴリごとにあるかないかを判定してくれます。

先にある方、後にある方に偏らないデータにすることが出来るんです。

コード書いていく

分別

カテゴリ内の要素の種類が2つ以下のときはLaberEncoderで3つ以上のときはOneHotEncoderを使用します。

3つの列が数値化されました~

OneHotEncoderは簡単で、pd.get_dummis()だけで終わるんですw

前回のデータと比べて列数が2倍程増加しています。列内にもいろんなデータがあるからでしょう。

というかこれ前回のトレインとテストの差が1で今のが4で列数がおかしくなっています。

合わせなければいけません。

トレインデータにはtarget+テストの列があります。そしたらテストに列を合わせれば良いのです。

差が同じになって列が合いました。

これで学習させても問題なく動きます。

EDA(探索的データ解析

言葉は難しくても中身は簡単

可視化させたり数値化させたりして

データの特徴を見つけることです

(ざっくり

年齢をみます。データは今から何日前に生まれたかなので、-365で掛けて何歳~の表示させます。

良い具合ですね。

就職日数もあるらしいです。

maxで約1000年?!

このデータはおかしいですねwさすがに1000年も働く社畜さんは居無さそうです。

こ れ は ひ ど い

明らかに外れ値のようなデータです。

もしかしたら外れ値全部365243じゃね?!ってことで

一旦別々にすることは出来ました。

途中

今日はここまでにします。

参考にしたKernelが良Kernelのようで前処理がめっちゃ詳しいです。

そのため、時間はかかりますが丁寧な前処理を行おうと思います。

お読みいただいてありがとうございました。

COMMENT

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です