In [1]:
%matplotlib inline
import matplotlib.pyplot as plt

import numpy as np
import pandas as pd
from joblib import Parallel, delayed

DATA_PATH = '/mnt/cms/version2/merged.pickle'

In [2]:
import cPickle as pickle

with open(DATA_PATH, 'r') as f:
    data = pickle.load(f)

labels = np.load('/mnt/cms/version2/labels.npy')

In [3]:
non_zero_lumi_index = np.where(
    (data['_instantLumi_minibias'] != 0.0) | \
    (data['_instantLumi_muons'] != 0.0) | \
    (data['_instantLumi_photons'] != 0.0)
)[0]

In [4]:
not_features = [
    '_luminosityBlock',
    '_run',
    '_instantLumi_minibias',
    '_instantLumi_muons',
    '_instantLumi_photons'
]

features = sorted(set(data.columns) - set(not_features))

X = data[features].values
y = labels
weights = data['_instantLumi_minibias'].values

In [5]:
print 'Non-zero luminosity:', non_zero_lumi_index.shape[0], 'lumisections'


Non-zero luminosity: 26046 lumisections

In [6]:
def build_predictions(clf, X, y, thr_q = 0.97,
                      n_folds = 10, max_loss_rate = 0.0, max_pollution_rate = 0.0,
                      title = ''):
    from sklearn.metrics import precision_recall_curve
    from sklearn.metrics import roc_curve
    from sklearn.metrics import auc
    from sklearn.cross_validation import StratifiedKFold
    
    cv = StratifiedKFold(y, n_folds=n_folds, shuffle=True, random_state=7777)
    proba = np.zeros(X.shape[0])
    
    train_indx, test_indx = iter(cv).next()
    clf.fit(X[train_indx, :], y[train_indx])
    proba[test_indx] = clf.predict_proba(X[test_indx, :])[:, 1]

    
    fpr, tpr, thr_roc = roc_curve(y[test_indx], proba[test_indx])
    auc_score = auc(fpr, tpr)
    
    precision, recall, thr = precision_recall_curve(y[test_indx], proba[test_indx])
    pr_auc = auc(precision, recall, reorder = True)
    
    thr = np.hstack([thr, [1.0]])
    
    pollution = 1.0 - precision
    loss = 1.0 - recall
    
    fs, axs = plt.subplots(1, 3, figsize=(14, 4))
    plt.suptitle(title)
    
    axs[0].set_title('ROC curve')
    axs[0].plot([0, 1], [0, 1], '--')
    axs[0].plot(fpr, tpr, label = "AUC = %.2f" % auc_score)
    axs[0].set_xlabel('False Positive Rate')
    axs[0].set_ylabel('True Positive Rate')
    axs[0].legend(loc='lower right')
    
    axs[1].set_title('Pollution-Loss curve')
    axs[1].plot([1, 1], [0, 0], '--')
    axs[1].plot(pollution, loss, label = "AUC = %.2f" % pr_auc)
    axs[1].set_xlabel('Pollution Rate')
    axs[1].set_ylabel('Loss Rate')
    axs[1].legend(loc='lower right')
    
    axs[2].set_title('Pollution/Loss rates')
    axs[2].plot(thr, pollution, label='pollution rate')
    axs[2].plot(thr, loss, label='loss rate')
    axs[2].set_xlabel('threshold')
    axs[2].set_ylabel('rate')
    axs[2].legend(loc = 'upper left')

    plt.show()
    
#     thr_high = np.min(thr[pollution <= max_pollution_rate])
#     thr_low = np.max(thr[loss <= max_loss_rate])
    
    thr_high = np.percentile(thr[pollution <= max_pollution_rate], q=(1.0 - thr_q) * 100.0)
    thr_low = np.percentile(thr[loss <= max_loss_rate], q=thr_q * 100.0)
    
    return clf, thr_low, thr_high

In [7]:
from sklearn.ensemble import RandomForestClassifier

clf = RandomForestClassifier(n_estimators=32, min_samples_leaf=10, n_jobs=-1, random_state=7777)

build_predictions(clf, X, y, n_folds=5)


