[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