You can't get validation part of current CV split in estimator either way.

On Sun, Sep 20, 2015 at 10:11 PM, okek padokek <defdefdef1...@gmail.com>
wrote:

> So you are suggesting to pass the validation set as a parameter to the
> __init__() of the estimator? But how do I get the current validation set
> from GridSearchCV? Using my above code, do you mean something like this:
>
> my_model = MY_MODEL()
> pipe = Pipeline(steps=[("imputer", imputer), ("scaler", scaler),
> ('my_model', my_model)])
> my_params = dict(my_model__n_epochs = [10, 20], *my_model__validation_set
> = [???]*)
> estimator =
> ​​
> GridSearchCV(pipe, my_params, verbose=5, cv=5)
> estimator.fit(x_train, y_train)
>
>
> ?
>
> On Sun, Sep 20, 2015 at 10:10 AM, Artem <barmaley....@gmail.com> wrote:
>
>> Hi
>>
>> Don't pass any parameters to fit method. Current API assumes that you set
>> all the parameters in estimator's constructor (__init__ method). It's a bit
>> nasty to set validation set during construction stage, but there's no
>> better approach.
>>
>> On Sun, Sep 20, 2015 at 3:47 PM, okek padokek <defdefdef1...@gmail.com>
>> wrote:
>>
>>> Hello,
>>>
>>> I am trying to implement my own estimator. It currently seems to be
>>> working. My fit() function is of the form
>>>
>>> def fit(self, X, y=None):
>>>     ....
>>>     # iteratively tune the params
>>>     ....
>>>     return self
>>>
>>> I would like to modify my fit() so that it can print out validation
>>> costs as it iterates:
>>>
>>> def fit(self, X, y=None, X_valid=None, y_valid=None):
>>>     ....
>>>     # iteratively tune the params
>>>         #occasionally print out the cost on the validation set (X_test,
>>> y_test)
>>>     ....
>>>     return self
>>>
>>> How would I go about passing the validation set when using a pipeline?
>>>
>>> I currently have something like this:
>>>
>>> my_model = MY_MODEL()
>>> pipe = Pipeline(steps=[("imputer", imputer), ("scaler", scaler),
>>> ('my_model', my_model)])
>>> my_params = dict(my_model__n_epochs = [10, 20])
>>> estimator = GridSearchCV(pipe, my_params, verbose=5, cv=5)
>>> estimator.fit(x_train, y_train)
>>>
>>> If I instead try
>>>
>>> estimator.fit(x_train, y_train, x_valid, y_valid)
>>>
>>> then I get an error telling me that fit() does not accept the last two
>>> parameters.
>>>
>>> How can this be done?
>>>
>>> Thanks
>>>
>>>
>>> ------------------------------------------------------------------------------
>>>
>>> _______________________________________________
>>> Scikit-learn-general mailing list
>>> Scikit-learn-general@lists.sourceforge.net
>>> https://lists.sourceforge.net/lists/listinfo/scikit-learn-general
>>>
>>>
>>
>>
>> ------------------------------------------------------------------------------
>>
>> _______________________________________________
>> Scikit-learn-general mailing list
>> Scikit-learn-general@lists.sourceforge.net
>> https://lists.sourceforge.net/lists/listinfo/scikit-learn-general
>>
>>
>
>
> ------------------------------------------------------------------------------
>
> _______________________________________________
> Scikit-learn-general mailing list
> Scikit-learn-general@lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/scikit-learn-general
>
>
------------------------------------------------------------------------------
_______________________________________________
Scikit-learn-general mailing list
Scikit-learn-general@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/scikit-learn-general

Reply via email to