The difference is the functional form versus the context manager. you can't add extra parameters to the function, only to the context manager.

On 27 Jul 2017 12:56 am, "Andreas Mueller" <t3kcit@gmail.com> wrote:
Hm, it would be nice to do this in a way that relies less on pytest, but I guess that would be tricky.
One way would be to use assert_raise_message to make clear what the expected error is.
But that would make the current test more strict - not necessarily that bad, I guess?

It looks like all asserts in unittest have a "msg" argument... apart from assertRaises:
https://docs.python.org/2/library/unittest.html#unittest.TestCase.assertRaises

That has been fixed in Python 3.3, though:
https://docs.python.org/3/library/unittest.html#unittest.TestCase.assertRaises

So maybe we should just do a backport for assert_raises and assert_raises_regex?


On 07/25/2017 07:58 PM, Joel Nothman wrote:
One advantage of moving to pytest is that we can put messages into pytest.raises, and we should emphasise this in moving the check_estimator assertions to pytest. But I'm also not sure how we do the deprecation of nosetests for check_estimator in a way that is friendly to our contribbers...

On 26 July 2017 at 06:31, Andreas Mueller <t3kcit@gmail.com> wrote:
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@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@gmail.com> wrote:
what is the failing test? please provide the full traceback.

On 24 Jul 2017 10:58 pm, "Sam Barnett" <sambarnett95@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 XSqizer.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(

_______________________________________________
scikit-learn mailing list
scikit-learn@python.org
https://mail.python.org/mailman/listinfo/scikit-learn

...