Generated by Bing Image Creator: Long wide view of green grass field. Blue sky and a few white clouds. red flower, yellow flower and blue flower are shining. Photo
の続きです。前回と前々回で income と他の変数との関係をグラフにして確認しました。それでは本題の分類問題に挑戦してみましょう。これらの変数を使って、 Income の <=50K と >50K を判別する、という問題です。
前々回の age と income のグラフから、age と income は線形の関係ではなさそう(年少者と老年者には >50K の人はいない)でしたので、age の 2乗項を追加しておきます。
glmnet パッケージの読み込みをします。
glmnet はマトリックス型のオブジェクトが必要なので、df からマトリックス型オブジェクトを生成します。
glmnet パッケージにある makeX() 関数を使うとこのように、文字列の変数を自動的にダミー変数に変換してくれます。ダミートラップを避けるために、それぞれのダミー変数から一番初めの変数を削除します。
ダミー変数は、0 か 1 の値ですが、age や fnlwgt などの数値データは数値の幅に違いがあるので、最小値が 0、最大値が 1 になるように標準化します。
mtx とモデルの係数を推計するためのトレーニング用のデータと、そのモデルの性能をテストするためのテスト用のデータにわけます。
glmnet で モデルの係数を推計するのは、データが大量だと時間がかかるので、並列処理の設定をしておきます。
doParallel パッケージで、registerDoParallel(detectCores()) のコードで並列処理の準備ができるようです。
ここまでで、glmnet で分類問題に挑む前準備が完了です。
今回は以上です。
次回は
です。
初めから読むには、
です。