def train_predict(clf, X_train, y_train, X_test):
    preds_br = np.zeros((X_test.shape[0], 9))
    for i in range(0, 9):
        clf.fit(X_train, y_train[:, i])
        preds_br[:, i] = clf.predict_proba(X_test)[:, 1]   

    nn_preds = np.array([])
    n_iter = 20
    for i in range(n_iter):
        nn_clf.fit(X_train, y_train)
        s_preds = nn_clf.predict_proba(X_test)
        nn_preds = nn_preds + s_preds if nn_preds.size else s_preds
    nn_preds = (nn_preds / n_iter)
    
    n_chains = 20
    preds_cc = np.zeros((X_test.shape[0], 9))
    for i in range(n_chains):
        cc = ClassifierChain(clf)
        cc.fit(X_train, y_train)
        preds_cc = preds_cc + cc.predict(X_test)
    preds_cc = preds_cc / n_chains

    preds_br = (preds_br + 3*nn_preds + 2*preds_cc) / 6
    
    return preds_br
def train_predict(fold, feature, clf, X_train, y_train, X_test, y_test):
    preds_br = np.zeros((X_test.shape[0], 9))
    for i in range(0, 9):
        clf.fit(X_train, y_train[:, i])
        preds_br[:, i] = clf.predict_proba(X_test)[:, 1]
    np.save('val3/' + str(fold) + '_' + feature + '_br', preds_br)

    nn_preds = np.array([])
    n_iter = 10
    for i in range(n_iter):
        nn_clf.fit(X_train, y_train)
        s_preds = nn_clf.predict_proba(X_test)
        nn_preds = nn_preds + s_preds if nn_preds.size else s_preds
    nn_preds = (nn_preds / n_iter)
    np.save('val3/' + str(fold) + '_' + feature + '_nn', nn_preds)
    
    n_chains = 10
    preds_cc = np.zeros((X_test.shape[0], 9))
    for i in range(n_chains):
        cc = ClassifierChain(clf)
        cc.fit(X_train, y_train)
        preds_cc = preds_cc + cc.predict(X_test)
    preds_cc = preds_cc / n_chains
    np.save('val3/' + str(fold) + '_' + feature + '_cc', preds_cc)
    
    np.save('val3/' + str(fold) + '_' + feature + '_test', y_test)
        
    preds_br = (preds_br + 3*nn_preds + 2*preds_cc) / 6
    
    return preds_br
def train_predict(clf, X_train, y_train, X_test):
    preds_br = np.zeros((X_test.shape[0], 9))
    for i in range(0, 9):
        clf.fit(X_train, y_train[:, i])
        preds_br[:, i] = clf.predict_proba(X_test)[:, 1]

    nn_preds = np.array([])
    n_iter = 20
    for i in range(n_iter):
        nn_clf.fit(X_train, y_train)
        s_preds = nn_clf.predict_proba(X_test)
        nn_preds = nn_preds + s_preds if nn_preds.size else s_preds
    nn_preds = (nn_preds / n_iter)

    n_chains = 20
    preds_cc = np.zeros((X_test.shape[0], 9))
    for i in range(n_chains):
        cc = ClassifierChain(clf)
        cc.fit(X_train, y_train)
        preds_cc = preds_cc + cc.predict(X_test)
    preds_cc = preds_cc / n_chains

    preds_br = (preds_br + 3 * nn_preds + 2 * preds_cc) / 6

    return preds_br
def train_predict(feature, clf, X_train, y_train, X_test):
    preds_br = np.zeros((X_test.shape[0], 9))
    for i in range(0, 9):
        clf.fit(X_train, y_train[:, i])
        preds_br[:, i] = clf.predict_proba(X_test)[:, 1]
    np.save('test/' + feature + '_br', preds_br)

    nn_preds = np.array([])
    n_iter = 40
    for i in range(n_iter):
        nn_clf.fit(X_train, y_train)
        s_preds = nn_clf.predict_proba(X_test)
        nn_preds = nn_preds + s_preds if nn_preds.size else s_preds
    nn_preds = (nn_preds / n_iter)
    np.save('test/' + feature + '_nn', nn_preds)

    n_chains = 40
    preds_cc = np.zeros((X_test.shape[0], 9))
    for i in range(n_chains):
        cc = ClassifierChain(clf)
        cc.fit(X_train, y_train)
        preds_cc = preds_cc + cc.predict(X_test)
    preds_cc = preds_cc / n_chains
    np.save('test/' + feature + '_cc', preds_cc)

    preds_br = (preds_br + 3 * nn_preds + 2 * preds_cc) / 6

    return preds_br