[scikit-learn] Malformed input for SVC(kernel='precomputed').predict()
Sam Barnett
sambarnett95 at gmail.com
Thu Aug 17 05:22:21 EDT 2017
I am rolling classifier based on SVC which computes a custom Gram matrix
and runs this through the SVC classifier with kernel = 'precomputed'. While
this works fine with the fit method, I face a dilemma with the predict
method, shown here:
def predict(self, X):
"""Run the predict method of the previously-instantiated SVM
classifier, returning the predicted classes for test set X."""
# Check is fit had been called
check_is_fitted(self, ['X_', 'y_'])
# Input validation
X = check_array(X)
cut_off = self.cut_ord_pair[0]
order = self.cut_ord_pair[1]
X_gram = seq_kernel_free(X, self.X_, \
pri_kernel=kernselect(self.kernel, self.coef0, self.gamma,
self.degree, self.scale), \
cut_off=cut_off, order=order)
X_gram = np.nan_to_num(X_gram)
return self.ord_svc_.predict(X_gram)
This will run on any dataset just fine. However, it fails the
check_estimator test. Specifically, when trying to raise an error for
malformed input on predict (in check_classifiers_train), it says that a
ValueError is not raised. Yet if I change the order of X and self.X_ in
seq_kernel_free (which computes the [n_samples_train, n_samples_test] Gram
matrix), it passes the check_estimator test yet fails to run the predict
method.
How do I resolve both issues simultaneously?
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/scikit-learn/attachments/20170817/8194a94c/attachment-0001.html>
More information about the scikit-learn
mailing list