我们从Python开源项目中,提取了以下3个代码示例,用于说明如何使用sklearn.utils.gen_even_slices()。
def anomaly_score(self, X=None): """Compute anomaly scores for test samples. Parameters ---------- X : array-like of shape (n_samples, n_features), default None Test samples. Returns ------- y_score : array-like of shape (n_samples,) Anomaly scores for test samples. """ check_is_fitted(self, '_knn') if X is None: X = self._knn._fit_X ind = self._knn.kneighbors(None, return_distance=False) else: X = check_array(X) ind = self._knn.kneighbors(X, return_distance=False) n_samples, _ = X.shape try: result = Parallel(self.n_jobs)( delayed(_abof)( X[s], ind[s], self._knn._fit_X ) for s in gen_even_slices(n_samples, self.n_jobs) ) except FloatingPointError as e: raise ValueError('X must not contain training samples') from e return -np.concatenate(result)
def fit(self, X, y, max_epochs, shuffle_data, verbose=0): # get all sizes n_samples, n_features = X.shape if y.shape[0] != n_samples: raise ValueError("Shapes of X and y don't fit.") self.n_outs = y.shape[1] #n_batches = int(np.ceil(float(n_samples) / self.batch_size)) n_batches = n_samples / self.batch_size if n_samples % self.batch_size != 0: warnings.warn("Discarding some samples: \ sample size not divisible by chunk size.") n_iterations = int(max_epochs * n_batches) if shuffle_data: X, y = shuffle(X, y) # generate batch slices batch_slices = list(gen_even_slices(n_batches * self.batch_size, n_batches)) # generate weights. # TODO: smart initialization self.weights1_ = np.random.uniform(size=(n_features, self.n_hidden))/np.sqrt(n_features) self.bias1_ = np.zeros(self.n_hidden) self.weights2_ = np.random.uniform(size=(self.n_hidden, self.n_outs))/np.sqrt(self.n_hidden) self.bias2_ = np.zeros(self.n_outs) # preallocate memory x_hidden = np.empty((self.batch_size, self.n_hidden)) delta_h = np.empty((self.batch_size, self.n_hidden)) x_output = np.empty((self.batch_size, self.n_outs)) delta_o = np.empty((self.batch_size, self.n_outs)) # main loop for i, batch_slice in izip(xrange(n_iterations), cycle(batch_slices)): self._forward(i, X, batch_slice, x_hidden, x_output) self._backward(i, X, y, batch_slice, x_hidden, x_output, delta_o, delta_h) return self
def test_gen_even_slices(): # check that gen_even_slices contains all samples some_range = range(10) joined_range = list(chain(*[some_range[slice] for slice in gen_even_slices(10, 3)])) assert_array_equal(some_range, joined_range) # check that passing negative n_chunks raises an error slices = gen_even_slices(10, -1) assert_raises_regex(ValueError, "gen_even_slices got n_packs=-1, must be" " >=1", next, slices)