機械学習で不動産の価格に大きな影響を与えている要素を考える
こんにちは!
ぷもんです。
今回は機械学習シリーズです。
機械学習の回帰がスタート!! 「ボストン市の住宅価格データのデータセット」を見る!というnoteで機械学習の回帰を初めて
ボストン市の住宅価格のデータのデータセットを見ました。
今回はこのデータセットを使って
どの指標が不動産の価格に大きな影響を与えているのかを求めます。
まずは機械学習の回帰がスタート!! 「ボストン市の住宅価格データのデータセット」を見る!でつくった
次のボストン市の住宅価格のデータのデータセットの表を
説明変数と目的変数に分けます。
「説明変数?目的変数ってなんや?」
という方がいるかもしれないので説明すると
説明変数とは機械に学習させる値です。
目的変数とは機械が答える値です。
今回のボストン市の住宅価格のデータのデータセットの分析では
CRIM→人口1人あたりの犯罪発生率
ZN→25,000平方フィート以上の住居区画の占める割合
INDUS→小売業以外の商業が占める面積の割合
CHAS→チャールズ川によるダミー変数(1:川の周辺、0:それ以外)
NOX→NOXの濃度
RM→住居の平均部屋数
AGE→1940年より前に建てられた物件の割合
DIS→5つのボストン市の雇用施設からの距離(重み付け済)
RAD→環状高速道路へのアクセスしやすさ
TAX→$10,000ドルあたりの不動産税率の総計
PTRATIO→町毎の児童と教師の比率
B→町毎の黒人(Bk)の比率
LSTAT→給与の低い職業に従事する人口の割合(%)
などの説明変数を使って
不動産の価格という目的変数を予想します。
説明変数をXに、目的関数をYに分けます。
X = boston_df.drop("PRICE", 1)
Y = boston_df.PRICE
XとYは次のように実行すると表示されます。
X.head()
Y.head()
実際にやって見たのがこちらです。
続いて重回帰分析をします。
重回帰分析をすると
今回求めたい不動産の価格に影響を与えている要因を抽出し
どの要因がどの程度影響しているかを知ることができます。
まずは重点回帰分析に使う線形回帰モデルを呼び出します。
linear_regression = LinearRegression()
これで実行してみたのですがうまく動きませんでした。
こんな感じでエラーが出てしまいます。
原因はLinearRegressionがインポートされていないこと
from sklearn.linear_model import LinearRegression
これで解決しました!
他の人のコードを理解しながら勉強していると
インポートするのが書いてなくてエラーが出ることが結構あります。
元となるコードを書いてくれている人は
既に他のコードも書いていて
必要なものがインポートされているのでうまく行ったり
サイトにする時に記述し忘れることだと思うのですが
個人の人に完璧にしてからサイトにのせろというのも無理な話だし
だからと言って初心者の人は
どう検索していいかわからなくて挫折してしまう人も多いと思います。
プログラミングを体系的に学べるサービスはもちろん必要だけど
それよりもプログラミングで何かを作るコースがいくつか用意されていて
エラーが出たり体系的に学びたくなった時には
すぐに解決方法がわかるサイトに飛べるように設計されている方が
何作ってるかわかるからやる気が持続しやすいし
自分の興味に合わせて深めれるから初心者にはいいよなと思いました。
少し話がずれましたが...。続けます。
続いて先ほど呼び出した重点回帰モデルにデータを当てはめて学習させます。
linear_regression.fit(X,Y)
先ほど分けた説明変数Xと目的関数Yが使われます。
結果を見て見ます。
print(linear_regression.coef_)
こんな感じになりました。
んー...。よくわからん。
わかりにくいので
データフレームを使って表の形にします。
coefficient['f_names'] = DataFrame(boston.feature_names)
coefficient
実行結果がこちら!
エラーが出てしまいました。
こちらは実は解決できていなくて
['f_names']を消したこちらで実行すると動きました。
coefficient = DataFrame(boston.feature_names)
coefficient
ただf_namesといれたかったところが0になってしまっています。
この後、もう一度['f_names']ありで実行してみると
coefficient['f_names'] = DataFrame(boston.feature_names)
coefficient
動いたけど0が残ったままになってしまいました...。
データフレームの枠みたいなものをつくる必要があるのかな?
と素人なりに考えたのですが解決策はわからずです。
0の消し方もわかりません。
このnoteを読んでくださった方でわかる方がいたら
コメントをもらえると嬉しいです。
解決していないですがとりあえず動くので続けます。
続いてcoefficientの欄を先ほどの表に加えます。
coefficient['coefficient'] = DataFrame(linear_regression.coef_)
coefficient
実行結果がこちら!
この値でどの項目が住宅価格に大きな影響を与えているかがわかります。
今回の場合はCHASとRMの値が大きいので影響が大きいことがわかりました!!
まだ回帰の勉強途中ですが
今まで分析、回帰とやってきて
機械学習ではデータフレームがよく出てきて
自分がデータフレームのところでよく詰まっていて
もう少しデータフレームについてもやったほうがいいなと感じました。
データフレームについてもっと頑張ります!
参考にしたサイトはこちらです!
最後まで読んでいただきありがとうございました。
ぷもんでした!