def fit(self, X, y): n_samples = X.shape[0] rs = check_random_state(self.random_state) self.label_binarizer_ = LabelBinarizer(neg_label=-1, pos_label=1) Y = self.label_binarizer_.fit_transform(y) self.classes_ = self.label_binarizer_.classes_.astype(np.int32) n_vectors = Y.shape[1] dual_coef = np.zeros((n_vectors, n_samples), dtype=np.float64) if self.warm_start and self.dual_coef_ is not None: dual_coef[:, self.support_indices_] = self.dual_coef_ self.dual_coef_ = dual_coef coef = np.empty(0, dtype=np.float64) kernel = self._get_kernel() kcache = KernelCache(kernel, n_samples, self.cache_mb, 1, self.verbose) self.support_vectors_ = X self.intercept_ = np.zeros(n_vectors, dtype=np.float64) for i in xrange(n_vectors): _dual_cd(self, coef, self.dual_coef_[i], X, Y[:, i], kcache, False, self.selection, self.search_size, self.termination, self.sv_upper_bound, self.C, self.loss, self.max_iter, rs, self.tol, self.shrinking, self.callback, verbose=self.verbose) sv = np.sum(self.dual_coef_ != 0, axis=0, dtype=bool) self.support_indices_ = np.arange(n_samples)[sv] if self.kernel != "precomputed": self.dual_coef_ = np.ascontiguousarray(self.dual_coef_[:, sv]) mask = safe_mask(X, sv) self.support_vectors_ = X[mask] if self.verbose >= 1: print "Number of support vectors:", np.sum(sv) return self
def fit(self, X, y): n_samples, n_features = X.shape rs = check_random_state(self.random_state) self.label_binarizer_ = LabelBinarizer(neg_label=-1, pos_label=1) Y = self.label_binarizer_.fit_transform(y) n_vectors = Y.shape[1] if not self.warm_start or self.coef_ is None: self.coef_ = np.zeros((n_vectors, n_features), dtype=np.float64) self.dual_coef_ = np.zeros((n_vectors, n_samples), dtype=np.float64) kernel = get_kernel("linear") kcache = KernelCache(kernel, n_samples, 0, 0, self.verbose) for i in xrange(n_vectors): _dual_cd(self, self.coef_[i], self.dual_coef_[i], X, Y[:, i], kcache, True, "permute", 60, self.termination, self.sv_upper_bound, self.C, self.loss, self.max_iter, rs, self.tol, self.shrinking, self.callback, verbose=self.verbose) return self