作成: 日大生産工 MA 大前
これは、大前研究室の卒業研究テーマの学習資料として作成されたものです。他のゼミ生がこのページを参考にして卒業研究を行う場合は、必ず事前に相談してください。異なる研究室なのに、同じテーマが卒業研究概要集に並んでいると、問題になるかもしれません。
おまじないとして、以下を実行しておいてください。
import numpy as np
from sklearn.datasets import load_boston
import matplotlib.pyplot as plt
import scipy.stats as st
まずは、今回分析に使うデータセットをロードします。これは、ボストン住宅価格に関するデータセットで、どのような地域だと、住宅価格が安いのか、高いのかなど、分析することができます。
Boston_dataset = load_boston(return_X_y=False)
Boston_dataset.keys() # key一覧取得
Boston_datasetの中には、['data', 'target', 'feature_names', 'DESCR', 'filename'] というデータがあることがわかりました。
まずは、targetとラベルづけられたデータを取り出し、BD_Yに代入してみます。
BD_Y = Boston_dataset["target"]
print("BD_Yのデータサイズ: ", np.shape(BD_Y))
print("・54番目: ", BD_Y[54])
print("・80番目: ", BD_Y[80])
targetというデータは、506個の数字の集まりであることがわかりました。また、54番目のデータは18.9、80番目のデータは28であることがわかりました。これは、
ということを意味しています。イメージとしては、
となります。
続いて、dataとラベルづけられたデータを取り出してみます。
BD_X = Boston_dataset["data"]
print("BD_Xのデータサイズ: ", np.shape(BD_X))
取り出したデータは、506行、13列のサイズを有していることがわかりました。
です。つまり、縦506、横13サイズの変数ということになります。506とは、ボストンを細かく分けたそれぞれの区画のどれかを意味していることは、想像しやすいと思います。それ一つ一つに、13個の情報が付与されていることになります。この情報は、以下の並びで保存されています。
print(Boston_dataset["feature_names"])
13個の英語が出てきました。これだけみてもよくわかりませんので、以下にまとめておきます。
ざっくり書いています。詳しく知りたい場合は、調べてみてください。
例えば、BD_X[54. 3]と記載すると、区画54の、3番目の情報(チャールズ川に接しているかどうか)が取り出されます。
print("区画54はチャールズ川に接しているか: ", BD_X[54, 3])
print("区画54の犯罪の起こりやすさ: ", BD_X[54, 0])
print("\n区画142はチャールズ川に接しているか: ", BD_X[142, 3])
print("区画142の犯罪の起こりやすさ: ", BD_X[142, 0])
このように、
などの情報が見て取れます。 ここからわかるように、BD_Xには、506区画に対する13個の情報がまとめられています。
データが得られたところで、いくつかの分析を行ってきます。分析は、何かしらの仮説を調べるために行うことが普通です。このため、以下の仮説を考えてみましょう。
これは確かにそんな関係がありそうです。しかし、正しいかはわかりません。この仮説が正しいのか誤っているのか、調べてみましょう。調べる方法にはいくつかありますが、今回は散布図を使用してみます。具体的には、
として、図を作るわけです。これを行うには、「犯罪の発生のしやすさ」と「住宅価格」がどこに保存されているのか知らねばなりません。これは、
となります。この2つの情報で散布図を書くには、plt.scatter関数を利用します。
plt.scatter(BD_X[:, 0], BD_Y) # 横軸, 縦軸の順番
plt.xlabel("CRIM") # 横軸の名前
plt.ylabel("House price") # 縦軸の名前
plt.grid()
plt.show()
この散布図を見ると、犯罪の発生のしやすさ(CRIM)が大きいと、住宅価格(House price)が安いことがわかります。
散布図を見ることで、視覚的に傾向を把握することが可能となりました。これを、定量的な数字でチェックしてみます。この方法の一つに、相関係数というものがあります。この特徴は以下の通りです。
これを考えますと、先ほどの散布図で示した「住宅価格」と「犯罪の発生のしやすさ」は、相関係数がマイナスになりそうです。実際にこうなるのか、チェックしてみます。相関係数を算出するには、st.pearsonr関数を利用します。
cor = st.pearsonr(BD_X[:, 0], BD_Y)[0]
print(cor)
小数点以下の桁数が大きすぎるので、3桁くらいに調整してみましょう。
cor3 = np.round(cor, 3) # corにある値の小数点以下を、3桁に調整
print("犯罪の発生のしやすさと住宅価格の相関係数: ", cor3)
-0.4くらいの相関係数があることがわかりました。定量的にみても、
ということが言えることがわかりました。
(1)「犯罪の発生のしやすさ」だけではなく、他の12個の要因と「住宅価格」について、
を出してください。
(2) 「住宅価格が高い」とは、お金がある人がその地域に住むことを意味しています。 どのような地域に、お金がある人が住む傾向があるのか、考察してください。
(3) (2)以外の観点から、自由に考察してください。
1章 はじめに:(文章量の比率: 15%)
2章 データセットについて:(文章量の比率: 30%)
3章 実験:(文章量の比率: 40%)
3.1節 概要:
3.2節 結果と考察:
人種差別や、低所得者への差別などにつながらないように、十分に注意してください。
4章 おわりに:(文章量の比率: 15%)
参考文献:
参考にした資料を、2〜3件記載してください。以下、書き方の例です。
本文中で引用する場合は「大前らはXXXを実施している [1]。また、〜」のように、どこで引用したのか明白にしてください。