🫠

Pythonでモデルから出力した予測値と実測値を比較する方法

2024/07/22に公開

sklearn.treeのDecisionTreeRegressorのモデル例

モデル作成と予測結果出力

from sklearn.model_selection import train_test_split
from sklearn.tree import DecisionTreeRegressor 

train_X, val_X, train_y, val_y = train_test_split(X, y, random_state=1)
model = DecisionTreeRegressor(random_state=1)
model.fit(train_X, train_y)
predictions = model.predict(val_X)

散布図を使った比較

import matplotlib.pyplot as plt
​
# 散布図をプロット
plt.scatter(predictions, val_y)
plt.xlabel('val_y')
plt.ylabel('predictions')
plt.title('val_y vs predictions')
plt.plot([min(val_y), max(val_y)], [min(val_y), max(val_y)], color='red')  # 45度線
plt.show()

散布図

回帰直線を使った比較

import seaborn as sns
import matplotlib.pyplot as plt

# データフレームを作成
import pandas as pd
data = pd.DataFrame({'actual values':val_y , 'predictions': predictions})

# 回帰直線をプロット
sns.lmplot(x='actual values', y='predictions', data=data)
plt.plot([min(val_y), max(val_y)], [min(val_y), max(val_y)], color='red')  # 45度線
plt.show()

回帰直線

評価指標を使った比較

from sklearn.metrics import mean_absolute_error, mean_squared_error

mae = mean_absolute_error(predictions, val_y)
mse = mean_squared_error(predictions, val_y)
rmse = mean_squared_error(predictions, val_y, squared=False)

print(f'MAE: {mae}')
print(f'MSE: {mse}')
print(f'RMSE: {rmse}')

MAE: 29652.931506849316
   平均絶対誤差。予測値と実測値の絶対誤差の平均を示します。
MSE: 1745663966.7561643
   均二乗誤差。予測値と実測値の誤差の二乗の平均を示します。
RMSE: 41781.1436745832
   平均二乗誤差の平方根。MSEの平方根を取ったもので、元のデータの単位に戻すことができます。

Discussion