広島の中古マンション価格をPythonで予測してみた
はじめに

Kaggle Courseで学ぶうち、ある程度は機械学習の知識がついてきたので、身近にあるデータセットを使って何か作りたくなってきました。
インターネット上で無料のデータセットがないか探してみたところ、国土交通省が不動産の取引価格情報を公開していたので、今回はこれを使ってみることにします。
国土交通省の不動産の取引価格情報について
国土交通省の不動産取引価格情報では、2005年から2020年までのデータがダウンロードできます。データ量はcsvにして877MBとなかなか膨大です。
国土交通省の不動産取引価格情報サイト、全国15年分のデータがダウンロードできる。データは400万件くらいあるので、Deep Learningのお試しにいいかもしれない。https://t.co/BVZYbZ5RAJ
— ピエール (@JPierreLe) June 18, 2021
データセットの例
データセットの例です。
中古マンションや土地、建物、農地など、いろいろな不動産の取引情報を見ることができます。
No | 99999 |
種類 | 中古マンション等 |
地域 | 住宅地 |
市区町村コード | 34101 |
都道府県名 | 広島県 |
市区町村名 | 広島市中区 |
地区名 | 江波本町 |
最寄駅:名称 | 広島 |
最寄駅:距離(分) | 1H?1H30 |
取引価格(総額) | 24000000 |
坪単価 | 600000 |
間取り | 3LDK |
面積(㎡) | 65 |
取引価格(㎡単価) | 600000 |
土地の形状 | 長方形 |
間口 | 10 |
延床面積(㎡) | 100 |
建築年 | 平成28年 |
建物の構造 | RC |
用途 | 住宅 |
今後の利用目的 | 住宅 |
前面道路:方位 | 南西 |
前面道路:種類 | 市道 |
前面道路:幅員(m) | 6 |
都市計画 | 近隣商業地域 |
建ぺい率(%) | 80 |
容積率(%) | 300 |
取引時点 | 2020年第3四半期 |
改装 | 未改装 |
取引の事情等 | 関係者間取引 |
データセットの活用方法

今回は「間取り」や「面積(㎡)」などの情報から「取引価格」を予測したいと思います。
環境
開発環境
使用したライブラリ、モジュールなど
codecs:日本語のテーブルの読み込み
pandas:データフレームの使用
sklearn:訓練データとテストデータの分割、欠損値処理など
xgboost:機械学習モデル
ソースコード公開
GitHubにアップしてみました。以下で、ソースコードの概要を説明しています。
処理の流れ
不動産価格予測のざっくりとした流れは、以下の通りです。
ライブラリ、データの読み込み
- ライブラリの読み込み
- CSVファイルを読み込んでXに格納
- 「取引価格(総額)」Xからをyに移す
- X, yを訓練データと評価データ(X_train, X_valid, y_train, y_valid)に分割

訓練データはモデルの学習のために、評価データは学習済みモデルの性能評価のために使います。
データの前処理
- X_train, X_validのすべてのカテゴリ変数をワンホットエンコーディング

ワンホットエンコーディングについては、過去の記事で解説しています。
学習
- XGBoostモデルで訓練データX_train, y_validを学習

今回はパラメータはすべてデフォルトのままです。それでもある程度の性能が出るのは、XGBoostのすごいところですね。
予測
- 学習済みモデルを使って、評価データX_validから取引価格(総額)を予測
評価
- 予測値と評価データy_validから、平均絶対誤差(MAE)を計算
広島県のみに絞ったら、平均絶対誤差が250万円くらいまでに減りました。不動産価格予測として、少しは使えるようになったかも? pic.twitter.com/yZpz3pBkXP
— ピエール (@JPierreLe) June 25, 2021
本当は100万円くらいの誤差を目指したかったのですが、マンションの価格に大きな影響のある階数のデータが得られなかったので、ここらへんで妥協しました。
突っ込みどころやその他アイデアなどありましたら、コメント欄やツイッターでお寄せいただけるとうれしいです!
以上、最後までお読みいただきありがとうございました。
コメント