Out[7]:
(RandomForestClassifier(bootstrap=True, class_weight=None, criterion='gini',
             max_depth=None, max_features='auto', max_leaf_nodes=None,
             min_samples_leaf=10, min_samples_split=2,
             min_weight_fraction_leaf=0.0, n_estimators=32, n_jobs=-1,
             oob_score=False, random_state=7777, verbose=0,
             warm_start=False), 0.003791360294117647, 0.99780942118226601)

In [8]:
from sklearn.ensemble import RandomForestClassifier

clf = RandomForestClassifier(n_estimators=32, min_samples_leaf=10, n_jobs=-1, random_state=7777)

build_predictions(clf, X, y, n_folds=10)


Out[8]:
(RandomForestClassifier(bootstrap=True, class_weight=None, criterion='gini',
             max_depth=None, max_features='auto', max_leaf_nodes=None,
             min_samples_leaf=10, min_samples_split=2,
             min_weight_fraction_leaf=0.0, n_estimators=32, n_jobs=-1,
             oob_score=False, random_state=7777, verbose=0,
             warm_start=False), 0.0037280701754385964, 0.97763498739142118)

In [9]:
from sklearn.ensemble import RandomForestClassifier

clf = RandomForestClassifier(n_estimators=64, min_samples_leaf=10, n_jobs=-1, random_state=7777)

build_predictions(clf, X, y, n_folds=5)


Out[9]:
(RandomForestClassifier(bootstrap=True, class_weight=None, criterion='gini',
             max_depth=None, max_features='auto', max_leaf_nodes=None,
             min_samples_leaf=10, min_samples_split=2,
             min_weight_fraction_leaf=0.0, n_estimators=64, n_jobs=-1,
             oob_score=False, random_state=7777, verbose=0,
             warm_start=False), 0.0045151654411764702, 0.98568062770401688)

In [10]:
from sklearn.ensemble import RandomForestClassifier

clf = RandomForestClassifier(n_estimators=64, min_samples_leaf=10, n_jobs=-1, random_state=7777)

build_predictions(clf, X, y, n_folds=10)


Out[10]:
(RandomForestClassifier(bootstrap=True, class_weight=None, criterion='gini',
             max_depth=None, max_features='auto', max_leaf_nodes=None,
             min_samples_leaf=10, min_samples_split=2,
             min_weight_fraction_leaf=0.0, n_estimators=64, n_jobs=-1,
             oob_score=False, random_state=7777, verbose=0,
             warm_start=False), 0.0075932017543859642, 0.97075034811332483)

In [11]:
from sklearn.ensemble import RandomForestClassifier

clf = RandomForestClassifier(n_estimators=96, min_samples_leaf=10, n_jobs=-1, random_state=7777)

build_predictions(clf, X, y, n_folds=10)


Out[11]:
(RandomForestClassifier(bootstrap=True, class_weight=None, criterion='gini',
             max_depth=None, max_features='auto', max_leaf_nodes=None,
             min_samples_leaf=10, min_samples_split=2,
             min_weight_fraction_leaf=0.0, n_estimators=96, n_jobs=-1,
             oob_score=False, random_state=7777, verbose=0,
             warm_start=False), 0.010121658312447785, 0.96825366953965919)

In [12]:
from sklearn.ensemble import RandomForestClassifier

clf = RandomForestClassifier(n_estimators=128, min_samples_leaf=10, n_jobs=-1, random_state=7777)

build_predictions(clf, X, y, n_folds=5)


Out[12]:
(RandomForestClassifier(bootstrap=True, class_weight=None, criterion='gini',
             max_depth=None, max_features='auto', max_leaf_nodes=None,
             min_samples_leaf=10, min_samples_split=2,
             min_weight_fraction_leaf=0.0, n_estimators=128, n_jobs=-1,
             oob_score=False, random_state=7777, verbose=0,
             warm_start=False), 0.0027458639705882351, 0.9798376801609785)

In [13]:
from sklearn.ensemble import RandomForestClassifier

clf = RandomForestClassifier(n_estimators=256, min_samples_leaf=10, n_jobs=-1, random_state=7777)

build_predictions(clf, X, y, n_folds=10)


