def _fit_one_ovo(bin_clf_idx, multi_ovo, dataset, verbose):
    """Fit the OVO classifier given an index.

    This method fits a one-vs-one classifier wrt the
    positive and negative labels taken from the list
    clf_pair_idx at the index bin_clf_idx.

    Parameters
    ----------
    bin_clf_idx : int
        Index of the binary classifier
    multi_ovo : CClassifierMulticlassOVO
        Instance of the multiclass OVO classifier.
    dataset : CDataset
        Training set. Must be a :class:`.CDataset` instance with
        patterns data and corresponding labels.
    verbose : int
        Verbosity level of the logger.

    """
    # Resetting verbosity level. This is needed as objects
    # change id  when passed to subprocesses and our logging
    # level is stored per-object looking to id
    multi_ovo.verbose = verbose

    # Take the classes indices
    tr_class_idx = multi_ovo._clf_pair_idx[bin_clf_idx][0]
    vs_class_idx = multi_ovo._clf_pair_idx[bin_clf_idx][1]

    multi_ovo.logger.info(
        "Training class {:} against class: {:}".format(
            tr_class_idx, vs_class_idx))

    # Create the training dataset
    train_ds = multi_ovo.binarize_subset(tr_class_idx, vs_class_idx, dataset)

    # Extracting the internal classifier
    classifier_instance = multi_ovo._binary_classifiers[bin_clf_idx]
    # Setting verbosity level
    classifier_instance.verbose = multi_ovo.verbose
    # Training the one-vs-ne classifier
    classifier_instance.fit(train_ds.X, train_ds.Y)

    return classifier_instance