Я хотел бы использовать пользовательский регрессор с 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 ..?