Создание пользовательских регрессоров в sklearn - PullRequest
0 голосов
/ 26 октября 2018

Я хотел бы использовать пользовательский регрессор с sklearn GridSearchCV.Суть его аналогична созданию пользовательского классификатора - как показано в этом блоге:

http://danielhnyk.cz/creating-your-own-estimator-scikit-learn/

Вот сокращенная / отредактированная часть кода из блога - показывая некоторые изнеобходимые методы для переопределения.

from sklearn.base import BaseEstimator, RegressorMixin

class MyCustomClassifier(BaseEstimator, RegressorMixin):  
    """An example of classifier"""

    def __init__(self, intValue=0, stringParam="defaultValue", otherParam=None):
        """
        Called when initializing the classifier
        """
        self.intValue = intValue
        self.stringParam = stringParam

    def fit(self, X, y=None):
        self.treshold_ = (sum(X)/len(X)) + self.intValue  # mean + intValue

        return self

    def _meaning(self, x):
        # returns True/False according to fitted classifier
        # notice underscore on the beginning
        return( True if x >= self.treshold_ else False )

    def predict(self, X, y=None):
         ..

Вещи, которые будут одинаковыми между Регрессором и Классификатором, вероятно, будут __init__, fit, predict методами: я, вероятно, смогу собрать это воедино.Но как насчет эквивалентов __meaning?Или другие тонкие соображения для Regressor, которые не могут быть очевидными / ясными?

Вот скелет, с которого я начинаю:

from sklearn.base import BaseEstimator, RegressorMixin
class MyCustomRegressor(BaseEstimator, RegressorMixin):
    def __init__(self, regressorMethod):
      self.regressorMethod = regressorMethod

    def fit(self, X, y=None):
      self.regressorMethod(X,y)
      return self

Насколько я понимаю, scoreметод будет использоваться GridSearchCv ..?

...