Оценка регрессии с метрикой в ​​качестве аргумента в sklearn - PullRequest
1 голос
/ 18 сентября 2019

Я ищу решение sklearn для получения оценки регрессии, не зная заранее метрики, поэтому я могу сделать что-то вроде

score = regression_score(y_true, y_pred, metric="mean_squared_error")

, сейчас я использую несколько операторов if и вызовы различных функций, которые выглядят некрасиво, например

if metric == "mean_squared_error":
   score = sklearn.metrics.mean_squared_error(y_true, y_pred)
if metric == "neg_mean_squared_error:
   ...

1 Ответ

1 голос
/ 19 сентября 2019

Вы можете использовать getattr для загрузки требуемой функции.Пожалуйста, используйте измененную функцию ниже:

import sklearn.metrics

def regression_score(y_true, y_pred, metric):
    function = getattr(sklearn.metrics, metric)
    return function(y_true, y_pred)

ВЫБОР ОБРАЗЦА

import numpy as np
y_true = np.array([2,3,4,1])
y_pred = np.array([1,3,1,2])

regression_score(y_true,y_pred,"mean_absolute_error")
1.25

regression_score(y_true,y_pred,"mean_squared_error")
2.75

Таким образом, в основном у вас есть только одна функция без условий if, которая выполнит вашуработа.

Надеюсь, это поможет!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...