0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

機械学習を使って、不動産価格を予想しよう

0
Posted at

目的

・機械学習を行うためのシンプルな流れを理解する
・不動産価格の需要予測するため、機械学習の方法を学ぶ。
・短時間で、機械学習の処理の流れを理解する。
・アウトプットの目的もあり、コードはほぼ書籍と一緒。

分析の流れ

「実務で役立つ実践Python機械学習入門」翔泳社によると
以下のフェーズの大まかな流れになっていると紹介されています。
ウォーターフォールのような流れではないこともあるようです。

1. データ収集と前処理
2. 探索的データ分析
3. 特徴量エンジニアリング
4. アルゴリズムと評価指標の選定
5. モデル学習・評価

5のモデル学習・評価が終わったらそこで終わりではなく、
1や3、4に戻って繰り返して精度を改善していくことが
繰り返されます。

プログラムの説明

今回紹介されたコードに説明と実行結果を加えて行きたいと思います。

利用した開発環境はGoogleColaboratory。

利用するCSVファイルはGoogleDrive内に保存している。
以下のコードを実行してGoogleDriveとの接続を行う。

# GoogleDriveと接続する
from google.colab import drive
drive.mount('/content/drive')
import pandas as pd

# 変更しやすいように、パス名とファイル名の変数を分ける
folder_path = '/content/drive/MyDrive/Colab Notebooks/Training/実務で役立つPython機械学習入門/2_2'
train_file_name = 'realestate_train.csv'
train_file_path = folder_path + '/'+ train_file_name

train_df = pd.read_csv(train_file_path)

# データの中身(上から5行分)確認する。
train_df.head()

■実行結果
image.png

このときにデータの特徴など理解するため、平均、データ数、欠損値など調べるが、今回大まかな流れを理解することが目的なので、省略します。

今回不動産価格の予測に、
rent_price:賃貸価格
house_area:部屋の広さ(m^2)
distance:駅からの距離(m)
を利用します。

機械学習モデルの学習

価格の予測なので、回帰アルゴリズムを利用します。
利用するアルゴリズムは
sklearnライブラリにある、Ridge Regressionを利用します。

モデルライブラリを読み込む

#Ridge Regression model
from sklearn.linear_model import Ridge

学習に使う、特徴量と正解データを分けて設定する

#特徴量と正解データのカラム名の設定
#正解データの特徴量
target_col = ['rent_price']

#学習に使う、特徴量
feature_cols =['house_area','distance']

# モデル学習用のデータの設定「X:学習データ」「y:正解データ」
X = df[feature_cols]
y = df[target_col]

■X,yの中身を確認する。

X.head()

image.png

y.head()

image.png

モデルの学習

#モデルの初期化(インスタンス化)
model = Ridge()

#モデルの学習
model.fit(X,y)

モデルの学習前後

Google Colaboratoryの場合、
学習前後がわかるようになっているようです。

■学習前
image.png

■学習後
image.png

機械学習モデルの評価

#学習したモデルを用いて学習を行う。
train_df["pred_rent_price"] = model.predict(X)

train_dfのデータを確認する。

train_df.head()

■実行結果
image.png

最後の列だった、total_flore列の右側に、pred_rent_priceが加わり、予測されたデータが加えられている。

正解データと予想データが遠いので、2つに絞って比較する。

train_df[['rent_price','pred_rent_price']].head()

■実行結果
image.png

インデックス0の正解データは、
81000円、
予想データは、
93257円
と出ました。

評価指標を使って計算する

今回は評価指標として、MAE(Mean Absolute Error:平均絶対値誤差)します。
MAEはそれぞれの正解の値と、予測された値の差の絶対値の合計を平均した値です。

from sklearn.metrics import mean_absolute_error
# MAEを計算する
mae = mean_absolute_error(train_df['rent_price'],train_df['pred_rent_price'])
 #小数点以下2位まで表示
print(f"{mae:.2f}")

機械学習モデルを使った予測

次は、家賃の入っていないデータに対して予測を行います。

pred_file_name = 'realestate_pred.csv'
pred_file_path = folder_path + '/'+ pred_file_name
df_pred = pd.read_csv(pred_file_path)
df_pred.head()

■実行結果
image.png

実行結果を見ると、rent_priceの列が入っていないことが確認できます。

df_predの変数の中から、予測に使うデータを選び、予測を行います。

#使う特徴量を指定する
pred_feature_cols =['house_area','distance']
X_pred = df_pred[pred_feature_cols]

#学習済みのmodelを使って、予測をしたいX_predのデータの予測をする
df_pred['pred_rent_price'] = model.predict(X_pred)

#実行結果を表示する
df_pred.head()

■実行結果
image.png

一番右の列にpred_rent_priceの列ができ、予測された数字が表示されました。

参考

■実務で役立つPython機械学習入門
https://amzn.to/4tHQ3J5

■「実務で役立つPython機械学習入門 課題解決のためのデータ分析の基礎」サンプルコード
https://github.com/ml-pg-book/python-business-ml-starter

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?