Out[13]:
(RandomForestClassifier(bootstrap=True, class_weight=None, criterion='gini',
             max_depth=None, max_features='auto', max_leaf_nodes=None,
             min_samples_leaf=10, min_samples_split=2,
             min_weight_fraction_leaf=0.0, n_estimators=256, n_jobs=-1,
             oob_score=False, random_state=7777, verbose=0,
             warm_start=False), 0.0052485179294389818, 0.9683765791543042)

In [14]:
from sklearn.cross_validation import StratifiedKFold

In [15]:
def stream_learning(clf, X, y, n_folds, max_loss_rate, max_pollution_rate, cv_folds = 10):

    folds = StratifiedKFold(y, n_folds=n_folds, shuffle=True, random_state=7777).test_folds
    y_predicted = np.zeros(X.shape[0], dtype='int')
    
    threshold_low = np.zeros(n_folds)
    threshold_high = np.zeros(n_folds)
    
    X_train = np.zeros(shape = (0, X.shape[1]))
    y_train = np.zeros(shape = 0)
    
    rejection_rates = np.zeros(shape=n_folds)
    loss_rates = np.zeros(shape=n_folds)
    pollution_rates = np.zeros(shape=n_folds)
    
    for iteration in xrange(n_folds):
        indx = np.where(folds == iteration)[0]

        if X_train.shape[0] == 0:
            y_predicted[indx] == 0
            X_train = np.vstack([X_train, X[indx, :]])
            y_train = np.hstack([y_train, y[indx]])
            
            rejection_rates[iteration] = 1.0
            pollution_rates[iteration] = 0.0
            loss_rates[iteration] = 0.0
        else:
            clf, thr_low, thr_high = build_predictions(
                clf, X_train, y_train, n_folds=cv_folds, thr_q = 0.95,
                max_loss_rate = max_loss_rate, max_pollution_rate = max_pollution_rate,
                title='Iteration %d' % iteration
            )

            proba = clf.predict_proba(X[indx, :])[:, 1]
            
            rejected_indx = indx[(proba > thr_low) & (proba < thr_high)]
            
            y_predicted[indx[proba > thr_high]] = 1
            y_predicted[indx[proba < thr_low]] = -1
            y_predicted[rejected_indx] = 0
            
            X_train = np.vstack([X_train, X[rejected_indx, :]])
            y_train = np.hstack([y_train, y[rejected_indx]])
            
            rejection_rates[iteration] = float(rejected_indx.shape[0]) / indx.shape[0]
            
            try:
                ### Unrecognized good lumisections to all good lumisections
                FN = np.sum((y_predicted[indx] == -1) & (y[indx] == 1))
                loss_rates[iteration] = float(FN) / np.sum(y[indx] == 1)
            except:
                loss_rates[iteration] = 0.0
            
            try:
                ### Bad lumisections predicted as good
                FP = np.sum((y_predicted[indx] == 1) & (y[indx] == 0))
                pollution_rates[iteration] = float(FP) / np.sum(y_predicted[indx] == 1)
            except:
                pollution_rates[iteration] = 0.0

    return rejection_rates, loss_rates, pollution_rates

In [17]:
import itertools

folds = 5

max_lrs = np.linspace(0.0, 0.005, num=9)
max_prs = np.linspace(0.0, 0.005, num=9)

arrs = np.ones((max_lrs.shape[0], max_prs.shape[0]))
aprs = np.ones((max_lrs.shape[0], max_prs.shape[0]))
alrs = np.ones((max_lrs.shape[0], max_prs.shape[0]))

rrs = np.ones((max_lrs.shape[0], max_prs.shape[0], folds))
prs = np.ones((max_lrs.shape[0], max_prs.shape[0], folds))
lrs = np.ones((max_lrs.shape[0], max_prs.shape[0], folds))

