def BRkNNa(dataset_train_x, dataset_train_y, dataset_test_x, dataset_test_y,
           num_neighbours):
    x_train = lil_matrix(dataset_train_x).toarray()
    y_train = lil_matrix(dataset_train_y).toarray()
    x_test = lil_matrix(dataset_test_x).toarray()

    classifier = skadapt.BRkNNaClassifier(k=num_neighbours)
    classifier.fit(x_train, y_train)
    predictions = classifier.predict(x_test)

    text = "BRkNNa w/ k=" + str(num_neighbours)

    Metrics_Accuracy(text, predictions, dataset_test_y)
def BRkNNa(dataset_train_x, dataset_train_y, dataset_test_x, dataset_test_y,
           num_neighbours):
    x_train = lil_matrix(dataset_train_x).toarray()
    y_train = lil_matrix(dataset_train_y).toarray()
    x_test = lil_matrix(dataset_test_x).toarray()

    classifier = skadapt.BRkNNaClassifier(k=num_neighbours)
    start_time = time.time()
    classifier.fit(x_train, y_train)
    stop_time = time.time()
    time_lapsed = stop_time - start_time
    predictions = classifier.predict(x_test)

    text = "BRkNNa w/ k=" + str(num_neighbours)

    Metrics_Accuracy(text, predictions, dataset_test_y)
    print("Execution time: {}s".format(time_lapsed))
def FindBestK(classif, dataset_train_x, dataset_train_y):
    rangefloatv = [round(x * 0.1, 1) for x in range(5, 11)]

    parameters = {'k': range(1, 20), 's': rangefloatv}
    if type(classif) == type(
            skadapt.BRkNNaClassifier()) or type(classif) == type(
                skadapt.BRkNNbClassifier()):
        parameters = {'k': range(1, 20)}

    clf = GridSearchCV(classif,
                       parameters,
                       scoring=make_scorer(metrics.hamming_loss,
                                           greater_is_better=False),
                       n_jobs=2)
    clf.fit(
        lil_matrix(dataset_train_x).toarray(),
        lil_matrix(dataset_train_y).toarray())
    print(clf.best_params_)
    return clf.best_params_
