Evaluating the pool of classifiers

Initializing libraries

import warnings
warnings.filterwarnings('ignore')

import pandas as pd
from sklearn.datasets import load_breast_cancer
from sklearn.model_selection import train_test_split

from sklearn.svm import SVC
from sklearn.ensemble import RandomForestClassifier
from sklearn.neighbors import KNeighborsClassifier

from sklearn.metrics import accuracy_score

Initializing dataset

We use open dataset: Breast Cancer

data = load_breast_cancer()
df = pd.DataFrame(data.data, columns = data.feature_names)
df['target'] = data.target

Split dataset

Split the dataset into training, validation for DES (DSEL) and testing:

X = df.drop(['target'], axis=1)
y = df.target

X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.30, random_state=42)
X_pool, X_dsel, y_pool, y_dsel   = train_test_split(X_train, y_train, test_size=0.30, random_state=42)

Models and Feature sets Generation

model1 = SVC(probability=True, random_state=42)
model2 = RandomForestClassifier(random_state=42)
model3 = KNeighborsClassifier()

feature_set1 = data.feature_names[:10]
feature_set2 = data.feature_names[10:20]
feature_set3 = data.feature_names[20:]

model_pool = [model1,
              model2,
              model3]

feature_sets = [feature_set1,
                feature_set2,
                feature_set3]

Train the models (pool)

for i in range(len(model_pool)):
    model_pool[i].fit(X_pool[feature_sets[i]], y_pool)

    acc = round(model_pool[i].score(X_dsel[feature_sets[i]], y_dsel), 3)
    print("[DSEL] Model {} acc: {}".format(i, acc))

    acc = round(model_pool[i].score(X_test[feature_sets[i]], y_test), 3)
    print("[Test] Model {} acc: {}".format(i, acc))

Usage of our library

import shap
from infodeslib.des.knorau import KNORAU

# initializing
knorau = KNORAU(model_pool, feature_sets, k=7)
knorau.fit(X_dsel, y_dsel)

Evaluating the pool of classifiers

Average accuracy of classifiers in the pool on validation data:

knorau.get_average_accuracy()

[DSEL] Average Accuracy: 0.833 ± 0.02

Average diversity of classifiers in the pool on validation data:

knorau.get_pool_diversity("DM")
https://raw.githubusercontent.com/adv-panda/infodeslib_docs/main/docs/source/images/feature2.PNG
  • “Q”: “Q-statistic”

  • “CC”: “Correlation Coefficient”

  • “DM”: “Disagreement Measure”

  • “DF”: “Double Fault”

  • “NDF”: “Negative Double Fault”

  • “RE”: “Ratio Errors”