for lr_i, lr in enumerate(max_lrs):
    for pr_i, pr in enumerate(max_prs):
        print 'Loss Rate constraint: %.2e' % lr
        print 'Pollution Rate constraint: %.2e' % pr

        clf = RandomForestClassifier(n_estimators=128, min_samples_leaf=10, n_jobs=-1, random_state=7777)

        rrs[lr_i, pr_i, :], lrs[lr_i, pr_i, :], prs[lr_i, pr_i, :] = stream_learning(
           clf, X, y, n_folds=folds, cv_folds=7,
           max_loss_rate = lr, max_pollution_rate = pr
        )

        plt.figure(figsize=(8,8))
        plt.title('Stream learning')
        plt.plot(rrs[lr_i, pr_i, :], label='rejection rate')
        plt.plot(lrs[lr_i, pr_i, :], label='loss rate')
        plt.plot(prs[lr_i, pr_i, :], label='pollution rate')
        plt.xlabel('iteration')
        plt.legend()
        plt.show()

        print 'Avg. rejection rate: %.3e' % np.mean(rrs[lr_i, pr_i, :])
        print 'Avg. loss rate: %.3e' % np.mean(lrs[lr_i, pr_i, :])
        print 'Avg. pollution rate: %.3e' % np.mean(prs[lr_i, pr_i, :])
        
        arrs[lr_i, pr_i] = np.mean(rrs[lr_i, pr_i, :])
        aprs[lr_i, pr_i] = np.mean(prs[lr_i, pr_i, :])
        alrs[lr_i, pr_i] = np.mean(lrs[lr_i, pr_i, :])


