Example #1
0
 def test_sklearn_compatibility_clf(self):
     clf = DAGClassifier(
         alpha=0.0,
         fit_intercept=True,
         dependent_target=True,
         hidden_layer_units=[0],
         standardize=True,
     )
     clf.get_params(deep=True)
 def test_class_number_error(self, y):
     clf = DAGClassifier(alpha=0.1)
     X = pd.DataFrame(np.random.normal(size=(100, 2)))
     with pytest.raises(
             ValueError,
             match="This solver needs samples of at least 2 classes"
             " in the data, but the data contains only one"
             " class: 0",
     ):
         clf.fit(X, y)
    def test_feature_importances_binary(self, hidden_layer_units):
        clf = DAGClassifier(alpha=0.1, hidden_layer_units=hidden_layer_units)
        X, y = (
            pd.DataFrame(np.random.normal(size=(100, 2))),
            pd.Series(np.zeros(shape=(100, ), dtype=int)),
        )
        y[X[0] < 0] = 1
        clf.fit(X, y)

        assert isinstance(clf.feature_importances_, np.ndarray)
        coef_ = pd.DataFrame(clf.feature_importances_, columns=X.columns)
        # assert that the sign of the coefficient is positive for both nonlinear and linear cases
        assert coef_.iloc[0, 0] > 0
 def test_wrong_target_dist_error(self, target_dist_type):
     with pytest.raises(
             NotImplementedError,
             # match=f"Currently only implements [{', '.join(DAGClassifier._supported_types)}] dist types."
             # " Got: {target_dist_type}",
     ):
         DAGClassifier(target_dist_type=target_dist_type)
    def test_coef_categorical(self, hidden_layer_units):
        clf = DAGClassifier(alpha=0.1, hidden_layer_units=hidden_layer_units)
        X, y = (
            pd.DataFrame(np.random.normal(size=(100, 2))),
            pd.Series(np.zeros(shape=(100, ), dtype=int)),
        )
        y[X[0] < -0.1] = 1
        y[X[0] > 0.1] = 2
        clf.fit(X, y)

        assert isinstance(clf.coef_, np.ndarray)
        assert clf.coef_.shape == (3, 2)
        coef_ = pd.DataFrame(clf.coef_, columns=X.columns)
        # second category is made likely by negative X
        assert coef_.iloc[1, 0] < 0
        # third category is made likely by positive X
        assert coef_.iloc[2, 0] > 0
    def test_value_predict_type_binary(self, y_type):
        clf = DAGClassifier(alpha=0.1)
        X, y = (
            pd.DataFrame(np.random.normal(size=(100, 2))),
            pd.Series(np.zeros(shape=(100, ), dtype=y_type)),
        )
        y[X[0] < 0] = y_type(1)
        clf.fit(X, y)

        y_pred = clf.predict(X)
        assert isinstance(y_pred[0], y_type)
        y_pred_proba = clf.predict_proba(X)
        assert isinstance(y_pred_proba[0, 0], np.float64)
        assert len(y_pred_proba.shape) == 2
 def test_glm(self, target_dist_type, y):
     clf = DAGClassifier(target_dist_type=target_dist_type)
     X = np.random.normal(size=(100, 2))
     clf.fit(X, y)
     clf.predict(X)