使用保序回归进行非线性回归

Machine LearningMachine LearningBeginner
立即练习

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

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

简介

在本实验中,我们将使用 scikit-learn 探索保序回归。保序回归是一种将非递减函数拟合到一维数据的技术。当你的数据在回归模型中不满足线性假设时,它会很有用。

虚拟机使用提示

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

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

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


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL sklearn(("Sklearn")) -.-> sklearn/ModelSelectionandEvaluationGroup(["Model Selection and Evaluation"]) ml(("Machine Learning")) -.-> ml/FrameworkandSoftwareGroup(["Framework and Software"]) sklearn/ModelSelectionandEvaluationGroup -.-> sklearn/isotonic("Isotonic Regression") ml/FrameworkandSoftwareGroup -.-> ml/sklearn("scikit-learn") subgraph Lab Skills sklearn/isotonic -.-> lab-71112{{"使用保序回归进行非线性回归"}} ml/sklearn -.-> lab-71112{{"使用保序回归进行非线性回归"}} end

导入必要的库

让我们从 sklearn.isotonic 模块中导入 IsotonicRegression 类开始。

from sklearn.isotonic import IsotonicRegression

创建示例数据

接下来,我们需要创建一些示例数据来拟合我们的保序回归模型。在这个例子中,我们将生成两个数组 Xy,分别代表输入数据和目标值。

import numpy as np

## 生成随机输入数据
np.random.seed(0)
X = np.random.rand(100)
y = 4 * X + np.random.randn(100)

拟合保序回归模型

现在,我们可以将保序回归模型拟合到我们的数据上。我们创建一个 IsotonicRegression 类的实例,并使用我们的输入数据和目标值调用 fit 方法。

## 拟合保序回归模型
ir = IsotonicRegression()
ir.fit(X, y)

使用模型进行预测

在拟合模型之后,我们可以使用它对新数据进行预测。让我们创建一个新的数组 X_new 并预测相应的目标值。

## 创建用于预测的新数据
X_new = np.linspace(0, 1, 100)
y_pred = ir.predict(X_new)

可视化结果

最后,让我们可视化我们的保序回归模型的结果。我们可以将原始数据点绘制成散点,将预测值绘制成一条线。

import matplotlib.pyplot as plt

## 绘制原始数据和预测值
plt.scatter(X, y, c='b', label='Original Data')
plt.plot(X_new, y_pred, c='r', label='Isotonic Regression')
plt.xlabel('X')
plt.ylabel('y')
plt.legend()
plt.show()

总结

当你拥有不符合线性回归模型假设的非线性数据时,保序回归是一种有用的技术。通过将一个非递减函数拟合到数据上,保序回归提供了一个分段线性近似,它捕捉了数据中的潜在趋势。在这个实验中,我们学习了如何使用scikit-learn的 IsotonicRegression 类来拟合保序回归模型、进行预测以及可视化结果。