[scikit-learn] Fwd: Custom transformer failing check_estimator test
Sam Barnett
sambarnett95 at gmail.com
Tue Jul 25 08:15:28 EDT 2017
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> 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>
> wrote:
>
>> what is the failing test? please provide the full traceback.
>>
>> On 24 Jul 2017 10:58 pm, "Sam Barnett" <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:
>>>
>>> class Sqizer(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
>>>
>>> def fit(self, X, y=None):
>>> # Check that X and y have correct shape
>>> X, y = check_X_y(X, y)
>>> # Store the classes seen during fit
>>> self.classes_ = unique_labels(y)
>>>
>>> self.X_ = X
>>> self.y_ = y
>>> return self
>>>
>>> def transform(self, X):
>>>
>>> X = check_array(X, warn_on_dtype=True)
>>>
>>> """Returns Gram matrix corresponding to X, once sqized."""
>>> def kPolynom(x,y):
>>> return (self.coef0+self.gamma*np.inner(x,y))**self.degree
>>> def kGauss(x,y):
>>> return np.exp(-self.gamma*np.sum(np.square(x-y)))
>>> def kLinear(x,y):
>>> return np.inner(x,y)
>>> def kSigmoid(x,y):
>>> return np.tanh(self.gamma*np.inner(x,y) +self.coef0)
>>>
>>> def kernselect(kername):
>>> switcher = {
>>> 'linear': kPolynom,
>>> 'rbf': kGauss,
>>> 'sigmoid': kLinear,
>>> 'poly': kSigmoid,
>>> }
>>> return switcher.get(kername, "nothing")
>>>
>>> cut_off = self.cut_ord_pair[0]
>>> order = self.cut_ord_pair[1]
>>>
>>> from SeqKernel import hiSeqKernEval
>>>
>>> def getGram(Y):
>>> gram_matrix = np.zeros((Y.
>>>
>>> ...
>>
>> [Message clipped]
>> _______________________________________________
>> 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/b4919717/attachment-0001.html>
More information about the scikit-learn
mailing list