はじめに
機械学習の勉強の為に、scikit-learnのデータセットを1個ずつ分析していきます。
一歩ずつなんてとんでもない、データの俯瞰からゆっくり、半歩ずつ学習を進めて行きたいと思います。
現在進行形で勉強中の身なので、出来るだけ正確な内容を書けるように努力しますが、書いてある内容は便所の落書き程度の信頼性だとお考えください。
分析対象データについて
今回、分析するのはscikit-learnライブラリで提供されている
ボストン住宅価格と、住宅の環境の関係についてです
環境に関するパラメータには以下の13種があります
カラム名 | 内容 |
---|---|
CRIM | 人口 1 人当たりの犯罪発生数 |
ZN | 25,000 平方フィート以上の住居区画の占める割合 |
INDUS | 小売業以外の商業が占める面積の割合 |
CHAS | チャールズ川によるダミー変数 (1: 川の周辺, 0: それ以外) |
NOX | NOxの濃度(窒素酸化物) |
RM | 住居の平均部屋数 |
AGE | 1940 年より前に建てられた物件の割合 |
DIS | 5 つのボストン市の雇用施設からの距離 (重み付け済) |
RAD | 環状高速道路へのアクセスしやすさ |
TAX | $10,000 ドルあたりの不動産税率の総計 |
PTRATIO | 町毎の児童と教師の比率 |
B | 町毎の黒人 (Bk) の比率を次の式で表したもの。 1000(Bk – 0.63)^2 |
LSTAT | 給与の低い職業に従事する人口の割合 (%) |
これらのパラメータと住宅価格の関係を調べ
最終的には、価格不明の物件のパラメータから、価格を予測する計算式(モデル)を導き出す事を目標とします。
まずはデータの読み込みから
import matplotlib.pyplot as plt
from sklearn.datasets import load_boston
import pandas as pd
boston = load_boston()#環境データのロード
env_data = pd.DataFrame(boston.data,columns = boston.feature_names)#データをDataFrame形式に
price_data = boston.target#住宅価格のデータをロード
この時点でenv_data
には13種のパラメータデータが506件分入っています
price_data
には506件分の住宅価格データが入っています。
実際に3件分のデータをそれぞれ見てみましょう
CRIM | ZN | INDUS | CHAS | NOX | RM | AGE | DIS | RAD | TAX | PTRATIO | B | LSTAT |
---|---|---|---|---|---|---|---|---|---|---|---|---|
0.00632 | 18.0 | 2.31 | 0.0 | 0.538 | 6.575 | 65.2 | 4.09 | 1.0 | 296.0 | 15.3 | 396.9 | 4.98 |
0.02731 | 0.0 | 7.07 | 0.0 | 0.469 | 6.421 | 78.9 | 4.9671 | 2.0 | 242.0 | 17.8 | 396.9 | 9.14 |
0.02729 | 0.0 | 7.07 | 0.0 | 0.469 | 7.185 | 61.1 | 4.9671 | 2.0 | 242.0 | 17.8 | 392.83 | 4.03 |
PRICE |
---|
24. |
21.6 |
34.7 |
こんな感じのデータが506件分、env_dataとprice_dataに入っているワケです
##データをグラフ化してみよう
とりあえず分析に入る前にseabornを使ってenv_dataの中のパラメータ同士の関係性を見てみましょう
import seaborn as sns
sns.pairplot(env_data)
眺めて「ふんふん」って言ってるだけで、分析してる気分になりますね
同様に相関性の強さをヒートマップという表で可視化してみます。
#相関係数の行列を作成
heat = env_data.corr()
plt.figure(figsize=(15,10))
#表のスタイルを指定しながらヒートマップを表示
sns.heatmap(heat, vmin=-1,vmax=1.0,center=0,annot=True, xticklabels=boston.feature_names, yticklabels=boston.feature_names,cmap="bwr")
表を見ると分かるように、より強い相関を持つマスは濃い色に、相関の薄い物は淡い色になっています
※斜めのマスは同じ全て同じ要素同士(CRIMとCRIM、ZNとZN...)の相関になるので、全て1になっています。
パラメータの中に強い相関を持つものがあると
多重共線性という現象で、最終的に求める計算式の予測精度が悪くなったりするようです
##休憩
今回はここまでにしましょう
データ見ただけじゃないか!ってな話ですが
そこは、半歩ずつ。のんびり行きましょう
##お願い
独学で機械学習を勉強しつつ、備忘録・理解の確認の為にQiitaに投稿しています。
間違った解釈や説明が多々あるかと思います。
お気づきになった方は、どうか優しくご指摘お願いいたします