简介
在本实验中,我们将使用 scikit-learn 探索保序回归。保序回归是一种将非递减函数拟合到一维数据的技术。当你的数据在回归模型中不满足线性假设时,它会很有用。
虚拟机使用提示
虚拟机启动完成后,点击左上角切换到“笔记本”标签,以访问 Jupyter Notebook 进行练习。
有时,你可能需要等待几秒钟让 Jupyter Notebook 完成加载。由于 Jupyter Notebook 的限制,操作验证无法自动化。
如果你在学习过程中遇到问题,随时向 Labby 提问。课程结束后提供反馈,我们会及时为你解决问题。
导入必要的库
让我们从 sklearn.isotonic 模块中导入 IsotonicRegression 类开始。
from sklearn.isotonic import IsotonicRegression
创建示例数据
接下来,我们需要创建一些示例数据来拟合我们的保序回归模型。在这个例子中,我们将生成两个数组 X 和 y,分别代表输入数据和目标值。
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 类来拟合保序回归模型、进行预测以及可视化结果。