ev = eval_metrics(y_test, np.round(model.predict(X_test)))
ev1 = eval_metrics(y_test, np.round(best_model.predict(X_test)))
ev_total = eval_metrics(y_test, best_pred_total)

features1 = model.feature_importances_
feature_rank1 = pd.Series(features1, index = list(X.columns)).sort_values(ascending=False)
eval_metrics1 = model.eval_metrics(validate_pool, ['RMSE', 'MAE', 'R2'], plot=True)

model.save_model('catboost_model.dump')

import hyperopt

best_pred = best_model.predict(X_test)
model_score = best_model.score(X_test, y_test)
model.get_test_eval()
weights = train_pool.get_weight()
model.get_weight()


cv_data = cv(
    Pool(X,  y),
    model.get_params(),
    plot=True
)


print('Best validation accuracy score: {:.2f}±{:.2f} on step {}'.format(
    np.max(cv_data['test-R2-mean']),
    cv_data['test-R2-std'][np.argmax(cv_data['test-RMSE-mean'])],
    np.argmax(cv_data['test-RMSE-mean'])
))