Scikit.learn(Pythonの機械学習ライブラリ)に入っているベンチマークデータ「Boston housing」(ボストンの各地区の住宅価格のデータ)を扱う。

Step 1. データの読み込み

In [0]:
import os
import pandas as pd
from sklearn.datasets import load_boston
boston = load_boston()
boston = pd.DataFrame(boston.data, columns=boston.feature_names)

Step 2. データの確認

In [0]:
boston.head() %データの先頭の5行を表示する(各行はひとつの地区に対応)
Out[0]:
CRIM ZN INDUS CHAS NOX RM AGE DIS RAD TAX PTRATIO B LSTAT
0 0.00632 18.0 2.31 0.0 0.538 6.575 65.2 4.0900 1.0 296.0 15.3 396.90 4.98
1 0.02731 0.0 7.07 0.0 0.469 6.421 78.9 4.9671 2.0 242.0 17.8 396.90 9.14
2 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
3 0.03237 0.0 2.18 0.0 0.458 6.998 45.8 6.0622 3.0 222.0 18.7 394.63 2.94
4 0.06905 0.0 2.18 0.0 0.458 7.147 54.2 6.0622 3.0 222.0 18.7 396.90 5.33

各列(変数)の意味は以下のとおり(https://archive.ics.uci.edu/ml/machine-learning-databases/housing/housing.names)

  1. CRIM per capita crime rate by town
  2. ZN proportion of residential land zoned for lots over 25,000 sq.ft.
  3. INDUS proportion of non-retail business acres per town
  4. CHAS Charles River dummy variable (= 1 if tract bounds river; 0 otherwise)
  5. NOX nitric oxides concentration (parts per 10 million)
  6. RM average number of rooms per dwelling
  7. AGE proportion of owner-occupied units built prior to 1940
  8. DIS weighted distances to five Boston employment centres
  9. RAD index of accessibility to radial highways
  10. TAX full-value property-tax rate per \$10,000
  11. PTRATIO pupil-teacher ratio by town
  12. B 1000(Bk - 0.63)^2 where Bk is the proportion of blacks by town
  13. LSTAT % lower status of the population
  14. MEDV Median value of owner-occupied homes in $1000's 注:MEDVは住宅価格の中央値で、boston.targetに入っている

Step 3. ヒストグラムの描画

In [0]:
import matplotlib.pyplot as plt #matplot: グラフ作成ライブラリ
plt.title("per capita crime rate by town") #グラフのタイトルを設定(日本語は表示不可)
plt.hist(boston["CRIM"], color = "blue", rwidth = 0.9) #XのCRIMのヒストグラムを生成
plt.show() #生成したヒストグラムを表示

Step 4. 散布図(2変数)の描画

In [0]:
plt.title("lower status rate vs. crime rate") #グラフのタイトルを設定(日本語は表示不可)
plt.xlabel("lower status of the population (percent)") #横軸にラベルを設定
plt.ylabel("per capita crime rate by town") #縦軸にラベルを設定
plt.scatter(x = boston["LSTAT"], y = boston["CRIM"], marker = "o", color= "brown") #散布図を生成
plt.show() #生成した散布図を表示