こんにちはひさです。今回は自身の勉強した内容の整理とkaggleのHousePricesにあるnotebookを参考にデータ分析についてまとめてみました。最初に自身が勉強した教師あり学習の基本的な処理について、次にnotebookを参考に、データ分析について書いていきたいと思います。私は最近kaggleを始めた初心者ですので、皆さんの参考になればと思います。kaggleのnotebookが英語なので日本語でまとめていると思っていただければと思います。今回のデータ分析環境はJupyterNotebookを使用しています。
※このブログではコードは記載していますが結果は表示していませんので、ご自身の環境でコードを実行して確認してみてください。参考にしたnotebookのリンクはこちらです。
最初にやること
ライブラリのインポート
kaggleにてデータを行う前にまず必要なPythonライブラリをimportしていきます。このライブラリを使ってデータを分析していきます。計算のため、図を表示するために必要なものを準備していきます。
このようにimport 〇〇で必要なものを準備すればデータを扱う準備は万端です。もし足りないものがあればあとから追加しましょう。
データを読み込み
次はデータの読み込みです。kaggleからダウンロードしたCSVデータを分析するのに読み込まないといけないのでPandasを使って読み込んでいきます。今回のデータはtrainとtestの2つがあるので、両方読み込みします。
読み込むファイルは自身のPC内の保存先の場所を指定すること。もし分からない場合は、ターミナルにそのファイルをドロップするとパスが出るのでコピーして貼り付ける。(kaggleのnotebookだとkaggle内のデータ保存先を指定する。)
その後、両方のデータを結合して一つのデータとして扱うか単独でそのまま扱うか好きな方で進める。まとめる方法はconcatを使うとできます。(結合すると一度にまとめて処理できるので楽ではあるみたいです。)
データを読みこんだらやること
次はデータの概要を確認していく。例えばデータ数はどれくらいあるのか、欠損しているデータはいくつあるのかなどデータ分析する前に全体の内容を確認していく。確認するものは今回は以下を確認する。
これでデータの概要を確認したので、次はkaggle notebookにあった記事を参考にデータを分析していく。
gaggle notebookの記事を参考にデータ分析
まず記事によるとHouse Pricesのデータでは以下の4つを最初にしていくとのことでした。
- データを逐次処理することによる欠損値の埋め合わせ
- 本当はカテゴライズされていると思われる数値変数の変換
- 順序セットに情報が含まれている可能性のあるカテゴリ変数のラベルエンコード
- 歪んだ特徴のBox Cox変換
上記の内容をすることによってデータをちゃんと扱えるようにしたり、カテゴリごとにデータを見てみたりなど分析前に必要な前処理というものをしていきます。では、ここから記事の内容を実践をしていきたいと思います。
データからIDの削除を行う
ここは多分最初のデータの部分がいらないので削除してしまおうということだと思います。
shapeを確認すると列数が減っていることを確認できる。
データ処理を行う
ここからデータの処理を行なっていきます。まずデータの外れ値の確認をしていきます。
今回はtrain‘GrLivArea’、train[‘SalePrice’]を当てはめて調べている模様。削除しても問題ない外れ値は削除していく。
コードを実行後、散布図を見ると外れ値は消えている。
ここで注意として、外れ値の削除は常に安全ではないとのこと。今回はこのデータにおいて非常に巨大で、悪質だったため削除したとのこと。
訓練データには探すと外れ値があるかもしれないが、それらを全て削除するとテストデータにも外れ値があった場合、モデルに悪い影響を与える可能性があるため外れ値を全て取り除くのは好ましくないとのことでした。
外れ値だからといってむやみに消してはいけないということですね。
予測する値(SalePrice)を分析する
次に今回のHouse Pricesで予測する家の販売価格(SalePrice)を分析していく。予測するデータがどういうものなのか知るのも大事だということだと解釈しました。早速、データを表示していく。
以上のコードを実行するとデータが右に傾いていることがわかります。線形モデルは正規分布を好むので、変数を変換して正規分布に近づける必要があるとのことでした。なので正規分布になるようにコードを書いていく。
上記コードにてデータの歪曲が修正され、データがより正常に分布しているように見えるようになっています。
今回は4つのうちの前半2つを行なっていきました。次は特徴量エンジニアリングに入るのでここまでにしたいと思います。
まとめ
今回はkaggleや本を通じて勉強した教師あり学習の最初に行うこと、kaggleのnotebookを参考にデータ分析のやり方をまとめて見ました。基本はデータの概要を確認し、データを扱える状態にしていくことが最初の段階になるのかと思います。そこからデータの項目ごとに見て編集していくという風な流れだとやっていて感じました。
まだやっていない特徴量エンジニアリングの項目があるラベルエンコード、Box Cox変換はまた別にまとめたいと思います。
参考文献
kaggle notebook: https://www.kaggle.com/serigne/stacked-regressions-top-4-on-leaderboard?kernelSessionId=1955054