对于家庭作业,我得到了数据来创建/训练一个使用 lasso 回归的预测器。我创建了预测器并使用 scikit learn 中的 lasso python 库对其进行训练。
所以现在我有了这个预测器,当给定的输入可以预测输出时。
第二个问题是“扩展您的预测器以使用自举方法报告预测的置信区间”。
我环顾四周,发现人们这样做是为了卑鄙和其他事情的例子。
但是我完全不知道我应该如何进行预测。我正在尝试使用scikit-bootstrap库。
课程工作人员的反应非常迟钝,因此感谢您提供任何帮助。谢谢你。
对于家庭作业,我得到了数据来创建/训练一个使用 lasso 回归的预测器。我创建了预测器并使用 scikit learn 中的 lasso python 库对其进行训练。
所以现在我有了这个预测器,当给定的输入可以预测输出时。
第二个问题是“扩展您的预测器以使用自举方法报告预测的置信区间”。
我环顾四周,发现人们这样做是为了卑鄙和其他事情的例子。
但是我完全不知道我应该如何进行预测。我正在尝试使用scikit-bootstrap库。
课程工作人员的反应非常迟钝,因此感谢您提供任何帮助。谢谢你。
引导是指通过替换重新采样您的数据。也就是说,不是将模型拟合到原始 X 和 y,而是将模型多次拟合到 X 和 y 的重新采样版本。
因此,您会得到 n 个略有不同的模型,可用于创建置信区间。这是这种间隔的视觉示例。
import numpy as np
import matplotlib.pyplot as plt
from sklearn.linear_model import LinearRegression
# Create toy data
x = np.linspace(0, 10, 20)
y = x + (np.random.rand(len(x)) * 10)
# Extend x data to contain another row vector of 1s
X = np.vstack([x, np.ones(len(x))]).T
plt.figure(figsize=(12,8))
for i in range(0, 500):
sample_index = np.random.choice(range(0, len(y)), len(y))
X_samples = X[sample_index]
y_samples = y[sample_index]
lr = LinearRegression()
lr.fit(X_samples, y_samples)
plt.plot(x, lr.predict(X), color='grey', alpha=0.2, zorder=1)
plt.scatter(x,y, marker='o', color='orange', zorder=4)
lr = LinearRegression()
lr.fit(X, y)
plt.plot(x, lr.predict(X), color='red', zorder=5)
如果您想将 scikit 的 API 用于代码的引导部分:
import numpy as np
import matplotlib.pyplot as plt
from sklearn.linear_model import LinearRegression
from sklearn.ensemble import BaggingRegressor
# Create toy data
x = np.linspace(0, 10, 20)
y = x + (np.random.rand(len(x)) * 10)
# Extend x data to contain another row vector of 1s
X = np.vstack([x, np.ones(len(x))]).T
n_estimators = 50
model = BaggingRegressor(LinearRegression(),
n_estimators=n_estimators,
bootstrap=True)
model.fit(X, y)
plt.figure(figsize=(12,8))
# Accessing each base_estimator (already fitted)
for m in model.estimators_:
plt.plot(x, m.predict(X), color='grey', alpha=0.2, zorder=1)
plt.scatter(x,y, marker='o', color='orange', zorder=4)
# "Bagging model" prediction
plt.plot(x, model.predict(X), color='red', zorder=5)