> @agramfort Is it cleaner/ better to replace L557 - 572 by

>     X, y = check_arrays(X, y)

That's cleaner.

>     lb = LabelBinarizer(neg_label=-1, pos_label=1)

Usually, we keep track of the binarize as an attribute of the estimator
class, because we may need to use its inverse_transform method later.

>     y = lb.fit_transform(y)
>     if len(self.classes_) != 2:

Does this actually works? In other terms, where is self.classes_ set?

>         raise ValueError("LogisticRegressionCV works only on 2 "
>                          "class problems. Please use "
>                          "OneVsOneClassifier or OneVsRestClassifier")
>     y = np.ravel(y)

Don't ravel. Raise an error if the shape is not right, but don't ravel,
you are loosing information on what was input, and you won't be able to
track why the code is failing in later lines.