我想使用 Pipeline 和 TransformedTargetRegressor 来处理 BaggingRegressor 及其所有估计器上的所有缩放(数据和目标)。
我的第一次尝试效果很好(没有使用 Pipeline 和 TransformedTargetRegressor)
$ cat test1.py
#!/usr/bin/python
# -*- coding: UTF-8 -*-
import numpy as np
import matplotlib.pyplot as plt
from sklearn.ensemble import BaggingRegressor
from sklearn.svm import SVR
def f(x):
return x*np.cos(x) + np.random.normal(size=500)*2
def main():
# Generate random data.
x = np.linspace(0, 10, 500)
rng = np.random.RandomState(0)
rng.shuffle(x)
x = np.sort(x[:])
y = f(x)
# Plot random data.
fig, axis = plt.subplots(1, 1, figsize=(20, 10))
axis.plot(x, y, 'o', color='black', markersize=2, label='random data')
# Create bagging models.
model = BaggingRegressor(n_estimators=5, base_estimator=SVR())
x_augmented = np.array([x, x**2, x**3, x**4, x**5]).T
model.fit(x_augmented, y)
# Plot intermediate regression estimations.
axis.plot(x, model.predict(x_augmented), '-', color='red', label=model.__class__.__name__)
for i, tree in enumerate(model.estimators_):
y_pred = tree.predict(x_augmented)
axis.plot(x, y_pred, '--', label='tree '+str(i))
axis.axis('off')
axis.legend()
plt.show()
if __name__ == '__main__':
main()
哪个可以:装袋回归器叠加到所有估计器上
慕少森
相关分类