def Util_ClassifierMethods(dataset_train_x, dataset_train_y, dataset_test_x,
                           dataset_test_y):
    #BR
    Util_Title("Binary Relevance")
    base_classif = GaussianNB()
    BinaryRelevance(dataset_train_x, dataset_train_y, dataset_test_x,
                    dataset_test_y, base_classif, "GaussianNB")

    dict_res = FindBestSVCParams(skpt.BinaryRelevance(), dataset_train_x,
                                 dataset_train_y)
    base_classif = SVC(kernel=dict_res['classifier__kernel'],
                       degree=dict_res['classifier__degree'])
    BinaryRelevance(dataset_train_x, dataset_train_y, dataset_test_x,
                    dataset_test_y, base_classif, "SVC tuned")

    dict_res = FindBestMNBParams(skpt.BinaryRelevance(), dataset_train_x,
                                 dataset_train_y)
    base_classif = MultinomialNB(alpha=dict_res['classifier__alpha'])
    BinaryRelevance(dataset_train_x, dataset_train_y, dataset_test_x,
                    dataset_test_y, base_classif, "MNB tuned")

    #CC
    Util_Title("Classifier Chain")
    base_classif = GaussianNB()
    ClassifierChain(dataset_train_x, dataset_train_y, dataset_test_x,
                    dataset_test_y, base_classif, "GaussianNB")

    dict_res = FindBestSVCParams(skpt.ClassifierChain(), dataset_train_x,
                                 dataset_train_y)
    base_classif = SVC(kernel=dict_res['classifier__kernel'],
                       degree=dict_res['classifier__degree'])
    ClassifierChain(dataset_train_x, dataset_train_y, dataset_test_x,
                    dataset_test_y, base_classif, "SVC tuned")

    dict_res = FindBestMNBParams(skpt.ClassifierChain(), dataset_train_x,
                                 dataset_train_y)
    base_classif = MultinomialNB(alpha=dict_res['classifier__alpha'])
    ClassifierChain(dataset_train_x, dataset_train_y, dataset_test_x,
                    dataset_test_y, base_classif, "MNB tuned")

    #LP
    Util_Title("Label Powerset")
    base_classif = GaussianNB()
    LabelPowerset(dataset_train_x, dataset_train_y, dataset_test_x,
                  dataset_test_y, base_classif, "GaussianNB")

    dict_res = FindBestSVCParams(skpt.LabelPowerset(), dataset_train_x,
                                 dataset_train_y)
    base_classif = SVC(kernel=dict_res['classifier__kernel'],
                       degree=dict_res['classifier__degree'])
    LabelPowerset(dataset_train_x, dataset_train_y, dataset_test_x,
                  dataset_test_y, base_classif, "SVC tuned")

    dict_res = FindBestMNBParams(skpt.LabelPowerset(), dataset_train_x,
                                 dataset_train_y)
    base_classif = MultinomialNB(alpha=dict_res['classifier__alpha'])
    LabelPowerset(dataset_train_x, dataset_train_y, dataset_test_x,
                  dataset_test_y, base_classif, "MNB tuned")

    #MLkNN
    Util_Title("MLkNN")
    dict_res = FindBestK(skadapt.MLkNN(), dataset_train_x, dataset_train_y)
    MLkNN(dataset_train_x, dataset_train_y, dataset_test_x, dataset_test_y,
          dict_res['k'], dict_res['s'])

    #MLARAM
    Util_Title("MLARAM")
    dict_res = FindBestVT(dataset_train_x, dataset_train_y)
    MLARAM(dataset_train_x, dataset_train_y, dataset_test_x, dataset_test_y,
           dict_res['vigilance'], dict_res['threshold'])

    #BRkNNa
    Util_Title("BRkNNa")
    dict_res = FindBestK(skadapt.BRkNNaClassifier(), dataset_train_x,
                         dataset_train_y)
    BRkNNa(dataset_train_x, dataset_train_y, dataset_test_x, dataset_test_y,
           dict_res['k'])

    #BRkNNb
    Util_Title("BRkNNb")
    dict_res = FindBestK(skadapt.BRkNNbClassifier(), dataset_train_x,
                         dataset_train_y)
    BRkNNb(dataset_train_x, dataset_train_y, dataset_test_x, dataset_test_y,
           dict_res['k'])

    #RAkELD
    Util_Title("RAkELd")
    dict_res = GridSearchCV_baseRakel(RakelD(), dataset_train_x,
                                      dataset_train_y)
    RAkELd(dataset_train_x, dataset_train_y, dataset_test_x, dataset_test_y,
           dict_res['base_classifier'], dict_res['labelset_size'])

    #RAkELo
    Util_Title("RAkELo")
    dict_res = GridSearchCV_baseRakel(RakelO(), dataset_train_x,
                                      dataset_train_y)
    RAkELO(dataset_train_x, dataset_train_y, dataset_test_x, dataset_test_y,
           dict_res['base_classifier'], dict_res['labelset_size'],
           dict_res['model_count'])

    #MLTSVM
    Util_Title("MLTSVM")
    dict_res = FindCKParam(dataset_train_x, dataset_train_y, dataset_test_x,
                           dataset_test_y)
    TwinMLSVM(dataset_train_x, dataset_train_y, dataset_test_x, dataset_test_y,
              dict_res['c_k'], dict_res['sor_omega'])
