Esempio n. 1
0
def test_get_sklearn_nodes_from_weighted_X(pseudo_tree):
    X = np.array([[1, 0, 1, 0], [0, 1, 1, 0], [1, 1, 1, 0], [0, 0, 0, 0],
                  [1, 0, 1, 1], [0, 1, 1, 1], [1, 1, 1, 1], [0, 0, 0, 1]])
    nodes = get_sklearn_nodes_from(pseudo_tree, X=X, weighted=True)
    expected_nodes = [
        Node(index=0,
             left=1,
             right=4,
             feature=0,
             value=[.7, .3],
             impurity=.42,
             n_node_samples=10.4),
        Node(index=1,
             left=2,
             right=3,
             feature=1,
             value=[.7, .3],
             impurity=.42,
             n_node_samples=5.2),
        Leaf(index=2, value=[1., 0.], impurity=0., n_node_samples=2.),
        Leaf(index=3, value=[0., 1.], impurity=0., n_node_samples=4.),
        Node(index=4,
             left=5,
             right=6,
             feature=2,
             value=[.7, .3],
             impurity=.42,
             n_node_samples=5.2),
        Leaf(index=5, value=[1., 0.], impurity=0., n_node_samples=0.),
        Leaf(index=6, value=[0., 1.], impurity=0., n_node_samples=8.)
    ]

    assert nodes == expected_nodes
Esempio n. 2
0
def test_get_sklearn_nodes_from_non_weighted(pseudo_tree):
    nodes = get_sklearn_nodes_from(pseudo_tree, weighted=False)
    expected_nodes = [
        Node(index=0,
             left=1,
             right=4,
             feature=0,
             value=[.7, .3],
             impurity=.42,
             n_node_samples=100),
        Node(index=1,
             left=2,
             right=3,
             feature=1,
             value=[.7, .3],
             impurity=.42,
             n_node_samples=50),
        Leaf(index=2, value=[1., 0.], impurity=0., n_node_samples=35),
        Leaf(index=3, value=[0., 1.], impurity=0., n_node_samples=15),
        Node(index=4,
             left=5,
             right=6,
             feature=2,
             value=[.7, .3],
             impurity=.42,
             n_node_samples=50),
        Leaf(index=5, value=[1., 0.], impurity=0., n_node_samples=35),
        Leaf(index=6, value=[0., 1.], impurity=0., n_node_samples=15)
    ]

    assert nodes == expected_nodes
Esempio n. 3
0
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)
Esempio n. 4
0
def test_leaf_initialization_attributes(leaf_initializers):
    leaf = Leaf(**leaf_initializers)
    for attribute, value in leaf_initializers.items():
        assert getattr(leaf, attribute) == value
    assert math.isclose(
        leaf.weighted_impurity,
        leaf_initializers['n_node_samples'] * leaf_initializers['impurity'])
Esempio n. 5
0
def test_leaf_initialization(leaf_initializers):
    leaf = Leaf(**leaf_initializers)
    assert hasattr(leaf, 'index')
    assert hasattr(leaf, 'value')
    assert hasattr(leaf, 'impurity')
    assert hasattr(leaf, 'n_node_samples')
    assert hasattr(leaf, 'weighted_impurity')
Esempio n. 6
0
def test__get_node_from(node_initializers):
    node = _get_node_from(**node_initializers)
    expected_node = Node(**node_initializers)
    assert node == expected_node
    assert not (node is expected_node)

    leaf_initializers = copy.deepcopy(node_initializers)
    leaf_initializers['left'], leaf_initializers['right'] = -1, -1
    leaf = _get_node_from(**leaf_initializers)
    del leaf_initializers['left']
    del leaf_initializers['right']
    del leaf_initializers['feature']
    expected_leaf = Leaf(**leaf_initializers)
    assert leaf == expected_leaf
    assert not (leaf is expected_leaf)
Esempio n. 7
0
def test_leaf_inequality(leaf_initializers, leaf_initializers_for_inequality):
    leaf1, leaf2 = Leaf(**leaf_initializers), Leaf(
        **leaf_initializers_for_inequality)
    assert leaf1 != leaf2
    assert not (leaf1 is leaf2)
Esempio n. 8
0
def test_leaf_equality(leaf_initializers):
    leaf1, leaf2 = Leaf(**leaf_initializers), Leaf(**leaf_initializers)
    assert leaf1 == leaf2
    assert not (leaf1 is leaf2)