Chapter 51

モデルの学習

poclabweb
poclabweb
2022.10.22に更新

2. モデルの学習: model.fit()

fitで学習 モデルの選定で何を選べるかは、公式ドキュメントを参照

https://scikit-learn.org/stable/modules/classes.html

今回は、RandomForestRegressorを使用する。

from sklearn.ensemble import RandomForestRegressor
model = RandomForestRegressor(max_depth = 100, n_estimators = 500, n_jobs = -1, random_state = 100)
model.fit(X_train, y_train)

学習結果を用いて値を予想する。

y_pred_test = model.predict(X_test)
y_pred_train = model.predict(X_train)

得られた学習結果と実験値とを比較する。

データの表示については、今回はmatplotlibを使用する

# グラフ作成をmatplotlibで行う
import matplotlib.pyplot as plt 

# 得られた学習結果と実験値とを比較する。
plt.figure()

# トレーニングデータのプロット
x1 = y_train.astype(float)
y1 = y_pred_train.astype(float)

plt.scatter(x1, y1, alpha=0.5, label="train") # alphaを入れると薄くなる。

# テストデータのプロット
x2 = y_test.astype(float)
y2 = y_pred_test.astype(float)

plt.scatter(x2, y2, label="test")

# 範囲の指定
plt.xlim(-10, 2)
plt.ylim(-10, 2)

# タイトルを入れる。
plt.title("Fig. Prediction of logS by random forest and finger print")

# X軸とY軸にラベルを作成
plt.xlabel('data')
plt.ylabel('Predict')

# 凡例の場所を指定
plt.legend(loc="upper left", fontsize=14) 

# 表示させる
plt.show()

これによって表示されるグラフは、以下の通り。

得られた学習結果の評価指標を算出する。

主に使用される評価指標を出してみる。

from sklearn.metrics import mean_absolute_error, mean_squared_error, r2_score
import numpy as np

# MAE(Mean Absolute Error)
mae = mean_absolute_error(y_test, y_pred_test)
print(f'mae:{mae:.4f}')
# MAPE(Mean Absolute Percentage Error)
mape = np.mean(np.abs((y_test - y_pred_test) / y_test)) * 100
print(f'mape:{mape:.4f}')
# SMAPE(Symmetric Mean Absolute Percentage Error)
smape = 100/len(y_test) * np.sum(2 * np.abs(y_pred_test - y_test) / (np.abs(y_pred_test) + np.abs(y_test)))
print(f'smape:{smape:.4f}')
# mse (Mean Squared Error)
mse = mean_squared_error(y_test, y_pred_test)
print(f'mse:{mse:.4f}')
# rmse (Root Mean Squared Error)
rmse = np.sqrt(mse)
print(f'rmse: {rmse:.4f}')
# R2
score2 = r2_score(y_test, y_pred_test)
print("R2", score2)

今回は、実行すると以下の値が得られた。