def Util_ClassifierMethodsBookmarks(train_x, y_train, test_x, y_test):
    #Scale negatives for BR/ CC and LP for MultinomialNB
    x_scaler = preprocessing.MinMaxScaler(feature_range=(0, 1))
    train_x_scaledb = x_scaler.fit_transform(train_x)
    test_x_scaledb = x_scaler.fit_transform(test_x)

    #BR
    Util_Title("Binary Relevance")
    base_classif = GaussianNB()
    BinaryRelevance(train_x_scaledb, y_train, test_x_scaledb, y_test,
                    base_classif, "GaussianNB")

    dict_res = FindBestSVCParams(skpt.BinaryRelevance(), train_x_scaledb,
                                 y_train)
    base_classif = SVC(kernel=dict_res['classifier__kernel'],
                       degree=dict_res['classifier__degree'])
    BinaryRelevance(train_x_scaledb, y_train, test_x_scaledb, y_test,
                    base_classif, "SVC tuned")

    dict_res = FindBestMNBParams(skpt.BinaryRelevance(), train_x_scaledb,
                                 y_train)
    base_classif = MultinomialNB(alpha=dict_res['classifier__alpha'])
    BinaryRelevance(train_x_scaledb, y_train, test_x_scaledb, y_test,
                    base_classif, "MNB tuned")

    #CC
    Util_Title("Classifier Chain")
    base_classif = GaussianNB()
    ClassifierChain(train_x_scaledb, y_train, test_x_scaledb, y_test,
                    base_classif, "GaussianNB")

    dict_res = FindBestSVCParams(skpt.ClassifierChain(), train_x_scaledb,
                                 y_train)
    base_classif = SVC(kernel=dict_res['classifier__kernel'],
                       degree=dict_res['classifier__degree'])
    ClassifierChain(train_x_scaledb, y_train, test_x_scaledb, y_test,
                    base_classif, "SVC tuned")

    dict_res = FindBestMNBParams(skpt.ClassifierChain(), train_x_scaledb,
                                 y_train)
    base_classif = MultinomialNB(alpha=dict_res['classifier__alpha'])
    ClassifierChain(train_x_scaledb, y_train, test_x_scaledb, y_test,
                    base_classif, "MNB tuned")

    #LP
    Util_Title("Label Powerset")
    base_classif = GaussianNB()
    LabelPowerset(train_x_scaledb, y_train, test_x_scaledb, y_test,
                  base_classif, "GaussianNB")

    dict_res = FindBestSVCParams(skpt.LabelPowerset(), train_x_scaledb,
                                 y_train)
    base_classif = SVC(kernel=dict_res['classifier__kernel'],
                       degree=dict_res['classifier__degree'])
    LabelPowerset(train_x_scaledb, y_train, test_x_scaledb, y_test,
                  base_classif, "SVC tuned")

    dict_res = FindBestMNBParams(skpt.LabelPowerset(), train_x_scaledb,
                                 y_train)
    base_classif = MultinomialNB(alpha=dict_res['classifier__alpha'])
    LabelPowerset(train_x_scaledb, y_train, test_x_scaledb, y_test,
                  base_classif, "MNB tuned")

    #RAkELo
    Util_Title("RAkELo")
    lbs_size = 3
    mod_count = 2 * y_train.shape[1]  #2 * of labels
    print(mod_count)
    RAkELO(train_x, y_train, test_x, y_test,
           LinearSVC(max_iter=500, verbose=1), lbs_size, mod_count)

    #RAkELd
    lbs_size = 3
    RAkELd(train_x, y_train, test_x, y_test, LinearSVC(verbose=2), lbs_size)

    #MLkNN
    base_classif = skadapt.MLkNN()
    k = 10
    s = 1
    MLkNN(train_x, y_train, test_x, y_test, k, s)

    #MLARAM
    v = 0.95
    t = 0.05
    dict_res = FindBestVT(train_x, y_train)
    MLARAM(train_x, y_train, test_x, y_test, dict_res['vigilance'],
           dict_res['threshold'])

    #BRkNNa
    dict_res = FindBestK(skadapt.BRkNNaClassifier(), train_x, y_train)
    BRkNNa(train_x, y_train, test_x, y_test, dict_res['k'])

    #BRkNNb
    dict_res = FindBestK(skadapt.BRkNNbClassifier(), train_x, y_train)
    BRkNNb(train_x, y_train, test_x, y_test, dict_res['k'])

    #MLTSVM
    #Test for 0
    #TwinMLSVM(train_x,y_train,test_x,y_test,0,1)
    #Test for 0.125
    TwinMLSVM(train_x, y_train, test_x, y_test, 0.125, 1)