コード例 #1
0
ファイル: test_mdi.py プロジェクト: michaelsok/eml
def test_predict(fitted_random_forest, mocker):
    mdi = MeanDecreaseImpurity(use_precompute=False)
    mdi.fit(fitted_random_forest)

    spy = mocker.spy(mdi, 'interpret')
    _ = mdi.predict(X=None, weighted=True, normalize=True)
    spy.assert_called_once_with(X=None, weighted=True, normalize=True)
コード例 #2
0
ファイル: test_mdi.py プロジェクト: michaelsok/eml
def test_interpret_values(fitted_decision_tree, fitted_random_forest,
                          fitted_gradient_boosting, fitted_ada_boost):
    mdi = MeanDecreaseImpurity(use_precompute=False)
    for e in (fitted_decision_tree, fitted_random_forest,
              fitted_gradient_boosting, fitted_ada_boost):
        mdi.fit(e)
        importances = mdi.interpret(X=None, weighted=True, normalize=True)
        np.testing.assert_allclose(e.feature_importances_, importances)
コード例 #3
0
ファイル: test_mdi.py プロジェクト: michaelsok/eml
def test_interpret_precomputed(fitted_random_forest, mocker):
    mdi = MeanDecreaseImpurity(use_precompute=True)
    mdi.fit(fitted_random_forest)

    spy = mocker.spy(mdi, '_compute_importances')
    importances = mdi.interpret(X=None, weighted=True, normalize=True)
    spy.assert_not_called()

    assert np.array_equal(mdi.estimator.feature_importances_, importances)
コード例 #4
0
ファイル: test_mdi.py プロジェクト: michaelsok/eml
def test_interpret_not_precomputed(fitted_random_forest, mocker):
    mdi = MeanDecreaseImpurity(use_precompute=False)
    mdi.fit(fitted_random_forest)

    spy = mocker.spy(mdi, '_compute_importances')
    importances = mdi.interpret(X=None, weighted=True, normalize=True)
    spy.assert_called_once_with(X=None, weighted=True, normalize=True)

    np.testing.assert_allclose(fitted_random_forest.feature_importances_,
                               importances)
コード例 #5
0
ファイル: test_mdi.py プロジェクト: michaelsok/eml
def test_fit_ada_boost(fitted_ada_boost):
    mdi = MeanDecreaseImpurity(use_precompute=False)
    mdi.fit(fitted_ada_boost)
    assert mdi.estimator == fitted_ada_boost
    assert mdi.estimator is fitted_ada_boost

    assert mdi._base == 'scikit-learn'
    assert mdi._name == 'feature_importances_'
    assert mdi._is_forest is True

    assert mdi.n_features_ == fitted_ada_boost.estimators_[0].n_features_
    assert mdi.n_features_ is fitted_ada_boost.estimators_[0].n_features_
コード例 #6
0
ファイル: test_mdi.py プロジェクト: michaelsok/eml
def test_fit_tree(fitted_decision_tree):
    mdi = MeanDecreaseImpurity(use_precompute=False)
    mdi.fit(fitted_decision_tree)
    assert mdi.estimator == fitted_decision_tree
    assert mdi.estimator is fitted_decision_tree

    assert mdi._base == 'scikit-learn'
    assert mdi._name == 'feature_importances_'
    assert mdi._is_forest is False

    assert mdi.n_features_ == fitted_decision_tree.n_features_
    assert mdi.n_features_ is fitted_decision_tree.n_features_
コード例 #7
0
ファイル: test_mdi.py プロジェクト: michaelsok/eml
def test__compute_sklearn_forest_importances_for_gradient_boosting(
        pseudo_gradient_boosting):
    mdi = MeanDecreaseImpurity(use_precompute=False)
    mdi.estimator = pseudo_gradient_boosting
    mdi.n_features_ = 4

    importances1 = mdi._compute_sklearn_forest_importances(X=None,
                                                           weighted=False,
                                                           normalize=False)
    importances2 = mdi._compute_sklearn_forest_importances(X=None,
                                                           weighted=False,
                                                           normalize=True)
    importances3 = mdi._compute_sklearn_forest_importances(X=None,
                                                           weighted=True,
                                                           normalize=False)
    importances4 = mdi._compute_sklearn_forest_importances(X=None,
                                                           weighted=True,
                                                           normalize=True)

    expected_importances1 = np.array([0., .21, .21, 0.])
    expected_importances2 = np.array([0., .5, .5, 0.])
    expected_importances3 = np.array([0., .21, .21, 0.])
    expected_importances4 = np.array([0., .5, .5, 0.])

    np.testing.assert_allclose(importances1, expected_importances1)
    np.testing.assert_allclose(importances2, expected_importances2)
    np.testing.assert_allclose(importances3, expected_importances3)
    np.testing.assert_allclose(importances4, expected_importances4)
