使用投票回归器进行糖尿病预测

Machine LearningMachine LearningBeginner
立即练习

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

💡 本教程由 AI 辅助翻译自英文原版。如需查看原文,您可以 切换至英文原版

简介

在本实验中,我们将使用投票回归器来预测患者的糖尿病进展情况。我们将使用三种不同的回归器来预测数据:梯度提升回归器、随机森林回归器和线性回归。然后,将上述三种回归器用于投票回归器。最后,我们将绘制所有模型的预测结果进行比较。

我们将使用糖尿病数据集,该数据集包含从一组糖尿病患者中收集的 10 个特征。目标是对基线一年后疾病进展的定量测量。

虚拟机提示

虚拟机启动完成后,点击左上角切换到“笔记本”标签,以访问 Jupyter Notebook 进行练习。

有时,你可能需要等待几秒钟让 Jupyter Notebook 完成加载。由于 Jupyter Notebook 的限制,操作验证无法自动化。

如果你在学习过程中遇到问题,请随时向 Labby 提问。课程结束后提供反馈,我们将立即为你解决问题。


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL sklearn(("Sklearn")) -.-> sklearn/CoreModelsandAlgorithmsGroup(["Core Models and Algorithms"]) sklearn(("Sklearn")) -.-> sklearn/UtilitiesandDatasetsGroup(["Utilities and Datasets"]) ml(("Machine Learning")) -.-> ml/FrameworkandSoftwareGroup(["Framework and Software"]) 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()函数将糖尿病数据集加载到我们的程序中。此函数返回一个由两个数组组成的元组形式的数据集——一个包含特征数据,另一个包含目标数据。我们将分别把这些数组赋值给Xy

## 加载糖尿病数据集
X, y = load_diabetes(return_X_y=True)

训练回归器

现在,让我们初始化一个梯度提升回归器、一个随机森林回归器和一个线性回归器。接下来,我们将使用这三个回归器来构建投票回归器。

## 训练分类器
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 个预测。

## 进行预测
xt = X[:20]

pred1 = reg1.predict(xt)
pred2 = reg2.predict(xt)
pred3 = reg3.predict(xt)
pred4 = ereg.predict(xt)

绘制结果

最后,我们将可视化这 20 个预测结果。红色星号表示投票回归器做出的平均预测。

## 绘制结果
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()

总结

在本实验中,我们使用了投票回归器来预测患者糖尿病的进展情况。我们使用了三种不同的回归器来预测数据:梯度提升回归器、随机森林回归器和线性回归。我们还可视化了所有模型做出的预测结果以进行比较。