Loss Rate constraint: 0.00e+00
Pollution Rate constraint: 0.00e+00
Avg. rejection rate: 5.609e-01
Avg. loss rate: 5.833e-04
Avg. pollution rate: 1.594e-03
Loss Rate constraint: 0.00e+00
Pollution Rate constraint: 6.25e-04
Avg. rejection rate: 5.609e-01
Avg. loss rate: 5.833e-04
Avg. pollution rate: 1.594e-03
Loss Rate constraint: 0.00e+00
Pollution Rate constraint: 1.25e-03
Avg. rejection rate: 5.088e-01
Avg. loss rate: 4.936e-04
Avg. pollution rate: 1.459e-03
Loss Rate constraint: 0.00e+00
Pollution Rate constraint: 1.87e-03
Avg. rejection rate: 4.517e-01
Avg. loss rate: 7.180e-04
Avg. pollution rate: 2.008e-03
Loss Rate constraint: 0.00e+00
Pollution Rate constraint: 2.50e-03
Avg. rejection rate: 5.021e-01
Avg. loss rate: 7.180e-04
Avg. pollution rate: 1.797e-03
Loss Rate constraint: 0.00e+00
Pollution Rate constraint: 3.13e-03
Avg. rejection rate: 4.716e-01
Avg. loss rate: 7.629e-04
Avg. pollution rate: 2.165e-03
Loss Rate constraint: 0.00e+00
Pollution Rate constraint: 3.75e-03
Avg. rejection rate: 4.118e-01
Avg. loss rate: 9.873e-04
Avg. pollution rate: 2.397e-03
Loss Rate constraint: 0.00e+00
Pollution Rate constraint: 4.38e-03
Avg. rejection rate: 4.250e-01
Avg. loss rate: 7.180e-04
Avg. pollution rate: 2.102e-03
Loss Rate constraint: 0.00e+00
Pollution Rate constraint: 5.00e-03
Avg. rejection rate: 4.337e-01
Avg. loss rate: 9.424e-04
Avg. pollution rate: 2.808e-03
Loss Rate constraint: 6.25e-04
Pollution Rate constraint: 0.00e+00
Avg. rejection rate: 5.578e-01
Avg. loss rate: 8.078e-04
Avg. pollution rate: 1.594e-03
Loss Rate constraint: 6.25e-04
Pollution Rate constraint: 6.25e-04
Avg. rejection rate: 5.578e-01
Avg. loss rate: 8.078e-04
Avg. pollution rate: 1.594e-03
Loss Rate constraint: 6.25e-04
Pollution Rate constraint: 1.25e-03
Avg. rejection rate: 5.069e-01
Avg. loss rate: 4.936e-04
Avg. pollution rate: 1.459e-03
Loss Rate constraint: 6.25e-04
Pollution Rate constraint: 1.87e-03
Avg. rejection rate: 4.481e-01
Avg. loss rate: 8.078e-04
Avg. pollution rate: 2.008e-03
Loss Rate constraint: 6.25e-04
Pollution Rate constraint: 2.50e-03
Avg. rejection rate: 4.958e-01
Avg. loss rate: 8.975e-04
Avg. pollution rate: 1.797e-03
Loss Rate constraint: 6.25e-04
Pollution Rate constraint: 3.13e-03
Avg. rejection rate: 4.656e-01
Avg. loss rate: 1.032e-03
Avg. pollution rate: 2.165e-03
Loss Rate constraint: 6.25e-04
Pollution Rate constraint: 3.75e-03
Avg. rejection rate: 4.118e-01
Avg. loss rate: 9.873e-04
Avg. pollution rate: 2.397e-03
Loss Rate constraint: 6.25e-04
Pollution Rate constraint: 4.38e-03
Avg. rejection rate: 4.250e-01
Avg. loss rate: 7.180e-04
Avg. pollution rate: 2.102e-03
Loss Rate constraint: 6.25e-04
Pollution Rate constraint: 5.00e-03
Avg. rejection rate: 4.336e-01
Avg. loss rate: 9.424e-04
Avg. pollution rate: 2.808e-03
Loss Rate constraint: 1.25e-03
Pollution Rate constraint: 0.00e+00
Avg. rejection rate: 5.478e-01
Avg. loss rate: 1.436e-03
Avg. pollution rate: 1.297e-03
Loss Rate constraint: 1.25e-03
Pollution Rate constraint: 6.25e-04
Avg. rejection rate: 5.478e-01
Avg. loss rate: 1.436e-03
Avg. pollution rate: 1.297e-03
Loss Rate constraint: 1.25e-03
Pollution Rate constraint: 1.25e-03
Avg. rejection rate: 5.383e-01
Avg. loss rate: 1.436e-03
Avg. pollution rate: 1.333e-03
Loss Rate constraint: 1.25e-03
Pollution Rate constraint: 1.87e-03
Avg. rejection rate: 5.006e-01
Avg. loss rate: 1.257e-03
Avg. pollution rate: 1.349e-03
Loss Rate constraint: 1.25e-03
Pollution Rate constraint: 2.50e-03
Avg. rejection rate: 4.386e-01
Avg. loss rate: 8.078e-04
Avg. pollution rate: 2.232e-03
Loss Rate constraint: 1.25e-03
Pollution Rate constraint: 3.13e-03
Avg. rejection rate: 4.353e-01
Avg. loss rate: 1.077e-03
Avg. pollution rate: 2.167e-03
Loss Rate constraint: 1.25e-03
Pollution Rate constraint: 3.75e-03
Avg. rejection rate: 4.790e-01
Avg. loss rate: 1.077e-03
Avg. pollution rate: 1.821e-03
Loss Rate constraint: 1.25e-03
Pollution Rate constraint: 4.38e-03
Avg. rejection rate: 4.418e-01
Avg. loss rate: 9.873e-04
Avg. pollution rate: 2.368e-03
Loss Rate constraint: 1.25e-03
Pollution Rate constraint: 5.00e-03
Avg. rejection rate: 4.407e-01
Avg. loss rate: 1.795e-03
Avg. pollution rate: 2.947e-03
Loss Rate constraint: 1.87e-03
Pollution Rate constraint: 0.00e+00
Avg. rejection rate: 5.320e-01
Avg. loss rate: 1.301e-03
Avg. pollution rate: 1.419e-03
Loss Rate constraint: 1.87e-03
Pollution Rate constraint: 6.25e-04
Avg. rejection rate: 5.320e-01
Avg. loss rate: 1.301e-03
Avg. pollution rate: 1.419e-03
Loss Rate constraint: 1.87e-03
Pollution Rate constraint: 1.25e-03
Avg. rejection rate: 4.883e-01
Avg. loss rate: 1.346e-03
Avg. pollution rate: 1.719e-03
Loss Rate constraint: 1.87e-03
Pollution Rate constraint: 1.87e-03
Avg. rejection rate: 4.885e-01
Avg. loss rate: 1.391e-03
Avg. pollution rate: 1.702e-03
Loss Rate constraint: 1.87e-03
Pollution Rate constraint: 2.50e-03
Avg. rejection rate: 4.668e-01
Avg. loss rate: 1.705e-03
Avg. pollution rate: 1.739e-03
Loss Rate constraint: 1.87e-03
Pollution Rate constraint: 3.13e-03
Avg. rejection rate: 4.419e-01
Avg. loss rate: 1.616e-03
Avg. pollution rate: 1.931e-03
Loss Rate constraint: 1.87e-03
Pollution Rate constraint: 3.75e-03
Avg. rejection rate: 4.222e-01
Avg. loss rate: 1.436e-03
Avg. pollution rate: 2.311e-03
Loss Rate constraint: 1.87e-03
Pollution Rate constraint: 4.38e-03
Avg. rejection rate: 3.972e-01
Avg. loss rate: 1.481e-03
Avg. pollution rate: 2.583e-03
Loss Rate constraint: 1.87e-03
Pollution Rate constraint: 5.00e-03
Avg. rejection rate: 4.156e-01
Avg. loss rate: 1.885e-03
Avg. pollution rate: 3.116e-03
Loss Rate constraint: 2.50e-03
Pollution Rate constraint: 0.00e+00
Avg. rejection rate: 4.980e-01
Avg. loss rate: 3.590e-03
Avg. pollution rate: 2.141e-03
Loss Rate constraint: 2.50e-03
Pollution Rate constraint: 6.25e-04
Avg. rejection rate: 4.980e-01
Avg. loss rate: 3.590e-03
Avg. pollution rate: 2.141e-03
Loss Rate constraint: 2.50e-03
Pollution Rate constraint: 1.25e-03
Avg. rejection rate: 4.394e-01
Avg. loss rate: 3.725e-03
Avg. pollution rate: 2.605e-03
Loss Rate constraint: 2.50e-03
Pollution Rate constraint: 1.87e-03
Avg. rejection rate: 4.957e-01
Avg. loss rate: 3.590e-03
Avg. pollution rate: 2.309e-03
Loss Rate constraint: 2.50e-03
Pollution Rate constraint: 2.50e-03
Avg. rejection rate: 4.813e-01
Avg. loss rate: 3.860e-03
Avg. pollution rate: 2.050e-03
Loss Rate constraint: 2.50e-03
Pollution Rate constraint: 3.13e-03
Avg. rejection rate: 4.416e-01
Avg. loss rate: 3.949e-03
Avg. pollution rate: 2.613e-03
Loss Rate constraint: 2.50e-03
Pollution Rate constraint: 3.75e-03
Avg. rejection rate: 4.071e-01
Avg. loss rate: 3.815e-03
Avg. pollution rate: 3.170e-03
Loss Rate constraint: 2.50e-03
Pollution Rate constraint: 4.38e-03
Avg. rejection rate: 4.367e-01
Avg. loss rate: 3.590e-03
Avg. pollution rate: 2.503e-03
Loss Rate constraint: 2.50e-03
Pollution Rate constraint: 5.00e-03
Avg. rejection rate: 4.310e-01
Avg. loss rate: 4.937e-03
Avg. pollution rate: 2.873e-03
Loss Rate constraint: 3.13e-03
Pollution Rate constraint: 0.00e+00
Avg. rejection rate: 5.094e-01
Avg. loss rate: 5.116e-03
Avg. pollution rate: 1.829e-03
Loss Rate constraint: 3.13e-03
Pollution Rate constraint: 6.25e-04
Avg. rejection rate: 5.094e-01
Avg. loss rate: 5.116e-03
Avg. pollution rate: 1.829e-03
Loss Rate constraint: 3.13e-03
Pollution Rate constraint: 1.25e-03
Avg. rejection rate: 4.850e-01
Avg. loss rate: 4.982e-03
Avg. pollution rate: 1.919e-03
Loss Rate constraint: 3.13e-03
Pollution Rate constraint: 1.87e-03
Avg. rejection rate: 4.910e-01
Avg. loss rate: 4.937e-03
Avg. pollution rate: 2.048e-03
Loss Rate constraint: 3.13e-03
Pollution Rate constraint: 2.50e-03
Avg. rejection rate: 5.043e-01
Avg. loss rate: 4.757e-03
Avg. pollution rate: 2.406e-03
Loss Rate constraint: 3.13e-03
Pollution Rate constraint: 3.13e-03
Avg. rejection rate: 4.653e-01
Avg. loss rate: 4.443e-03
Avg. pollution rate: 2.514e-03
Loss Rate constraint: 3.13e-03
Pollution Rate constraint: 3.75e-03
Avg. rejection rate: 4.419e-01
Avg. loss rate: 4.578e-03
Avg. pollution rate: 2.491e-03
Loss Rate constraint: 3.13e-03
Pollution Rate constraint: 4.38e-03
Avg. rejection rate: 4.057e-01
Avg. loss rate: 4.937e-03
Avg. pollution rate: 3.195e-03
Loss Rate constraint: 3.13e-03
Pollution Rate constraint: 5.00e-03
Avg. rejection rate: 4.260e-01
Avg. loss rate: 5.520e-03
Avg. pollution rate: 3.079e-03
Loss Rate constraint: 3.75e-03
Pollution Rate constraint: 0.00e+00
Avg. rejection rate: 5.180e-01
Avg. loss rate: 6.912e-03
Avg. pollution rate: 1.739e-03
Loss Rate constraint: 3.75e-03
Pollution Rate constraint: 6.25e-04
Avg. rejection rate: 5.180e-01
Avg. loss rate: 6.912e-03
Avg. pollution rate: 1.739e-03
Loss Rate constraint: 3.75e-03
Pollution Rate constraint: 1.25e-03
Avg. rejection rate: 4.927e-01
Avg. loss rate: 7.046e-03
Avg. pollution rate: 1.777e-03
Loss Rate constraint: 3.75e-03
Pollution Rate constraint: 1.87e-03
Avg. rejection rate: 4.641e-01
Avg. loss rate: 7.181e-03
Avg. pollution rate: 2.526e-03
Loss Rate constraint: 3.75e-03
Pollution Rate constraint: 2.50e-03
Avg. rejection rate: 4.827e-01
Avg. loss rate: 6.777e-03
Avg. pollution rate: 2.222e-03
Loss Rate constraint: 3.75e-03
Pollution Rate constraint: 3.13e-03
Avg. rejection rate: 4.459e-01
Avg. loss rate: 7.226e-03
Avg. pollution rate: 2.588e-03
Loss Rate constraint: 3.75e-03
Pollution Rate constraint: 3.75e-03
Avg. rejection rate: 4.136e-01
Avg. loss rate: 7.046e-03
Avg. pollution rate: 2.863e-03
Loss Rate constraint: 3.75e-03
Pollution Rate constraint: 4.38e-03
Avg. rejection rate: 4.080e-01
Avg. loss rate: 6.193e-03
Avg. pollution rate: 3.060e-03
Loss Rate constraint: 3.75e-03
Pollution Rate constraint: 5.00e-03
Avg. rejection rate: 4.068e-01
Avg. loss rate: 5.834e-03
Avg. pollution rate: 3.371e-03
Loss Rate constraint: 4.38e-03
Pollution Rate constraint: 0.00e+00
Avg. rejection rate: 5.072e-01
Avg. loss rate: 7.046e-03
Avg. pollution rate: 1.736e-03
Loss Rate constraint: 4.38e-03
Pollution Rate constraint: 6.25e-04
Avg. rejection rate: 5.072e-01
Avg. loss rate: 7.046e-03
Avg. pollution rate: 1.736e-03
Loss Rate constraint: 4.38e-03
Pollution Rate constraint: 1.25e-03
Avg. rejection rate: 4.924e-01
Avg. loss rate: 7.046e-03
Avg. pollution rate: 2.091e-03
Loss Rate constraint: 4.38e-03
Pollution Rate constraint: 1.87e-03
Avg. rejection rate: 4.692e-01
Avg. loss rate: 7.719e-03
Avg. pollution rate: 2.536e-03
Loss Rate constraint: 4.38e-03
Pollution Rate constraint: 2.50e-03
Avg. rejection rate: 4.496e-01
Avg. loss rate: 7.181e-03
Avg. pollution rate: 2.741e-03
Loss Rate constraint: 4.38e-03
Pollution Rate constraint: 3.13e-03
Avg. rejection rate: 4.610e-01
Avg. loss rate: 7.046e-03
Avg. pollution rate: 2.578e-03
Loss Rate constraint: 4.38e-03
Pollution Rate constraint: 3.75e-03
Avg. rejection rate: 4.638e-01
Avg. loss rate: 7.136e-03
Avg. pollution rate: 2.532e-03
Loss Rate constraint: 4.38e-03
Pollution Rate constraint: 4.38e-03
Avg. rejection rate: 4.329e-01
Avg. loss rate: 7.136e-03
Avg. pollution rate: 2.774e-03
Loss Rate constraint: 4.38e-03
Pollution Rate constraint: 5.00e-03
Avg. rejection rate: 4.260e-01
Avg. loss rate: 6.193e-03
Avg. pollution rate: 2.775e-03
Loss Rate constraint: 5.00e-03
Pollution Rate constraint: 0.00e+00
Avg. rejection rate: 5.136e-01
Avg. loss rate: 8.213e-03
Avg. pollution rate: 2.396e-03
Loss Rate constraint: 5.00e-03
Pollution Rate constraint: 6.25e-04
Avg. rejection rate: 5.136e-01
Avg. loss rate: 8.213e-03
Avg. pollution rate: 2.396e-03
Loss Rate constraint: 5.00e-03
Pollution Rate constraint: 1.25e-03
Avg. rejection rate: 4.915e-01
Avg. loss rate: 8.168e-03
Avg. pollution rate: 2.958e-03
Loss Rate constraint: 5.00e-03
Pollution Rate constraint: 1.87e-03
Avg. rejection rate: 4.669e-01
Avg. loss rate: 8.258e-03
Avg. pollution rate: 2.891e-03
Loss Rate constraint: 5.00e-03
Pollution Rate constraint: 2.50e-03
Avg. rejection rate: 4.215e-01
Avg. loss rate: 8.258e-03
Avg. pollution rate: 3.101e-03
Loss Rate constraint: 5.00e-03
Pollution Rate constraint: 3.13e-03
Avg. rejection rate: 4.126e-01
Avg. loss rate: 8.303e-03
Avg. pollution rate: 3.445e-03
Loss Rate constraint: 5.00e-03
Pollution Rate constraint: 3.75e-03
Avg. rejection rate: 4.125e-01
Avg. loss rate: 7.854e-03
Avg. pollution rate: 2.924e-03
Loss Rate constraint: 5.00e-03
Pollution Rate constraint: 4.38e-03
Avg. rejection rate: 4.401e-01
Avg. loss rate: 7.405e-03
Avg. pollution rate: 2.854e-03
Loss Rate constraint: 5.00e-03
Pollution Rate constraint: 5.00e-03
Avg. rejection rate: 3.995e-01
Avg. loss rate: 6.822e-03
Avg. pollution rate: 4.026e-03

