SKLearner Home | About | Contact | Examples

Scikit-Learn MultiTaskElasticNetCV Model

MultiTaskElasticNetCV is a regression algorithm that handles multiple regression targets simultaneously, combining linear regression with L1 and L2 regularization. It automatically tunes its hyperparameters through cross-validation.

Key hyperparameters include alphas (array of alpha values to try), l1_ratio (mixing parameter), and cv (number of cross-validation folds). This algorithm is suitable for multi-output regression tasks.

from sklearn.datasets import make_regression
from sklearn.model_selection import train_test_split
from sklearn.linear_model import MultiTaskElasticNetCV
from sklearn.metrics import mean_squared_error

# generate synthetic multi-output regression dataset
X, y = make_regression(n_samples=100, n_features=5, n_targets=3, noise=0.1, random_state=1)

# split into train and test sets
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=1)

# create model
model = MultiTaskElasticNetCV(cv=5)

# fit model
model.fit(X_train, y_train)

# evaluate model
yhat = model.predict(X_test)
mse = mean_squared_error(y_test, yhat)
print('Mean Squared Error: %.3f' % mse)

# make a prediction
row = [[0.5, -0.3, 0.8, 0.2, -0.1]]
yhat = model.predict(row)
print('Predicted:', yhat[0])

Running the example gives an output like:

Mean Squared Error: 156.276
Predicted: [41.56558769 14.22516107 49.48343957]

The steps are as follows:

  1. A synthetic multi-output regression dataset is generated using the make_regression() function. This creates a dataset with a specified number of samples (n_samples), features (n_features), targets (n_targets), noise level, and a fixed random seed (random_state) for reproducibility. The dataset is split into training and test sets using train_test_split().

  2. A MultiTaskElasticNetCV model is instantiated with cross-validation folds (cv) set to 5. This model will automatically tune the alpha and l1_ratio parameters through cross-validation.

  3. The model is trained on the training data using the fit() method.

  4. The performance of the model is evaluated by comparing the predictions (yhat) to the actual values (y_test) using the mean squared error metric.

  5. A single prediction can be made by passing a new data sample to the predict() method.

This example demonstrates the application of MultiTaskElasticNetCV for multi-output regression, highlighting the simplicity of training and evaluating the model with cross-validation to automatically tune hyperparameters.



See Also