get_crime_data.py :犯罪データを「犯罪発生マップ」から取得するプログラム(すでに取得しているため,使いません)
make_mesh.py :メッシュのGeoJsonを作成するプログラム(すでに作成しているため,使いません)
crimes.csv :犯罪データ(get_crime_data.pyで作成される)
data_by_mesh.csv :メッシュごとのデータ(hop.ipynbで作成される)
「get_crime_data.py」を実行すると、富山県警が公開している「犯罪発生マップ」(http://www.machi-info.jp/machikado/police_pref_toyama/index.jsp)から犯罪発生データを取得し、「crimes.csv」として保存されます。
メッシュとは、地球上の空間を一定の区画に分割する方法のことです。 「メッシュコード」 を使って、緯度・経度に基づいた細かい地域区分が行われています。日本では、「統計地域メッシュ(JIS X 0410)」 という基準でメッシュコードが定められています。これは、経度・緯度の範囲を一定のサイズで区切り、それぞれの区画に「メッシュコード(番号)」を振る方法です。 これを利用することで犯罪データや人口データを特定のエリアごとに分析できます。 今回、この研究では4次メッシュ(約500m × 500m)を用います。
「hop_統計.ipynb」を実行すると、メッシュコードごとにデータを結合し「取引_件数付き.csv」に生成します。
「hop_メッシュ.ipynb」を実行すると、メッシュコードごとにデータを結合し「取引_統計データ付き.csv」に生成します。緯度・経度をもとに、500mメッシュ単位で犯罪データを分類できます。
「distance.ipynb」を実行すると、住宅地データ (取引_統計データ付き.csv) と犯罪データ (犯罪_メッシュ入り.csv) を読み込み、各住宅地から最寄りの犯罪発生地点までの最短距離を計算するために、geopy.distanceモジュールのgeodesic関数を使用します。この関数は、2点間の地球上での距離(メートル単位)を計算します。契約された土地から最短の距離で犯罪が起きた場所までの最短距離を「取引_統計データ付き.csv」に追加した「住宅地_犯罪_最短距離.csv」を生成します。
作成したデータセットを回帰分析がかけられる形に整える。
「前処理.ipynb」を実行し、「住宅地_犯罪_最短距離.csv」から「建築年数」と「最寄駅:距離(分)」の列に関する欠損値を含む行を削除した「住宅地_犯罪_最短距離_欠損値削除後.csv」を生成します。
生成した「住宅地_犯罪_最短距離_欠損値削除後.csv」から連続変数の外れ値を検出するカラムリストを定義し、データ型を数値に変換したのち検出された列を削除したリスト「外れ値削除.csv」を生成します。
それぞれのカラムの要素を必要に応じてダミー変数化した後、データフレームを保存した「削除_ダミー後.csv」を生成します。
連続変数とダミー変数を手動で分類し、連続変数のみ二次項の作成をする。 交互作用項の作成したデータフレームを保存した「削除_変数作成後.csv」を生成します。
Elastic Netは、L1 正則化(Lasso)と L2 正則化(Ridge)の組み合わせにより、多重共線性があるデータに対して安定した回帰分析を行う手法です。
Lasso(L1正則化):L1正則化は、回帰モデルの係数の一部をゼロにすることによって、特徴量選択を行います。これにより、重要な特徴量だけを残すことができますが、多重共線性が高い場合には不安定になることがあります。
Ridge(L2正則化):L2正則化は、回帰モデルの係数を小さくすることで、過学習を防ぎます。L2正則化は係数をゼロにすることはなく、むしろ係数の大きさを均等に抑える傾向がありますが、特徴量選択の機能はありません。
StandardScaler() を用いて X(説明変数)と y(目的変数)を標準化 しているため、変数のスケールによる影響を排除し、モデルの安定性を向上させています。
Elastic Netを用いて土地の価格に影響する重要な特徴量の係数を取得し、影響の大きい特徴量を特定します。
重要な変数のみを抽出し、「選ばれた変数.csv」に保存
「hedo.ipynb」を実行すると、有意水準に基づいて有意性を判定する関数