Source code for brew.metrics.diversity.non_paired

import numpy as np


[docs]def kuncheva_entropy_measure(oracle): L = oracle.shape[1] tmp = np.sum(oracle, axis=1) tmp = np.minimum(tmp, L - tmp) e = np.mean((1.0 / (L - np.ceil(0.5 * L))) * tmp) return e
[docs]def kuncheva_kw(oracle): L = oracle.shape[1] tmp = np.sum(oracle, axis=1) tmp = np.multiply(tmp, L - tmp) kw = np.mean((1.0 / (L**2)) * tmp) return kw
[docs]def new_entropy(ensemble, X, y): out = ensemble.output(X) P = np.sum(out, axis=2) / out.shape[1] P = - P * np.log(P + 10e-8) entropy = np.mean(np.sum(P, axis=1)) return entropy
[docs]def entropy_measure_e(ensemble, X, y): factor = 0 for j in range(y.shape[0]): right, wrong = 0, 0 for estimator in ensemble.classifiers: [c] = estimator.predict(X[j]) if c == y[j]: right = right + 1 else: wrong = wrong + 1 factor = factor + min(right, wrong) e = (1.0 / len(X)) * (1.0 / (len(ensemble) - len(ensemble) / 2)) * factor return e
[docs]def kohavi_wolpert_variance(ensemble, X, y): factor = 0 for j in range(y.shape[0]): right, wrong = 0, 0 for estimator in ensemble.classifiers: [c] = estimator.predict(X[j]) if c == y[j]: right = right + 1 else: wrong = wrong + 1 factor = factor + right * wrong kw = (1.0 / (len(X) * (len(ensemble)**2))) * factor return kw