# Custom Performance Metric

## Preliminaries

```
# Load libraries
from sklearn.metrics import make_scorer, r2_score
from sklearn.model_selection import train_test_split
from sklearn.linear_model import Ridge
from sklearn.datasets import make_regression
```

## Create Feature

```
# Generate features matrix and target vector
X, y = make_regression(n_samples = 100,
n_features = 3,
random_state = 1)
# Create training set and test set
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.10, random_state=1)
```

## Train model

```
# Create ridge regression object
classifier = Ridge()
# Train ridge regression model
model = classifier.fit(X_train, y_train)
```

## Create Custom Performance Metric

For this example we are just calculating the r-squared score, but we can see that any calculation can be used.

```
# Create custom metric
def custom_metric(y_test, y_pred):
# Calculate r-squared score
r2 = r2_score(y_test, y_pred)
# Return r-squared score
return r2
```

## Make Custom Metric A Scorer Object

```
# Make scorer and define that higher scores are better
score = make_scorer(custom_metric, greater_is_better=True)
```

## User Scorer To Evaluate Model Performance

```
# Apply custom scorer to ridge regression
score(model, X_test, y_test)
```

```
0.99979061028820582
```