投票回帰器を用いた糖尿病予測

Machine LearningMachine LearningBeginner
今すぐ練習

This tutorial is from open-source community. Access the source code

💡 このチュートリアルは英語版からAIによって翻訳されています。原文を確認するには、 ここをクリックしてください

はじめに

この実験では、投票回帰器を使って患者の糖尿病の進行を予測します。データの予測には、勾配ブースティング回帰器、ランダムフォレスト回帰器、線形回帰の3つの異なる回帰器を使います。そして、上記の3つの回帰器を投票回帰器に使用します。最後に、すべてのモデルによって行われた予測をプロットして比較します。

糖尿病患者のコホートから収集された10個の特徴から構成される糖尿病データセットを使用します。目的は、ベースラインから1年後の病気の進行の定量的な測定です。

VMのヒント

VMの起動が完了したら、左上隅をクリックしてノートブックタブに切り替えて、Jupyter Notebookを使って練習します。

時々、Jupyter Notebookが読み込み終了するまで数秒待つ必要があります。Jupyter Notebookの制限により、操作の検証は自動化できません。

学習中に問題に直面した場合は、Labbyにお問い合わせください。セッション後にフィードバックを提供してください。すぐに問題を解決いたします。


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL ml(("Machine Learning")) -.-> ml/FrameworkandSoftwareGroup(["Framework and Software"]) sklearn(("Sklearn")) -.-> sklearn/CoreModelsandAlgorithmsGroup(["Core Models and Algorithms"]) sklearn(("Sklearn")) -.-> sklearn/UtilitiesandDatasetsGroup(["Utilities and Datasets"]) sklearn/CoreModelsandAlgorithmsGroup -.-> sklearn/linear_model("Linear Models") sklearn/CoreModelsandAlgorithmsGroup -.-> sklearn/ensemble("Ensemble Methods") sklearn/UtilitiesandDatasetsGroup -.-> sklearn/datasets("Datasets") ml/FrameworkandSoftwareGroup -.-> ml/sklearn("scikit-learn") subgraph Lab Skills sklearn/linear_model -.-> lab-49330{{"投票回帰器を用いた糖尿病予測"}} sklearn/ensemble -.-> lab-49330{{"投票回帰器を用いた糖尿病予測"}} sklearn/datasets -.-> lab-49330{{"投票回帰器を用いた糖尿病予測"}} ml/sklearn -.-> lab-49330{{"投票回帰器を用いた糖尿病予測"}} end

ライブラリのインポート

投票回帰器を使って糖尿病の予測を行うために必要なライブラリをインポートしましょう。

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つは目的変数データを含みます。これらの配列をそれぞれXyに割り当てます。

## 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つの異なる回帰器を使用しました。また、比較のためにすべてのモデルによる予測結果を可視化しました。