Datalens.ai
← All algorithms

ENSEMBLE

ExtraTreesRegressor

An extra-trees regressor.

Example of usage

Illustrate how ExtraTreesRegressor processes labelled retail behaviour records.

Usage / limitations

+Use when: Combine models for improved predictions.

−Limitations: Check input requirements, mathematical assumptions and version-specific behaviour before using.

Mathematical formula

Ensemble predictions combine multiple learners; see the method-specific estimator documentation for its exact objective.
Sample dataShow
{
  "variable": "customer_records",
  "domain": "Retail customer behaviour and quarterly retention",
  "feature_names": [
    "monthly_spend_gbp",
    "visits_per_month",
    "tenure_months",
    "support_tickets"
  ],
  "records": [
    {
      "customer_id": "R01",
      "monthly_spend_gbp": 28.0,
      "visits_per_month": 2,
      "tenure_months": 2,
      "support_tickets": 0,
      "retained_next_quarter": 0,
      "projected_order_value_gbp": 44.0
    },
    {
      "customer_id": "R02",
      "monthly_spend_gbp": 40.5,
      "visits_per_month": 9,
      "tenure_months": 7,
      "support_tickets": 3,
      "retained_next_quarter": 0,
      "projected_order_value_gbp": 73.77
    },
    {
      "customer_id": "R03",
      "monthly_spend_gbp": 53.0,
      "visits_per_month": 16,
      "tenure_months": 12,
      "support_tickets": 0,
      "retained_next_quarter": 0,
      "projected_order_value_gbp": 119.75
    },
    {
      "customer_id": "R04",
      "monthly_spend_gbp": 61.0,
      "visits_per_month": 8,
      "tenure_months": 17,
      "support_tickets": 3,
      "retained_next_quarter": 0,
      "projected_order_value_gbp": 95.15
    },
    {
      "customer_id": "R05",
      "monthly_spend_gbp": 73.5,
      "visits_per_month": 15,
      "tenure_months": 22,
      "support_tickets": 0,
      "retained_next_quarter": 1,
      "projected_order_value_gbp": 134.32
    },
    {
      "customer_id": "R06",
      "monthly_spend_gbp": 86.0,
      "visits_per_month": 7,
      "tenure_months": 27,
      "support_tickets": 3,
      "retained_next_quarter": 0,
      "projected_order_value_gbp": 113.1
    },
    {
      "customer_id": "R07",
      "monthly_spend_gbp": 94.0,
      "visits_per_month": 14,
      "tenure_months": 2,
      "support_tickets": 0,
      "retained_next_quarter": 1,
      "projected_order_value_gbp": 137.7
    },
    {
      "customer_id": "R08",
      "monthly_spend_gbp": 106.5,
      "visits_per_month": 6,
      "tenure_months": 7,
      "support_tickets": 3,
      "retained_next_quarter": 0,
      "projected_order_value_gbp": 116.47
    },
    {
      "customer_id": "R09",
      "monthly_spend_gbp": 119.0,
      "visits_per_month": 13,
      "tenure_months": 12,
      "support_tickets": 0,
      "retained_next_quarter": 1,
      "projected_order_value_gbp": 155.65
    },
    {
      "customer_id": "R10",
      "monthly_spend_gbp": 127.0,
      "visits_per_month": 5,
      "tenure_months": 17,
      "support_tickets": 3,
      "retained_next_quarter": 0,
      "projected_order_value_gbp": 131.05
    },
    {
      "customer_id": "R11",
      "monthly_spend_gbp": 29.5,
      "visits_per_month": 12,
      "tenure_months": 22,
      "support_tickets": 0,
      "retained_next_quarter": 1,
      "projected_order_value_gbp": 94.53
    },
    {
      "customer_id": "R12",
      "monthly_spend_gbp": 42.0,
      "visits_per_month": 4,
      "tenure_months": 27,
      "support_tickets": 3,
      "retained_next_quarter": 0,
      "projected_order_value_gbp": 73.3
    },
    {
      "customer_id": "R13",
      "monthly_spend_gbp": 50.0,
      "visits_per_month": 11,
      "tenure_months": 2,
      "support_tickets": 0,
      "retained_next_quarter": 0,
      "projected_order_value_gbp": 91.1
    },
    {
      "customer_id": "R14",
      "monthly_spend_gbp": 62.5,
      "visits_per_month": 3,
      "tenure_months": 7,
      "support_tickets": 3,
      "retained_next_quarter": 0,
      "projected_order_value_gbp": 69.88
    },
    {
      "customer_id": "R15",
      "monthly_spend_gbp": 75.0,
      "visits_per_month": 10,
      "tenure_months": 12,
      "support_tickets": 0,
      "retained_next_quarter": 0,
      "projected_order_value_gbp": 115.85
    },
    {
      "customer_id": "R16",
      "monthly_spend_gbp": 83.0,
      "visits_per_month": 2,
      "tenure_months": 17,
      "support_tickets": 3,
      "retained_next_quarter": 0,
      "projected_order_value_gbp": 91.25
    },
    {
      "customer_id": "R17",
      "monthly_spend_gbp": 95.5,
      "visits_per_month": 9,
      "tenure_months": 22,
      "support_tickets": 0,
      "retained_next_quarter": 1,
      "projected_order_value_gbp": 130.42
    },
    {
      "customer_id": "R18",
      "monthly_spend_gbp": 108.0,
      "visits_per_month": 16,
      "tenure_months": 27,
      "support_tickets": 3,
      "retained_next_quarter": 1,
      "projected_order_value_gbp": 160.2
    },
    {
      "customer_id": "R19",
      "monthly_spend_gbp": 116.0,
      "visits_per_month": 8,
      "tenure_months": 2,
      "support_tickets": 0,
      "retained_next_quarter": 1,
      "projected_order_value_gbp": 133.8
    },
    {
      "customer_id": "R20",
      "monthly_spend_gbp": 128.5,
      "visits_per_month": 15,
      "tenure_months": 7,
      "support_tickets": 3,
      "retained_next_quarter": 1,
      "projected_order_value_gbp": 163.57
    },
    {
      "customer_id": "R21",
      "monthly_spend_gbp": 31.0,
      "visits_per_month": 7,
      "tenure_months": 12,
      "support_tickets": 0,
      "retained_next_quarter": 0,
      "projected_order_value_gbp": 69.25
    },
    {
      "customer_id": "R22",
      "monthly_spend_gbp": 39.0,
      "visits_per_month": 14,
      "tenure_months": 17,
      "support_tickets": 3,
      "retained_next_quarter": 0,
      "projected_order_value_gbp": 95.65
    },
    {
      "customer_id": "R23",
      "monthly_spend_gbp": 51.5,
      "visits_per_month": 6,
      "tenure_months": 22,
      "support_tickets": 0,
      "retained_next_quarter": 1,
      "projected_order_value_gbp": 90.63
    },
    {
      "customer_id": "R24",
      "monthly_spend_gbp": 64.0,
      "visits_per_month": 13,
      "tenure_months": 27,
      "support_tickets": 3,
      "retained_next_quarter": 0,
      "projected_order_value_gbp": 120.4
    },
    {
      "customer_id": "R25",
      "monthly_spend_gbp": 72.0,
      "visits_per_month": 5,
      "tenure_months": 2,
      "support_tickets": 0,
      "retained_next_quarter": 0,
      "projected_order_value_gbp": 87.2
    },
    {
      "customer_id": "R26",
      "monthly_spend_gbp": 84.5,
      "visits_per_month": 12,
      "tenure_months": 7,
      "support_tickets": 3,
      "retained_next_quarter": 1,
      "projected_order_value_gbp": 116.98
    },
    {
      "customer_id": "R27",
      "monthly_spend_gbp": 97.0,
      "visits_per_month": 4,
      "tenure_months": 12,
      "support_tickets": 0,
      "retained_next_quarter": 0,
      "projected_order_value_gbp": 111.95
    },
    {
      "customer_id": "R28",
      "monthly_spend_gbp": 105.0,
      "visits_per_month": 11,
      "tenure_months": 17,
      "support_tickets": 3,
      "retained_next_quarter": 1,
      "projected_order_value_gbp": 138.35
    },
    {
      "customer_id": "R29",
      "monthly_spend_gbp": 117.5,
      "visits_per_month": 3,
      "tenure_months": 22,
      "support_tickets": 0,
      "retained_next_quarter": 1,
      "projected_order_value_gbp": 126.53
    },
    {
      "customer_id": "R30",
      "monthly_spend_gbp": 130.0,
      "visits_per_month": 10,
      "tenure_months": 27,
      "support_tickets": 3,
      "retained_next_quarter": 1,
      "projected_order_value_gbp": 156.3
    },
    {
      "customer_id": "R31",
      "monthly_spend_gbp": 28.0,
      "visits_per_month": 2,
      "tenure_months": 2,
      "support_tickets": 0,
      "retained_next_quarter": 0,
      "projected_order_value_gbp": 47.4
    },
    {
      "customer_id": "R32",
      "monthly_spend_gbp": 40.5,
      "visits_per_month": 9,
      "tenure_months": 7,
      "support_tickets": 3,
      "retained_next_quarter": 0,
      "projected_order_value_gbp": 77.17
    },
    {
      "customer_id": "R33",
      "monthly_spend_gbp": 53.0,
      "visits_per_month": 16,
      "tenure_months": 12,
      "support_tickets": 0,
      "retained_next_quarter": 0,
      "projected_order_value_gbp": 116.35
    },
    {
      "customer_id": "R34",
      "monthly_spend_gbp": 61.0,
      "visits_per_month": 8,
      "tenure_months": 17,
      "support_tickets": 3,
      "retained_next_quarter": 0,
      "projected_order_value_gbp": 91.75
    },
    {
      "customer_id": "R35",
      "monthly_spend_gbp": 73.5,
      "visits_per_month": 15,
      "tenure_months": 22,
      "support_tickets": 0,
      "retained_next_quarter": 1,
      "projected_order_value_gbp": 137.72
    },
    {
      "customer_id": "R36",
      "monthly_spend_gbp": 86.0,
      "visits_per_month": 7,
      "tenure_months": 27,
      "support_tickets": 3,
      "retained_next_quarter": 0,
      "projected_order_value_gbp": 116.5
    }
  ]
}

Code example (Python)

# DataLens.ai example — customer retention and order forecasting.
# The sample customer records are included when you copy input + code + test.
import numpy as np
from sklearn.ensemble import ExtraTreesRegressor

# Select named customer attributes rather than anonymous numbers.
feature_names = customer_records["feature_names"]
X = np.array([[customer[feature] for feature in feature_names]
              for customer in customer_records["records"]], dtype=float)
# Create the observed target and fit this ensemble estimator.
y = np.array([customer["projected_order_value_gbp"] for customer in customer_records["records"]])
model = ExtraTreesRegressor(n_estimators=15, random_state=7)
model.fit(X, y)

# Predict from the same illustrative dataset (not an accuracy benchmark).
predictions = model.predict(X)
assert len(predictions) == len(y)
assert np.isfinite(predictions).all()
assert predictions.min() >= 0

# Assertions passed: the algorithm ran successfully.
print("Expected output verified")