def test_early_stopping_callback_object(n_samples=10, n_features=30): # This test evolves w so that every line of th _EarlyStoppingCallback # code is executed a some point. This a kind of code fuzzing. rng = check_random_state(42) X_test = rng.randn(n_samples, n_features) y_test = np.dot(X_test, np.ones(n_features)) w = np.zeros(n_features) escb = _EarlyStoppingCallback(X_test, y_test, False) for counter in range(50): k = min(counter, n_features - 1) w[k] = 1 # jitter if k > 0 and rng.rand() > .9: w[k - 1] = 1 - w[k - 1] escb(dict(w=w, counter=counter)) assert_equal(len(escb.test_scores), counter + 1) # restart if counter > 20: w *= 0.