コード例 #8
0
ファイル: test_mdi.py プロジェクト: michaelsok/eml
def test__compute_importances_error(iris, fitted_random_forest):
    mdi = MeanDecreaseImpurity(use_precompute=False)
    mdi.fit(fitted_random_forest)
    mdi._base = 'xgboost'

    with pytest.raises(ValueError):
        mdi._compute_importances(X=None, weighted=True, normalize=True)
コード例 #9
0
ファイル: test_mdi.py プロジェクト: michaelsok/eml
def test_mdi_initialization_attributes():
    mdi = MeanDecreaseImpurity(use_precompute=False)

    assert mdi.use_precompute is False
    assert mdi.estimator is None
    assert mdi.n_features_ is None
    assert mdi._base is None
    assert mdi._name is None
    assert mdi._is_forest is None
コード例 #10
0
ファイル: test_mdi.py プロジェクト: michaelsok/eml
def test_mdi_initialization():
    mdi = MeanDecreaseImpurity(use_precompute=False)

    assert hasattr(mdi, 'use_precompute')
    assert hasattr(mdi, 'estimator')
    assert hasattr(mdi, 'n_features_')
    assert hasattr(mdi, '_base')
    assert hasattr(mdi, '_name')
    assert hasattr(mdi, '_is_forest')
コード例 #11
0
ファイル: test_mdi.py プロジェクト: michaelsok/eml
def test__compute_importances(fitted_random_forest, mocker):
    mdi = MeanDecreaseImpurity(use_precompute=False)
    mdi.fit(fitted_random_forest)

    spy = mocker.spy(mdi, '_compute_sklearn_importances')

    mdi._compute_importances(X=None, weighted=True, normalize=True)

    spy.assert_called_once_with(X=None, weighted=True, normalize=True)
コード例 #12
0
ファイル: test_mdi.py プロジェクト: michaelsok/eml
def test__compute_impurity_importance_from():
    node = Node(index=1,
                left=2,
                right=3,
                feature=0,
                value=[.7, .3],
                impurity=.42,
                n_node_samples=100)
    left = Leaf(index=2, value=[1., 0.], impurity=0., n_node_samples=70)
    right = Leaf(index=3, value=[0., 1.], impurity=0., n_node_samples=30)

    impurity_importance = MeanDecreaseImpurity._compute_impurity_importance_from(
        node, left, right)
    expected_impurity_importance = 42.
    assert math.isclose(impurity_importance, expected_impurity_importance)
コード例 #13
0
ファイル: test_mdi.py プロジェクト: michaelsok/eml
def test_fit_raise_error(iris, random_forest):
    mdi = MeanDecreaseImpurity(use_precompute=False)

    with pytest.raises(NotFittedError):
        mdi.fit(random_forest)

    svc = SVC(kernel='linear', C=1)
    svc.fit(iris.data, iris.target)

    with pytest.raises(TypeError):
        mdi.fit(svc)
コード例 #14
0
ファイル: test_mdi.py プロジェクト: michaelsok/eml
def test__compute_sklearn_importances_tree(fitted_decision_tree, mocker):
    mdi = MeanDecreaseImpurity(use_precompute=False)
    mdi.fit(fitted_decision_tree)

    spy1 = mocker.spy(mdi, '_compute_sklearn_tree_importances')
    spy2 = mocker.spy(mdi, '_compute_sklearn_forest_importances')

    mdi._compute_sklearn_importances(X=None, normalize=True, weighted=True)

    spy1.assert_called_once_with(fitted_decision_tree,
                                 X=None,
                                 weighted=True,
                                 normalize=True)
    spy2.assert_not_called()
コード例 #15
0
ファイル: test_mdi.py プロジェクト: michaelsok/eml
def test__compute_sklearn_importances_forest(fitted_random_forest, mocker):
    mdi = MeanDecreaseImpurity(use_precompute=False)
    mdi.fit(fitted_random_forest)

    spy1 = mocker.spy(mdi, '_compute_sklearn_tree_importances')
    spy2 = mocker.spy(mdi, '_compute_sklearn_forest_importances')

    mdi._compute_sklearn_importances(X=None, normalize=True, weighted=True)

    last_estimator = mdi.estimator.estimators_[-1]
    spy1.assert_called_with(last_estimator,
                            X=None,
                            weighted=True,
                            normalize=True)
    spy2.assert_called_once_with(X=None, weighted=True, normalize=True)