Beispiel #1
0
X = np.sort(5 * rng.rand(80, 1), axis=0)
y = np.sin(X).ravel()
y[::5] += 3 * (0.5 - rng.rand(16))

# Fit regression model
regr_1 = DecisionTree(task='regression', criterion='mse', max_depth=1)
regr_2 = DecisionTree(task='regression',
                      criterion='mse',
                      max_depth=15,
                      min_samples_leaf=1)
regr_xgb = XGBoostRegressor(n_estimators=50,
                            max_depth=1,
                            gamma=0.005,
                            lambd=1.0,
                            tree_method='hist')
regr_1.fit(X, y)
regr_2.fit(X, y)
regr_xgb.fit(X, y)

# Predict
X_test = np.arange(0.0, 5.0, 0.01)[:, np.newaxis]
dfX_test = pd.DataFrame(X_test, columns=['X'])
y_1 = np.array(regr_1.predict(dfX_test))
y_2 = np.array(regr_2.predict(dfX_test))
y_xgb = np.array(regr_xgb.predict(dfX_test))

# Plot the results
plt.figure(1, (15, 10))
plt.scatter(X, y, s=20, edgecolor="black", c="darkorange", label="data")
plt.plot(X_test, y_1, color="cornflowerblue", label="max_depth=2", linewidth=2)
plt.plot(X_test, y_2, color="yellowgreen", label="max_depth=15", linewidth=2)
# Create a random dataset
rng = np.random.RandomState(205)
X = np.sort(5 * rng.rand(80, 1), axis=0)
y = np.sin(X).ravel()
y[::5] += 3 * (0.5 - rng.rand(16))


# Fit regression model
#regr_1 = DecisionTree(task='regression', criterion='mse', max_depth=1)
dt = DecisionTree(task='regression', criterion='mse', max_depth=15, min_samples_leaf=3,
                      verbose=True)
rf_params = {'n_estimators': 100, 'max_depth': 15, 'min_samples_leaf': 5}
rf = RandomForest(task='regression', **rf_params)
skrf = skRFR(**rf_params)
dt.fit(X, y)
rf.fit(X, y)
skrf.fit(X, y)

# Predict
X_test = np.arange(0.0, 5.0, 0.01)[:, np.newaxis]
y_dt = dt.predict(X_test)
y_rf = rf.predict(X_test)
y_skrf = skrf.predict(X_test)

# Plot the results
plt.figure(1, (15, 10))
plt.scatter(X, y, s=20, edgecolor="black",
            c="darkorange", label="data")
plt.plot(X_test, y_dt, color="cornflowerblue",
         label="DecisionTree", linewidth=2)