def test_class_weight_param(): """Backport of sklearn.utils.estimator_checks.check_class_weight_classifiers for sklearn <= 0.23.0. """ clf = KerasClassifier( model=dynamic_classifier, model__hidden_layer_sizes=(100, ), epochs=50, random_state=0, ) problems = (2, 3) for n_centers in problems: # create a very noisy dataset X, y = make_blobs(centers=n_centers, random_state=0, cluster_std=20) X_train, X_test, y_train, _ = train_test_split(X, y, test_size=0.5, random_state=0) n_centers = len(np.unique(y_train)) if n_centers == 2: class_weight = {0: 1000, 1: 0.0001} else: class_weight = {0: 1000, 1: 0.0001, 2: 0.0001} clf.set_params(class_weight=class_weight) clf.fit(X_train, y_train) y_pred = clf.predict(X_test) assert np.mean(y_pred == 0) > 0.87
def test_class_weight_param(): """Backport of sklearn.utils.estimator_checks.check_class_weight_classifiers for sklearn <= 0.23.0. Tests that fit and partial_fit correctly handle the class_weight parameter. """ clf = KerasClassifier( model=dynamic_classifier, model__hidden_layer_sizes=(100, ), random_state=0, ) problems = (2, 3) for n_centers in problems: # create a very noisy dataset X, y = make_blobs(centers=n_centers, random_state=0, cluster_std=20) X_train, X_test, y_train, _ = train_test_split(X, y, test_size=0.5, random_state=0) n_centers = len(np.unique(y_train)) if n_centers == 2: class_weight = {0: 1000, 1: 0.0001} fit_epochs = 4 partial_fit_epochs = 3 else: class_weight = {0: 1000, 1: 0.0001, 2: 0.0001} fit_epochs = 8 partial_fit_epochs = 6 clf.set_params(class_weight=class_weight) # run fit epochs followed by several partial_fit iterations # these numbers are purely empirical, just like they are in the # original sklearn test clf.set_params(fit__epochs=fit_epochs) clf.fit(X_train, y_train) y_pred = clf.predict(X_test) assert np.mean(y_pred == 0) > 0.8 for _ in range(partial_fit_epochs): clf.partial_fit(X_train, y_train) y_pred = clf.predict(X_test) assert np.mean(y_pred == 0) > 0.95