In [24]:
plt.figure(figsize=(9, 8))
plt.title('Rejection Rate / Manual work')
plt.contourf(max_prs, max_lrs, np.mean(rrs[:, :, -4:], axis=2).T, cmap=plt.cm.Reds)
plt.xlabel('Loss Rate constraint')
plt.ylabel('Pollution Rate constraint')
plt.colorbar()


Out[24]:
<matplotlib.colorbar.Colorbar at 0x7fa5519d1a90>

In [ ]:
plt.figure(figsize=(9, 8))
plt.title('Rejection Rate / Manual work')
plt.contourf(max_prs, max_lrs, np.mean(rrs[:, :, -4:], axis=2).T, cmap=plt.cm.Reds)
plt.xlabel('Loss Rate constraint')
plt.ylabel('Pollution Rate constraint')
plt.colorbar()

In [ ]:
plt.figure(figsize=(9, 8))
plt.title('Average Loss Rate')
plt.contourf(lrs, prs, alrs.T, cmap=plt.cm.Reds)
plt.xlabel('Loss Rate constraint')
plt.ylabel('Pollution Rate constraint')
plt.colorbar()

In [ ]:
plt.figure(figsize=(9, 8))
plt.title('Average Pollution Rate')
plt.contourf(prs, lrs, aprs.T, cmap=plt.cm.Reds)
plt.xlabel('Loss Rate constraint')
plt.ylabel('Pollution Rate constraint')
plt.colorbar()

In [ ]:
plt.matshow(arrs, cmap=plt.cm.Reds)
plt.xlabel('Pollution rate')
plt.ylabel('Loss rate')
plt.colorbar()

In [ ]: