[RMSLE](https://www.datascienceland.com/blog/difference-between-rmse-and-rmsle-656/) metric is used for the evaluation. Taking logs (the **L** in the metric abbreviature) means that errors in predicting expensive houses and cheap houses will affect the result equally.

```
def rmsle(y_true, y_pred):
    return np.sqrt(mean_squared_error(np.log1p(y_true), np.log1p(y_pred)))
```

### Submission File

For each ID in the test set, you must predict a probability for the TARGET variable. The file should contain a header and have the following format:

    id,meter_reading
    1,0
    2,0
    3,0
    etc.

To create a submission file use the following function:

```
def generate_submission(predictions, output_file):
    if len(predictions) != len(sample_submission):
        raise ValueError("The length of predictions must match the sample_submission DataFrame.")
    sample_submission['SalePrice'] = predictions
    sample_submission.to_csv(output_file, index=False)
```