[scikit-learn] Fwd: Custom transformer failing check_estimator test

Andreas Mueller t3kcit at gmail.com
Tue Jul 25 16:31:40 EDT 2017


Indeed, it makes sure that the transform is applied to data with the 
same number of samples as the input.
PR welcome to provide a better error message on this!

On 07/25/2017 08:15 AM, Sam Barnett wrote:
> Apologies: I've since worked out what the problem was and have 
> resolved this issue. This was what I was missing in my code:
>
>
> # Check that the input is of the same shape as the one passed
>         # during fit.
>         if X.shape != self.input_shape_:
>             raise ValueError('Shape of input is different from what 
> was seen'
>      'in `fit`')
>
>
> On Tue, Jul 25, 2017 at 9:41 AM, Sam Barnett <sambarnett95 at gmail.com 
> <mailto:sambarnett95 at gmail.com>> wrote:
>
>     This is the Traceback I get:
>
>
>     AssertionErrorTraceback (most recent call last)
>     <ipython-input-5-166b8f0141db> in <module>()
>     ----> 1 check_estimator(OK.Sqizer)
>
>     /Users/Sam/anaconda/lib/python2.7/site-packages/sklearn/utils/estimator_checks.pyc
>     in check_estimator(Estimator)
>     253 check_parameters_default_constructible(name, Estimator)
>     254 for check in _yield_all_checks(name, Estimator):
>     --> 255 check(name, Estimator)
>     256
>     257
>
>     /Users/Sam/anaconda/lib/python2.7/site-packages/sklearn/utils/testing.pyc
>     in wrapper(*args, **kwargs)
>     353             with warnings.catch_warnings():
>     354                 warnings.simplefilter("ignore", self.category)
>     --> 355                 return fn(*args, **kwargs)
>     356
>     357         return wrapper
>
>     /Users/Sam/anaconda/lib/python2.7/site-packages/sklearn/utils/estimator_checks.pyc
>     in check_transformer_general(name, Transformer)
>     578     X = StandardScaler().fit_transform(X)
>     579     X -= X.min()
>     --> 580 _check_transformer(name, Transformer, X, y)
>     581 _check_transformer(name, Transformer, X.tolist(), y.tolist())
>     582
>
>     /Users/Sam/anaconda/lib/python2.7/site-packages/sklearn/utils/estimator_checks.pyc
>     in _check_transformer(name, Transformer, X, y)
>     671 if hasattr(X, 'T'):
>     672             # If it's not an array, it does not have a 'T'
>     property
>     --> 673 assert_raises(ValueError, transformer.transform, X.T)
>     674
>     675
>
>     /Users/Sam/anaconda/lib/python2.7/unittest/case.pyc in
>     assertRaises(self, excClass, callableObj, *args, **kwargs)
>     471             return context
>     472         with context:
>     --> 473 callableObj(*args, **kwargs)
>     474
>     475     def _getAssertEqualityFunc(self, first, second):
>
>     /Users/Sam/anaconda/lib/python2.7/unittest/case.pyc in
>     __exit__(self, exc_type, exc_value, tb)
>     114                 exc_name = str(self.expected)
>     115 raise self.failureException(
>     --> 116 "{0} not raised".format(exc_name))
>     117 if not issubclass(exc_type, self.expected):
>     118             # let unexpected exceptions pass through
>
>     AssertionError: ValueError not raised
>
>
>     On Tue, Jul 25, 2017 at 12:54 AM, Joel Nothman
>     <joel.nothman at gmail.com <mailto:joel.nothman at gmail.com>> wrote:
>
>         what is the failing test? please provide the full traceback.
>
>         On 24 Jul 2017 10:58 pm, "Sam Barnett" <sambarnett95 at gmail.com
>         <mailto:sambarnett95 at gmail.com>> wrote:
>
>             Dear scikit-learn developers,
>
>             I am developing a transformer, named |Sqizer|, that has
>             the ultimate goal of modifying a kernel for use with the
>             |sklearn.svm| package. When given an input data array |X|,
>             |Sqizer.transform(X)| should have as its output the Gram
>             matrix for |X| using the modified version of the kernel.
>             Here is the code for the class so far:
>
>             |classSqizer(BaseEstimator,TransformerMixin):def__init__(self,C=1.0,kernel='rbf',degree=3,gamma=1,coef0=0.0,cut_ord_pair=(2,1)):self.C
>             =C self.kernel =kernel self.degree =degree self.gamma
>             =gamma self.coef0 =coef0 self.cut_ord_pair =cut_ord_pair
>             deffit(self,X,y=None):# Check that X and y have correct
>             shapeX,y =check_X_y(X,y)# Store the classes seen during
>             fitself.classes_ =unique_labels(y)self.X_ =X self.y_ =y
>             returnself deftransform(self,X):X
>             =check_array(X,warn_on_dtype=True)"""Returns Gram matrix
>             corresponding to X, once
>             sqized."""defkPolynom(x,y):return(self.coef0+self.gamma*np.inner(x,y))**self.degree
>             defkGauss(x,y):returnnp.exp(-self.gamma*np.sum(np.square(x-y)))defkLinear(x,y):returnnp.inner(x,y)defkSigmoid(x,y):returnnp.tanh(self.gamma*np.inner(x,y)+self.coef0)defkernselect(kername):switcher
>             ={'linear':kPolynom,'rbf':kGauss,'sigmoid':kLinear,'poly':kSigmoid,}returnswitcher.get(kername,"nothing")cut_off
>             =self.cut_ord_pair[0]order
>             =self.cut_ord_pair[1]fromSeqKernelimporthiSeqKernEval
>             defgetGram(Y):gram_matrix =np.zeros((Y.|
>
>         ...
>
>         [Message clipped]
>         _______________________________________________
>         scikit-learn mailing list
>         scikit-learn at python.org <mailto:scikit-learn at python.org>
>         https://mail.python.org/mailman/listinfo/scikit-learn
>         <https://mail.python.org/mailman/listinfo/scikit-learn>
>
>
>
>
>
> _______________________________________________
> scikit-learn mailing list
> scikit-learn at python.org
> https://mail.python.org/mailman/listinfo/scikit-learn

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/scikit-learn/attachments/20170725/fe8d874e/attachment-0001.html>


More information about the scikit-learn mailing list