保序回归#

在生成的数据上展示保序回归(具有同方差均匀噪声的非线性单调趋势)。

保序回归算法在训练数据上找到函数的非递减近似,同时最小化均方误差。这种非参数模型的优点在于,它除了单调性之外,不对目标函数的形状做任何假设。为了比较,还展示了线性回归。

右侧的图显示了通过阈值点的线性插值得到的模型预测函数。阈值点是训练输入观测值的一个子集,其匹配的目标值由保序非参数拟合计算得出。

# 作者:scikit-learn 开发者
# SPDX-License-Identifier: BSD-3-Clause

import matplotlib.pyplot as plt
import numpy as np
from matplotlib.collections import LineCollection

from sklearn.isotonic import IsotonicRegression
from sklearn.linear_model import LinearRegression
from sklearn.utils import check_random_state

n = 100
x = np.arange(n)
rs = check_random_state(0)
y = rs.randint(-50, 50, size=(n,)) + 50.0 * np.log1p(np.arange(n))

拟合等渗回归和线性回归模型:

ir = IsotonicRegression(out_of_bounds="clip")
y_ = ir.fit_transform(x, y)

lr = LinearRegression()
lr.fit(x[:, np.newaxis], y)  # x needs to be 2d for LinearRegression
LinearRegression()
In a Jupyter environment, please rerun this cell to show the HTML representation or trust the notebook.
On GitHub, the HTML representation is unable to render, please try loading this page with nbviewer.org.


绘制结果:

segments = [[[i, y[i]], [i, y_[i]]] for i in range(n)]
lc = LineCollection(segments, zorder=0)
lc.set_array(np.ones(len(y)))
lc.set_linewidths(np.full(n, 0.5))

fig, (ax0, ax1) = plt.subplots(ncols=2, figsize=(12, 6))

ax0.plot(x, y, "C0.", markersize=12)
ax0.plot(x, y_, "C1.-", markersize=12)
ax0.plot(x, lr.predict(x[:, np.newaxis]), "C2-")
ax0.add_collection(lc)
ax0.legend(("Training data", "Isotonic fit", "Linear fit"), loc="lower right")
ax0.set_title("Isotonic regression fit on noisy data (n=%d)" % n)

x_test = np.linspace(-10, 110, 1000)
ax1.plot(x_test, ir.predict(x_test), "C1-")
ax1.plot(ir.X_thresholds_, ir.y_thresholds_, "C1.", markersize=12)
ax1.set_title("Prediction function (%d thresholds)" % len(ir.X_thresholds_))

plt.show()
Isotonic regression fit on noisy data (n=100), Prediction function (36 thresholds)

请注意,我们显式地将 out_of_bounds="clip" 传递给 IsotonicRegression 的构造函数,以控制模型在训练集中观察到的数据范围之外进行外推的方法。这种“剪辑”外推可以在右侧的决策函数图中看到。

Total running time of the script: (0 minutes 0.066 seconds)

Related examples

转换回归模型中的目标变量的效果

转换回归模型中的目标变量的效果

流水线:将PCA和逻辑回归连接起来

流水线:将PCA和逻辑回归连接起来

绘制随机生成的多标签数据集

绘制随机生成的多标签数据集

比较交叉分解方法

比较交叉分解方法

Gallery generated by Sphinx-Gallery