2. モデルの学習: model.fit()
fitで学習 モデルの選定で何を選べるかは、公式ドキュメントを参照
今回は、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を使用する
-
公式サイト
https://matplotlib.org/ -
cheatsheet
https://matplotlib.org/cheatsheets/
# グラフ作成を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)
今回は、実行すると以下の値が得られた。