はじめに
この実験では、投票回帰器を使って患者の糖尿病の進行を予測します。データの予測には、勾配ブースティング回帰器、ランダムフォレスト回帰器、線形回帰の 3 つの異なる回帰器を使います。そして、上記の 3 つの回帰器を投票回帰器に使用します。最後に、すべてのモデルによって行われた予測をプロットして比較します。
糖尿病患者のコホートから収集された 10 個の特徴から構成される糖尿病データセットを使用します。目的は、ベースラインから 1 年後の病気の進行の定量的な測定です。
VM のヒント
VM の起動が完了したら、左上隅をクリックしてノートブックタブに切り替えて、Jupyter Notebook を使って練習します。
時々、Jupyter Notebook が読み込み終了するまで数秒待つ必要があります。Jupyter Notebook の制限により、操作の検証は自動化できません。
学習中に問題に直面した場合は、Labby にお問い合わせください。セッション後にフィードバックを提供してください。すぐに問題を解決いたします。
ライブラリのインポート
投票回帰器を使って糖尿病の予測を行うために必要なライブラリをインポートしましょう。
import matplotlib.pyplot as plt
from sklearn.datasets import load_diabetes
from sklearn.ensemble import GradientBoostingRegressor
from sklearn.ensemble import RandomForestRegressor
from sklearn.linear_model import LinearRegression
from sklearn.ensemble import VotingRegressor
糖尿病データセットの読み込み
次に、scikit-learn が提供するload_diabetes()関数を使って、糖尿病データセットをプログラムに読み込みます。この関数は、2 つの配列のタプルとしてデータセットを返します。1 つは特徴データを含み、もう 1 つは目的変数データを含みます。これらの配列をそれぞれXとyに割り当てます。
## Load the diabetes dataset
X, y = load_diabetes(return_X_y=True)
回帰器の学習
次に、勾配ブースティング回帰器、ランダムフォレスト回帰器、線形回帰を初期化します。次に、これら 3 つの回帰器を使って投票回帰器を構築します。
## Train classifiers
reg1 = GradientBoostingRegressor(random_state=1)
reg2 = RandomForestRegressor(random_state=1)
reg3 = LinearRegression()
reg1.fit(X, y)
reg2.fit(X, y)
reg3.fit(X, y)
ereg = VotingRegressor([("gb", reg1), ("rf", reg2), ("lr", reg3)])
ereg.fit(X, y)
予測の実行
次に、それぞれの回帰器を使って最初の 20 個の予測を行います。
## Make predictions
xt = X[:20]
pred1 = reg1.predict(xt)
pred2 = reg2.predict(xt)
pred3 = reg3.predict(xt)
pred4 = ereg.predict(xt)
結果のプロット
最後に、20 個の予測結果を可視化します。赤い星は投票回帰器による平均予測を示しています。
## Plot the results
plt.figure()
plt.plot(pred1, "gd", label="GradientBoostingRegressor")
plt.plot(pred2, "b^", label="RandomForestRegressor")
plt.plot(pred3, "ys", label="LinearRegression")
plt.plot(pred4, "r*", ms=10, label="VotingRegressor")
plt.tick_params(axis="x", which="both", bottom=False, top=False, labelbottom=False)
plt.ylabel("predicted")
plt.xlabel("training samples")
plt.legend(loc="best")
plt.title("Regressor predictions and their average")
plt.show()
まとめ
この実験では、投票回帰器を使って患者の糖尿病の進行を予測しました。データの予測には、勾配ブースティング回帰器、ランダムフォレスト回帰器、線形回帰の 3 つの異なる回帰器を使用しました。また、比較のためにすべてのモデルによる予測結果を可視化しました。