def test_category_interaction(): c = pd.Series(pd.Categorical([0, 0, 0, 1, 1, 1])) actual = category_interaction(c, precondition=False).A expected = np.zeros((6, 2)) expected[:3, 0] = 1.0 expected[3:, 1] = 1.0 assert_allclose(actual, expected) actual = category_interaction(c, precondition=True).A cond = np.sqrt((expected**2).sum(0)) expected /= cond assert_allclose(actual, expected)
def test_interaction_cat_only(cat): interact = Interaction(cat=cat) assert interact.nobs == cat.shape[0] assert_frame_equal(cat, interact.cat) expected = category_interaction(category_product(cat), precondition=False) actual = interact.sparse assert isinstance(actual, csc_matrix) assert_allclose(expected.A, actual.A)
def test_interaction_cat_cont(cat, cont): interact = Interaction(cat=cat, cont=cont) assert interact.nobs == cat.shape[0] assert_frame_equal(cat, interact.cat) assert_frame_equal(cont, interact.cont) base = category_interaction(category_product(cat), precondition=False).A expected = [] for i in range(cont.shape[1]): element = base.copy() element[np.where(element)] = cont.iloc[:, i].to_numpy() expected.append(element) expected = np.column_stack(expected) actual = interact.sparse assert isinstance(actual, csc_matrix) assert_allclose(expected, interact.sparse.A)