Train Correlation

Imports


In [1]:
from railfetcher import *
from datetime import datetime, date, timedelta, time
from dateutil import parser
from mpl_toolkits.basemap import Basemap
from scipy.stats.stats import pearsonr
import pickle
import pymysql
import numpy as np
import pandas as pd
import matplotlib
import matplotlib.pyplot as plt
matplotlib.style.use('ggplot')

Helper functions


In [2]:
def toUnix(datetime):
    unix = datetime.strftime('%s')
    return unix

def convertDatetime(unix):
    dt = datetime.fromtimestamp(unix)
    return dt

def convertDate(unix):
    d = date.fromtimestamp(unix)
    return d

Database functions


In [3]:
class RailDatabase():
    def __init__(self, isNew):
        if isNew:
            self.conn = pymysql.connect(host='localhost', port=3306, user='jnevens', passwd='Panda85?', db='newrailDB')
        else:
            self.conn = pymysql.connect(host='localhost', port=3306, user='jnevens', passwd='Panda85?', db='oldrailDB')

    def getAllRoutes(self, date):
        C = self.conn.cursor()
        C.execute('SELECT * FROM route WHERE date = %s', (date,))
        rows = C.fetchall()
        C.close()
        return rows
    
    def getRoute(self, trainID, date):
        C = self.conn.cursor()
        C.execute('SELECT * FROM route WHERE train_id = %s AND date = %s', (trainID, date))
        row = C.fetchone()
        C.close()
        return row

    def getStops(self, routeID):
        C = self.conn.cursor()
        C.execute('SELECT * FROM stop WHERE route_id = %s ORDER BY arrival_datetime', (routeID,))
        rows = C.fetchall()
        C.close()
        return rows

    def getLastStop(self, routeID):
        C = self.conn.cursor()
        C.execute('SELECT * FROM stop WHERE route_id = %s ORDER BY arrival_datetime', (routeID,))
        rows = C.fetchall()
        last = rows[-1:]
        C.close()
        return last
    
    def getFirstStop(self, routeID):
        C = self.conn.cursor()
        C.execute('SELECT * FROM stop WHERE route_id = %s ORDER BY arrival_datetime', (routeID,))
        rows = C.fetchall()
        first = rows[0]
        C.close()
        return first
    
    def getStationName(self, stationID):
        C = self.conn.cursor()
        C.execute('SELECT name_nl FROM station WHERE station_id = %s', (stationID,))
        row = C.fetchone()
        C.close()
        return row
    
class Config():
    def __init__(self, isNew):
        self.new = isNew
        
    def period(self):
        if self.new:
            return (date(2014, 12, 16), date(2015, 2, 16))
        else:
            return (date(2014, 10, 27), date(2014, 12, 14))

Get metric


In [4]:
#Metric is average delay over all the stations
def avg_delay_metric(isNew):
    conf = Config(isNew)
    start, stop = conf.period()
    db = RailDatabase(isNew)
    trains = dict()
    while start <= stop:
        weekday = start.weekday()
        if weekday < 5:
            t = time(0, 0, 0)
            dt = datetime.combine(start, t)
            routes = db.getAllRoutes(toUnix(dt))
            for routeRow in routes:
                routeID = routeRow[0]
                trainID = routeRow[2]
                stops = db.getStops(routeID)
                total_arrival_delay = 0
                arrival_delay_count = 0
                total_departure_delay = 0
                departure_delay_count = 0
                for stopRow in stops:
                    arrival_detected = stopRow[3]
                    departure_detected = stopRow[6]
                    arrival_delay = stopRow[2]
                    departure_delay = stopRow[5]
                    if arrival_detected:
                        total_arrival_delay += arrival_delay
                        arrival_delay_count += 1
                    if departure_detected:
                        total_departure_delay += departure_delay
                        departure_delay_count += 1
                if arrival_delay_count != 0:
                    avg_arrival = float(total_arrival_delay) / float(arrival_delay_count) 
                if departure_delay_count != 0:
                    avg_departure = float(total_departure_delay) / float(departure_delay_count)
                    
                if avg_arrival != 0 and avg_departure != 0:
                    avg_delay = np.mean([avg_arrival, avg_departure])
                elif avg_arrival != 0:
                    avg_delay = avg_arrival
                elif avg_departure != 0:
                    avg_delay = avg_departure
                else:
                    pass
                
                if trainID in trains:
                    trains[trainID].append(avg_delay)
                else:
                    trains[trainID] = [avg_delay]
                    
        delta = timedelta(days=1)
        start = start + delta          
    return trains

def acc_delay_metric(isNew):
    conf = Config(isNew)
    start, stop = conf.period()
    db = RailDatabase(isNew)
    trains = dict()
    while start <= stop:
        weekday = start.weekday()
        if weekday < 5:
            t = time(0, 0, 0)
            dt = datetime.combine(start, t)
            routes = db.getAllRoutes(toUnix(dt))
            for routeRow in routes:
                routeID = routeRow[0]
                trainID = routeRow[2]
                stops = db.getStops(routeID)
                total_delay = 0
                for stopRow in stops:
                    arrival_detected = stopRow[3]
                    departure_detected = stopRow[6]
                    arrival_delay = stopRow[2]
                    departure_delay = stopRow[5]
                    if arrival_detected and departure_detected:
                        total_delay += max(arrival_delay, departure_delay)
                    elif arrival_detected:
                        total_delay += arrival_delay
                    elif departure_detected:
                        total_delay += departure_delay
                if trainID in trains:
                    trains[trainID].append(total_delay)
                else:
                    trains[trainID] = [total_delay]    
        delta = timedelta(days=1)
        start = start + delta            
    return trains

def binary_metric(isNew):
    conf = Config(isNew)
    start, stop = conf.period()
    db = RailDatabase(isNew)
    trains = dict()
    while start <= stop:
        weekday = start.weekday()
        if weekday < 5:
            t = time(0, 0, 0)
            dt = datetime.combine(start, t)
            routes = db.getAllRoutes(toUnix(dt))
            for routeRow in routes:
                routeID = routeRow[0]
                trainID = routeRow[2]
                stops = db.getStops(routeID)
                delayed = 0
                for stopRow in stops:
                    arrival_detected = stopRow[3]
                    departure_detected = stopRow[6]
                    arrival_delay = stopRow[2]
                    departure_delay = stopRow[5]
                    if arrival_detected:
                        if arrival_delay > 5:
                            delayed = 1
                            break
                    if departure_detected:
                        if departure_delay > 5:
                            delayed = 1
                            break
                if trainID in trains:
                    trains[trainID].append(delayed)
                else:
                    trains[trainID] = [delayed]
        delta = timedelta(days=1)
        start = start + delta
    return trains

def binary_metric_train(isNew, train, tresh=5):
    conf = Config(isNew)
    start, stop = conf.period()
    db = RailDatabase(isNew)
    metric = []
    while start <= stop:
        weekday = start.weekday()
        if weekday < 5:
            t = time(0, 0, 0)
            dt = datetime.combine(start, t)
            route = db.getRoute(train, toUnix(dt))
            routeID = route[0]
            stops = db.getStops(routeID)
            delayed = 0
            for stopRow in stops:
                arrival_detected = stopRow[3]
                departure_detected = stopRow[6]
                arrival_delay = stopRow[2]
                departure_delay = stopRow[5]
                if arrival_detected:
                    if arrival_delay > tresh:
                        delayed = 1
                        break
                if departure_detected:
                    if departure_delay > tresh:
                        delayed = 1
                        break
            metric.append(delayed)
        delta = timedelta(days=1)
        start = start + delta
    return metric

Average metric


In [19]:
#Period: 16/12/14 -> 16/02/15
#Avg delay metric
avg_delays = avg_delay_metric(True)
copy = dict(avg_delays)

for idx in copy:
    lst = copy[idx]
    if len(lst) != 45:
        del avg_delays[idx]

sze = len(avg_delays)
matrix = np.empty((sze, sze))
matrix.fill(np.nan)
avgcorr = pd.DataFrame(matrix, index=np.sort(avg_delays.keys()), columns=np.sort(avg_delays.keys()), dtype=float)

for i in avg_delays:
    for j in avg_delays:
        if i > j:
            corr = abs(pearsonr(avg_delays[i], avg_delays[j])[0])
            if corr > 0 and corr < 1:
                avgcorr.loc[i, j] = corr
                
avgcorr


Out[19]:
90 91 96 97 106 107 108 109 110 111 ... 19724 19725 19726 19728 19730 19734 19735 19743 19745 19747
90 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
91 0.199979 NaN NaN NaN NaN NaN NaN NaN NaN NaN ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
96 0.378509 0.380352 NaN NaN NaN NaN NaN NaN NaN NaN ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
97 0.122009 0.172665 0.171342 NaN NaN NaN NaN NaN NaN NaN ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
106 0.026973 0.102516 0.129888 0.250254 NaN NaN NaN NaN NaN NaN ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
107 0.236587 0.402702 0.125200 0.133500 0.127067 NaN NaN NaN NaN NaN ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
108 0.048202 0.032336 0.040721 0.064434 0.127093 0.182508 NaN NaN NaN NaN ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
109 0.112209 0.135571 0.194607 0.093866 0.126110 0.298796 0.096104 NaN NaN NaN ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
110 0.024302 0.147827 0.009325 0.015100 0.031871 0.091970 0.057953 0.147893 NaN NaN ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
111 0.352753 0.073639 0.160877 0.100577 0.429302 0.086781 0.159042 0.014894 0.009063 NaN ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
112 0.154674 0.123430 0.123526 0.134231 0.104892 0.027914 0.123320 0.207943 0.001979 0.169077 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
113 0.106117 0.147397 0.213320 0.017662 0.046983 0.005012 0.113945 0.002805 0.017902 0.158372 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
114 0.070985 0.166298 0.218697 0.194854 0.248860 0.212717 0.165093 0.061293 0.208595 0.243700 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
115 0.138552 0.103059 0.159513 0.057148 0.246124 0.379910 0.110878 0.089373 0.015274 0.065065 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
116 0.003805 0.065945 0.241380 0.005671 0.345675 0.206969 0.114458 0.101872 0.183884 0.090382 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
117 0.091627 0.064129 0.180063 0.198118 0.151770 0.158792 0.118463 0.060228 0.105544 0.148530 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
118 0.144331 0.348404 0.067953 0.057148 0.096568 0.244882 0.022915 0.119781 0.016179 0.259441 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
119 0.051330 0.211925 0.080914 0.181231 0.221801 0.053906 0.118979 0.223799 0.237420 0.033465 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
120 0.036249 0.051608 0.160514 0.212055 0.191348 0.048088 0.159955 0.033956 0.468024 0.160425 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
121 0.061847 0.035369 0.129722 0.091461 0.148966 0.245257 0.058868 0.031238 0.140701 0.014343 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
122 0.115882 0.140661 0.036058 0.129479 0.165897 0.048391 0.019240 0.230661 0.069376 0.086850 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
123 0.004427 0.092320 0.147808 0.329514 0.086366 0.141203 0.039613 0.165672 0.232995 0.034595 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
405 0.029829 0.074184 0.092710 0.085845 0.111256 0.111967 0.136707 0.125013 0.263157 0.111554 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
406 0.018721 0.024724 0.156256 0.124135 0.166897 0.015496 0.063164 0.079919 0.363603 0.088450 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
407 0.408605 0.083960 0.345299 0.124950 0.094743 0.193974 0.008478 0.119151 0.073495 0.356560 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
408 0.005979 0.054330 0.005169 0.092182 0.072429 0.112207 0.136564 0.039546 0.062370 0.220856 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
409 0.008399 0.212358 0.099529 0.007038 0.129901 0.163161 0.190958 0.290490 0.214349 0.042704 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
410 0.101820 0.070562 0.032519 0.177546 0.246771 0.078868 0.182222 0.118516 0.067555 0.147212 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
411 0.080774 0.129321 0.009771 0.309847 0.113944 0.099252 0.163912 0.641941 0.016810 0.053700 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
412 0.153933 0.037468 0.161055 0.019295 0.175932 0.250677 0.064941 0.539610 0.054896 0.181044 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ...
9239 0.102297 0.047817 0.008101 0.067109 0.064056 0.032856 0.112593 0.046501 0.091158 0.043889 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
9240 0.102901 0.299567 0.133565 0.069678 0.140192 0.044802 0.123717 0.121659 0.091804 0.283297 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
9243 0.020331 0.015524 0.072516 0.030706 0.090319 0.003083 0.000994 0.015540 0.143092 0.014036 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
9244 0.051396 0.055409 0.121561 0.142070 0.101009 0.033821 0.229777 0.032179 0.089243 0.105780 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
9247 0.193230 0.045398 0.151094 0.097593 0.267067 0.238961 0.219073 0.024343 0.084806 0.103575 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
9248 0.025438 0.090772 0.294094 0.094484 0.013583 0.141313 0.340996 0.070073 0.283556 0.058456 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
9251 0.168223 0.092540 0.017460 0.052201 0.013400 0.079209 0.322880 0.058765 0.059304 0.076409 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
9252 0.043874 0.011637 0.083681 0.162936 0.121341 0.103625 0.555671 0.015334 0.030602 0.170941 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
9255 0.186960 0.117247 0.154618 0.147776 0.027685 0.072200 0.006291 0.078183 0.094099 0.275262 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
9256 0.075442 0.559232 0.487353 0.037827 0.126506 0.189016 0.084287 0.018086 0.074802 0.093968 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
9259 0.053062 0.192817 0.160179 0.082558 0.381131 0.330067 0.026937 0.141164 0.204660 0.098256 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
9260 0.219257 0.083350 0.087777 0.101888 0.026994 0.154867 0.037435 0.278179 0.033325 0.058165 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
19707 0.091888 0.113561 0.087360 0.042945 0.120625 0.120243 0.064290 0.052851 0.509839 0.168901 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
19708 0.062547 0.094910 0.101836 0.152762 0.101339 0.092890 0.022593 0.153581 0.169025 0.103236 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
19709 0.121072 0.089212 0.129335 0.046289 0.352764 0.143459 0.096524 0.020659 0.208227 0.252383 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
19710 0.164891 0.596953 0.022011 0.148693 0.057243 0.235593 0.092288 0.119893 0.063318 0.009239 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
19714 0.017277 0.132870 0.022330 0.021664 0.090511 0.058318 0.081078 0.125402 0.159516 0.089018 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
19718 0.021223 0.024636 0.001176 0.101275 0.053961 0.162904 0.121034 0.105701 0.025571 0.041036 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
19720 0.104397 0.092505 0.101580 0.241612 0.127973 0.065613 0.127494 0.164089 0.393789 0.024353 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
19722 0.289037 0.701954 0.004277 0.179369 0.015964 0.334193 0.025599 0.109123 0.094033 0.078444 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
19724 0.267707 0.136616 0.291280 0.082333 0.119765 0.174070 0.086984 0.126037 0.110703 0.092077 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
19725 0.093374 0.139303 0.085230 0.026997 0.067412 0.006725 0.056740 0.072883 0.045978 0.104483 ... 0.030181 NaN NaN NaN NaN NaN NaN NaN NaN NaN
19726 0.257170 0.511720 0.042093 0.028345 0.038297 0.178247 0.040861 0.198793 0.036660 0.054993 ... 0.168329 0.154812 NaN NaN NaN NaN NaN NaN NaN NaN
19728 0.077424 0.058364 0.166659 0.165148 0.057756 0.063367 0.066350 0.048041 0.067454 0.103071 ... 0.106715 0.023554 0.188262 NaN NaN NaN NaN NaN NaN NaN
19730 0.032649 0.082172 0.009580 0.008997 0.146118 0.097146 0.041935 0.061223 0.054447 0.146568 ... 0.053278 0.448248 0.089311 0.061696 NaN NaN NaN NaN NaN NaN
19734 0.122569 0.071623 0.061698 0.094346 0.280158 0.004490 0.409401 0.140836 0.046283 0.045367 ... 0.065272 0.004414 0.091117 0.045549 0.037983 NaN NaN NaN NaN NaN
19735 0.333188 0.078304 0.236312 0.125157 0.088448 0.163949 0.034717 0.103424 0.125872 0.301031 ... 0.437942 0.016664 0.038916 0.137075 0.177546 0.025218 NaN NaN NaN NaN
19743 0.268634 0.267376 0.275316 0.356024 0.118723 0.028530 0.126865 0.075696 0.102181 0.003047 ... 0.001455 0.162608 0.160568 0.274970 0.202794 0.175167 0.135461 NaN NaN NaN
19745 0.098398 0.068495 0.013324 0.179648 0.142168 0.107999 0.026900 0.070158 0.130173 0.207014 ... 0.004936 0.109339 0.165944 0.184956 0.183188 0.144641 0.059207 0.125816 NaN NaN
19747 0.492401 0.038416 0.149995 0.075768 0.089529 0.210302 0.013448 0.097119 0.022757 0.382262 ... 0.332392 0.149849 0.012835 0.098092 0.163718 0.029348 0.434099 0.142304 0.131979 NaN

1746 rows × 1746 columns


In [78]:
t = avgcorr.unstack()
t.describe()


Out[78]:
count    1523385.000000
mean           0.120964
std            0.104668
min            0.000000
25%            0.047260
50%            0.096981
75%            0.161948
max            0.997796
dtype: float64

Accumulative metric


In [20]:
#Period: 16/12/14 -> 16/02/15
#acc delay metric
acc_delays = acc_delay_metric(True)
copy = dict(acc_delays)

for idx in copy:
    lst = copy[idx]
    if len(lst) != 45:
        del acc_delays[idx]
        
sze = len(acc_delays)
matrix = np.empty((sze, sze))
matrix.fill(np.nan)
acccorr = pd.DataFrame(matrix, index=np.sort(acc_delays.keys()), columns=np.sort(acc_delays.keys()), dtype=float)

for i in acc_delays:
    for j in acc_delays:
        if i > j:
            corr = abs(pearsonr(acc_delays[i], acc_delays[j])[0])
            if corr > 0 and corr < 1.0:
                acccorr.loc[i, j] = corr
                
acccorr


Out[20]:
90 91 96 97 106 107 108 109 110 111 ... 19724 19725 19726 19728 19730 19734 19735 19743 19745 19747
90 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
91 0.134667 NaN NaN NaN NaN NaN NaN NaN NaN NaN ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
96 0.399318 0.350184 NaN NaN NaN NaN NaN NaN NaN NaN ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
97 0.096876 0.138871 0.146725 NaN NaN NaN NaN NaN NaN NaN ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
106 0.153285 0.084278 0.165556 0.219764 NaN NaN NaN NaN NaN NaN ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
107 0.078245 0.098213 0.070411 0.028637 0.080109 NaN NaN NaN NaN NaN ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
108 0.024861 0.098321 0.060854 0.132251 0.079687 0.078686 NaN NaN NaN NaN ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
109 0.034777 0.112701 0.127692 0.153988 0.062494 0.261490 0.014736 NaN NaN NaN ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
110 0.057408 0.058722 0.132852 0.002640 0.067896 0.014690 0.238279 0.352562 NaN NaN ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
111 0.140242 0.126091 0.065288 0.095235 0.380612 0.014860 0.069692 0.182059 0.168589 NaN ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
112 0.007429 0.121405 0.201183 0.096619 0.100991 0.090006 0.054974 0.577577 0.512188 0.073394 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
113 0.006981 0.076458 0.077653 0.092080 0.019292 0.064405 0.494295 0.175416 0.504594 0.016136 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
114 0.142167 0.003905 0.085395 0.133421 0.084605 0.066630 0.031295 0.105476 0.044247 0.096374 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
115 0.135657 0.308677 0.421551 0.062953 0.074242 0.231269 0.051754 0.067606 0.069488 0.108300 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
116 0.080879 0.022636 0.039333 0.053946 0.057633 0.085983 0.079145 0.093090 0.050830 0.079220 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
117 0.059138 0.068435 0.084916 0.065939 0.072178 0.107683 0.099120 0.101430 0.061896 0.088654 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
118 0.085766 0.177001 0.228569 0.090914 0.080083 0.110109 0.122604 0.077591 0.041526 0.057112 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
119 0.021922 0.103819 0.155228 0.061636 0.320755 0.085949 0.103767 0.134368 0.073873 0.121517 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
120 0.149594 0.078907 0.085827 0.049311 0.068713 0.052438 0.082305 0.062208 0.073116 0.099765 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
121 0.003221 0.062574 0.082983 0.050006 0.298653 0.007707 0.097985 0.173582 0.041073 0.217084 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
122 0.081320 0.056812 0.110082 0.169836 0.055381 0.440455 0.008403 0.128056 0.048844 0.076125 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
123 0.103246 0.117853 0.109449 0.095359 0.070980 0.014991 0.140361 0.023899 0.037422 0.049885 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
405 0.011456 0.036222 0.057549 0.017239 0.065819 0.107242 0.285509 0.246895 0.794728 0.011350 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
406 0.105922 0.124146 0.130022 0.006966 0.550014 0.239163 0.035624 0.020127 0.030918 0.162134 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
407 0.446826 0.051463 0.415819 0.008385 0.056398 0.223557 0.098777 0.012412 0.026391 0.000682 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
408 0.178866 0.177737 0.359795 0.091020 0.059460 0.210718 0.084495 0.025218 0.085304 0.076437 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
409 0.012640 0.044422 0.005450 0.210274 0.078768 0.225481 0.082416 0.175908 0.397986 0.081935 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
410 0.173301 0.015974 0.048925 0.163290 0.083043 0.183783 0.063482 0.043454 0.391890 0.104426 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
411 0.170630 0.047774 0.149896 0.239252 0.066687 0.076641 0.069167 0.141421 0.059658 0.052924 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
412 0.101899 0.058367 0.109275 0.102900 0.032613 0.053290 0.072848 0.064372 0.021985 0.034371 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ...
9239 0.147991 0.326785 0.313796 0.093290 0.309257 0.095367 0.005718 0.061010 0.183525 0.145853 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
9240 0.008533 0.101983 0.202992 0.058056 0.005585 0.031461 0.154147 0.458114 0.674173 0.552585 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
9243 0.074320 0.099827 0.159935 0.082499 0.332235 0.252825 0.186567 0.033060 0.041425 0.122416 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
9244 0.101012 0.081141 0.072263 0.088522 0.064319 0.142199 0.013958 0.080675 0.031083 0.130066 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
9247 0.009251 0.185022 0.169930 0.129149 0.061861 0.092291 0.080808 0.064079 0.053294 0.078521 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
9248 0.038675 0.045815 0.380237 0.045338 0.061498 0.118588 0.064760 0.099977 0.016186 0.045521 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
9251 0.041499 0.033912 0.146365 0.075677 0.081080 0.072019 0.049841 0.170990 0.093246 0.026662 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
9252 0.143190 0.047922 0.422057 0.206504 0.095460 0.008459 0.123665 0.058265 0.072859 0.020853 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
9255 0.038927 0.096321 0.198980 0.274772 0.009996 0.435365 0.154987 0.095955 0.074993 0.159500 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
9256 0.049374 0.111631 0.217408 0.127338 0.242721 0.239523 0.005207 0.397799 0.396706 0.007839 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
9259 0.030405 0.059311 0.350670 0.065315 0.053468 0.023997 0.005613 0.022778 0.024552 0.061141 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
9260 0.069932 0.060962 0.142346 0.063598 0.067333 0.463794 0.034639 0.529256 0.376852 0.052315 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
19707 0.047553 0.127723 0.218758 0.113105 0.247022 0.038185 0.096978 0.136118 0.070788 0.083520 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
19708 0.050784 0.253486 0.299827 0.111831 0.030665 0.070335 0.037953 0.039069 0.040902 0.016313 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
19709 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
19710 0.229048 0.137088 0.058761 0.288324 0.003660 0.316325 0.174640 0.096654 0.065177 0.066191 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
19714 0.044240 0.096472 0.106453 0.022246 0.077166 0.079935 0.016632 0.000630 0.171267 0.072780 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
19718 0.163539 0.079238 0.055248 0.176361 0.096431 0.164974 0.286865 0.076777 0.096863 0.076664 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
19720 0.009347 0.122272 0.121159 0.122584 0.292927 0.046022 0.476128 0.143928 0.075822 0.103777 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
19722 0.112767 0.038220 0.033719 0.190079 0.055145 0.136574 0.040395 0.004813 0.048636 0.075801 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
19724 0.307893 0.092729 0.178326 0.192886 0.091134 0.084978 0.022647 0.060449 0.070920 0.151887 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
19725 0.020828 0.383571 0.437976 0.166485 0.102658 0.000534 0.094789 0.021375 0.099771 0.152742 ... 0.029208 NaN NaN NaN NaN NaN NaN NaN NaN NaN
19726 0.185796 0.065261 0.068541 0.045774 0.100698 0.048411 0.423445 0.002226 0.055802 0.113211 ... 0.113354 0.051657 NaN NaN NaN NaN NaN NaN NaN NaN
19728 0.075452 0.087101 0.044508 0.027489 0.071862 0.004575 0.035139 0.083653 0.051186 0.098066 ... 0.142715 0.105599 0.174328 NaN NaN NaN NaN NaN NaN NaN
19730 0.077779 0.123136 0.059942 0.164755 0.081688 0.013130 0.086113 0.240076 0.067813 0.111337 ... 0.277067 0.020430 0.106853 0.033260 NaN NaN NaN NaN NaN NaN
19734 0.117666 0.014708 0.027349 0.181423 0.076690 0.104055 0.105215 0.041313 0.066623 0.089864 ... 0.053539 0.013530 0.085539 0.020072 0.063554 NaN NaN NaN NaN NaN
19735 0.386288 0.094229 0.265925 0.127794 0.063486 0.031029 0.014128 0.096505 0.042876 0.080324 ... 0.526959 0.079824 0.048495 0.102993 0.142932 0.000107 NaN NaN NaN NaN
19743 0.062196 0.095890 0.164402 0.024615 0.099429 0.139349 0.040185 0.053396 0.241382 0.058145 ... 0.156512 0.080258 0.001956 0.002598 0.105506 0.627986 0.369173 NaN NaN NaN
19745 0.085283 0.064950 0.128917 0.105329 0.188303 0.145866 0.173248 0.129886 0.086230 0.037247 ... 0.106127 0.049243 0.467553 0.379510 0.103747 0.097399 0.068428 0.054226 NaN NaN
19747 0.535986 0.076954 0.421089 0.109753 0.048314 0.089192 0.032673 0.072245 0.026159 0.066411 ... 0.691205 0.070996 0.063198 0.066302 0.342788 0.021140 0.774796 0.062401 0.061361 NaN

1746 rows × 1746 columns


In [65]:
t = acccorr.unstack()
t.describe()


Out[65]:
count    1.423796e+06
mean     1.079001e-01
std      1.196084e-01
min      5.879558e-19
25%      4.441983e-02
50%      7.317325e-02
75%      1.182989e-01
max      1.000000e+00
dtype: float64

Binary metric


In [5]:
bdelays = binary_metric(True)
copy = dict(bdelays)

for idx in copy:
    lst = copy[idx]
    if len(lst) != 45:
        del bdelays[idx]

sze = len(bdelays)
matrix = np.empty((sze, sze))
matrix.fill(np.nan)
bincorr = pd.DataFrame(matrix, index=np.sort(bdelays.keys()), columns=np.sort(bdelays.keys()), dtype=float)

for i in bdelays:
    for j in bdelays:
        if i > j:
            corr = abs(pearsonr(bdelays[i], bdelays[j])[0])
            if corr > 0 and corr < 1:
                bincorr.loc[i, j] = corr
                
bincorr


Out[5]:
90 91 96 97 106 107 108 109 110 111 ... 19724 19725 19726 19728 19730 19734 19735 19743 19745 19747
90 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
91 0.100452 NaN NaN NaN NaN NaN NaN NaN NaN NaN ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
96 0.144098 0.366900 NaN NaN NaN NaN NaN NaN NaN NaN ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
97 0.087994 0.313011 1.026316e-01 NaN NaN NaN NaN NaN NaN NaN ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
106 0.609994 0.242681 3.212698e-01 0.084856 NaN NaN NaN NaN NaN NaN ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
107 0.084591 0.182692 5.241424e-02 0.018828 6.933752e-02 NaN NaN NaN NaN NaN ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
108 0.122670 0.207889 5.527900e-02 0.047160 3.656362e-02 0.233241 NaN NaN NaN NaN ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
109 0.168045 0.294389 1.959984e-01 0.127609 1.296407e-01 0.098879 0.090063 NaN NaN NaN ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
110 0.076249 0.225347 1.889822e-02 0.237595 1.250000e-01 0.069338 0.036564 0.162051 NaN NaN ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
111 0.128246 0.093804 1.934765e-01 0.047160 2.925090e-01 0.081127 0.037433 0.016590 0.457045 NaN ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
112 0.084591 0.105769 1.048285e-01 0.122380 1.386750e-01 0.230769 0.070986 0.233713 0.485363 0.081127 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
113 0.100282 0.088342 3.106849e-02 0.064171 2.054987e-02 0.011399 0.141259 0.002664 0.020550 0.141259 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
114 0.076249 0.086672 1.511858e-01 0.237595 1.250000e-01 0.138675 0.127973 0.129641 0.325000 0.127973 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
115 0.181762 0.088342 1.087397e-01 0.061381 2.054987e-02 0.011399 0.141259 0.122549 0.164399 0.264485 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
116 0.057639 0.170346 1.428571e-01 0.205263 9.449112e-02 0.104828 0.152017 0.208248 0.094491 0.152017 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
117 0.084591 0.105769 2.096570e-01 0.160036 1.386750e-01 0.153846 0.223100 0.035956 0.138675 0.070986 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
118 0.181762 0.168136 1.708767e-01 0.061381 2.054987e-02 0.182384 0.006011 0.002664 0.205499 0.141259 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
119 0.130051 0.162611 8.058230e-02 0.079602 5.330018e-02 0.088697 0.226066 0.055279 0.213201 0.007795 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
120 0.232625 0.105769 5.241424e-02 0.122380 6.933752e-02 0.038462 0.070986 0.035956 0.138675 0.223100 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
121 0.137460 0.081731 1.310356e-01 0.110613 6.933752e-02 0.182692 0.093804 0.211241 0.242681 0.093804 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
122 0.046512 0.137460 1.152781e-01 0.144932 7.624929e-02 0.232625 0.128246 0.276780 0.076249 0.122670 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
123 0.304997 0.173344 7.559289e-02 0.169711 2.000000e-01 0.277350 0.146254 0.226871 0.200000 0.036564 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
405 0.044023 0.020016 4.845411e-17 0.058790 NaN 0.080064 0.274430 0.168408 0.144338 0.063330 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
406 0.054368 0.211241 1.347489e-01 0.070405 1.296407e-01 0.170790 0.229897 0.134454 0.162051 0.196716 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
407 0.144098 0.131036 2.285714e-01 0.218092 1.889822e-02 0.052414 0.055279 0.195998 0.188982 0.055279 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
408 0.004794 0.259373 1.188121e-01 0.110964 6.286946e-02 0.122058 0.142522 0.211912 0.062869 0.039078 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
409 0.144932 0.216519 2.437501e-01 0.244240 8.485553e-02 0.018828 0.287924 0.367425 0.084856 0.158854 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
410 0.130051 0.051740 4.029115e-02 0.079602 5.330018e-02 0.206959 0.007795 0.048369 0.106600 0.007795 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
411 0.107833 0.049029 2.967196e-17 0.216007 4.906539e-18 0.032686 0.025854 0.275010 0.176777 0.025854 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
412 0.204961 0.273561 8.193419e-02 0.023545 4.335550e-02 0.192394 0.101455 0.297894 0.238455 0.183887 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ...
9239 0.084591 0.038462 2.620712e-01 0.122380 6.933752e-02 0.230769 0.081127 0.098879 0.069338 0.081127 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
9240 0.137460 0.026442 1.048285e-01 0.110613 8.667191e-02 0.182692 0.207889 0.312367 0.242681 0.207889 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
9243 0.128246 0.093804 5.527900e-02 0.047160 1.279727e-01 0.233241 0.398396 0.123244 0.036564 0.037433 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
9244 0.137460 0.026442 1.310356e-02 0.101199 6.933752e-02 0.250000 0.093804 0.008989 0.069338 0.248453 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
9247 0.076249 0.069338 1.889822e-02 0.237595 1.250000e-01 0.138675 0.036564 0.129641 0.125000 0.036564 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
9248 0.152499 0.242681 1.511858e-01 0.033942 1.000000e-01 0.277350 0.255945 0.324102 0.200000 0.036564 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
9251 0.130051 0.051740 8.058230e-02 0.079602 5.330018e-02 0.088697 0.124726 0.469871 0.213201 0.226066 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
9252 0.144098 0.248968 1.571429e-01 0.333553 1.889822e-02 0.104828 0.055279 0.085749 0.188982 0.069099 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
9255 0.024112 0.021926 4.780914e-02 0.171736 3.162278e-02 0.043853 0.219686 0.317719 0.031623 0.092499 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
9256 0.357641 0.162611 1.611646e-01 0.188149 4.264014e-01 0.059131 0.007795 0.048369 0.266501 0.241657 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
9259 0.113795 0.059131 8.058230e-02 0.028946 1.066004e-01 0.059131 0.007795 0.255665 0.106600 0.241657 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
9260 0.107833 0.196116 1.483598e-17 0.216007 1.767767e-01 0.294174 0.025854 0.297927 0.353553 0.025854 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
19707 0.067363 0.317768 2.086960e-01 0.041231 3.865103e-01 0.107199 0.185738 0.243379 0.110432 0.185738 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
19708 0.067363 0.199083 1.669568e-01 0.127442 1.104315e-01 0.122513 0.367438 0.239800 0.138039 0.185738 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
19709 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
19710 0.092563 0.003006 2.130289e-01 0.155988 4.335550e-02 0.192394 0.101455 0.044965 0.043355 0.326558 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
19714 0.266872 0.086672 1.889822e-02 0.084856 1.000000e-01 0.069338 0.036564 0.129641 0.100000 0.127973 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
19718 0.161749 0.073544 1.336306e-01 0.024001 1.471962e-17 0.196116 0.103418 0.160422 0.176777 0.025854 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
19720 0.067363 0.145484 2.086960e-02 0.041231 1.380394e-01 0.107199 0.367438 0.243379 0.110432 0.004038 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
19722 0.032513 0.096088 8.058230e-02 0.101311 5.330018e-02 0.059131 0.085749 0.117468 0.053300 0.085749 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
19724 0.076249 0.381356 7.559289e-02 0.135769 5.000000e-02 0.138675 0.255945 0.064820 0.250000 0.402200 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
19725 0.204961 0.132271 8.193419e-02 0.023545 4.335550e-02 0.012025 0.101455 0.081499 0.151744 0.101455 ... 0.216777 NaN NaN NaN NaN NaN NaN NaN NaN NaN
19726 0.092563 0.138283 8.193419e-02 0.023545 1.517442e-01 0.012025 0.183887 0.081499 0.043355 0.041216 ... 0.043355 0.184211 NaN NaN NaN NaN NaN NaN NaN NaN
19728 0.084591 0.326923 1.048285e-01 0.018828 1.386750e-01 0.230769 0.385355 0.170790 0.069338 0.070986 ... 0.277350 0.168345 0.372764 NaN NaN NaN NaN NaN NaN NaN
19730 0.067363 0.317768 2.086960e-01 0.296115 1.104315e-01 0.107199 0.004038 0.078740 0.110432 0.177662 ... 0.276079 0.081393 0.134059 0.336910 NaN NaN NaN NaN NaN NaN
19734 0.067363 0.199083 1.669568e-01 0.041231 1.104315e-01 0.122513 0.185738 0.239800 0.110432 0.177662 ... 0.110432 0.081393 0.134059 0.122513 0.097561 NaN NaN NaN NaN NaN
19735 0.266872 0.086672 1.889822e-02 0.084856 1.000000e-01 0.069338 0.292509 0.016205 0.325000 0.127973 ... 0.200000 0.238455 0.043355 0.277350 0.138039 0.138039 NaN NaN NaN NaN
19743 0.084591 0.250000 1.048285e-01 0.263589 1.386750e-01 0.153846 0.081127 0.098879 0.277350 0.081127 ... 0.138675 0.012025 0.012025 0.038462 0.122513 0.336910 0.485363 NaN NaN NaN
19745 0.032513 0.096088 8.058230e-02 0.224332 5.330018e-02 0.059131 0.265043 0.117468 0.053300 0.085749 ... 0.106600 0.064704 0.351250 0.059131 0.047088 0.047088 0.053300 0.059131 NaN NaN
19747 0.046512 0.100452 1.152781e-01 0.087994 7.624929e-02 0.232625 0.128246 0.054368 0.076249 0.122670 ... 0.076249 0.092563 0.092563 0.232625 0.690467 0.067363 0.266872 0.084591 0.032513 NaN

1746 rows × 1746 columns


In [6]:
t = bincorr.unstack()
t.describe()


Out[6]:
count    1.379251e+06
mean     1.254387e-01
std      9.314101e-02
min      6.133174e-19
25%      5.900320e-02
50%      1.048285e-01
75%      1.689595e-01
max      8.864053e-01
dtype: float64

In [ ]:
bres_file = open('./pickles/bres.pkl', 'rb')
bres = pickle.load(bres_file)

In [7]:
#Voor elke trein A bereken ik de binaire metriek verschillende keren, telkens met een verschillende treshold.
#Voor elke treshold moet de correlatie met alle andere treinen berekent worden. Indien de som van de correlaties
#tussen trein A en trein B voor alle tresholds groter dan (bijvoorbeeld) 1 is, 
#dan moet deze correlatie bijgehouden worden.
trains = bincorr.index.tolist()
tresholds = [10, 20, 30, 40, 50, 60]
tuples = []
for i in trains:
    for j in tresholds:
        tuples.append((i, j))
        
index = pd.MultiIndex.from_tuples(tuples, names=['trains', 'tresholds'])
df = pd.DataFrame(np.zeros((len(index), len(trains))), index=index, columns=trains, dtype=float)

In [8]:
metrics = dict()
for i in trains:
    m = binary_metric_train(True, str(i))
    metrics[i] = m

In [9]:
treshold_metrics = dict()
for i in trains:
    treshold_metrics[i] = dict()
    for j in tresholds:
        m = binary_metric_train(True, str(i), tresh=j)
        treshold_metrics[i][j] = m

In [10]:
for i in trains:
    for j in tresholds:
        trA = treshold_metrics[i][j]
        for k in trains:
            if k != i:
                trB = metrics[k]
                corr = abs(pearsonr(trA, trB)[0])
                df.loc[(i, j), k] = corr
            else:
                df.loc[(i, j), k] = np.nan

In [11]:
df


Out[11]:
90 91 96 97 106 107 108 109 110 111 ... 19724 19725 19726 19728 19730 19734 19735 19743 19745 19747
trains tresholds
90 10 NaN 0.063209 0.095050 0.177116 0.078587 0.139495 0.064365 0.154858 0.062869 0.167808 ... 6.286946e-02 0.193527 0.297105 0.122058 0.006943 0.319367 0.078587 0.139495 0.147442 0.004794
20 NaN 0.101199 0.102632 0.036866 0.220624 0.160036 0.176229 0.169411 0.084856 0.064535 ... 1.357688e-01 0.108897 0.288430 0.122380 0.127442 0.464788 0.220624 0.301244 0.101311 0.087994
30 NaN 0.132271 0.081934 0.108897 0.238455 0.372764 0.183887 0.044965 0.151744 0.041216 ... 8.671100e-02 0.184211 0.184211 0.012025 0.081393 0.296844 0.043355 0.168345 0.064704 0.204961
40 NaN 0.132271 0.081934 0.108897 0.238455 0.372764 0.183887 0.044965 0.151744 0.041216 ... 8.671100e-02 0.184211 0.184211 0.012025 0.081393 0.296844 0.043355 0.168345 0.064704 0.204961
50 NaN 0.182692 0.052414 0.160036 0.069338 0.423077 0.233241 0.035956 0.138675 0.081127 ... 7.698012e-18 0.168345 0.168345 0.038462 0.107199 0.336910 0.069338 0.153846 0.059131 0.232625
60 NaN 0.242681 0.018898 0.220624 0.100000 0.485363 0.292509 0.016205 0.125000 0.127973 ... 5.000000e-02 0.151744 0.151744 0.069338 0.138039 0.138039 0.100000 0.138675 0.053300 0.266872
91 10 0.168045 NaN 0.306247 0.226615 0.129641 0.170790 0.016590 0.243697 0.129641 0.229897 ... 6.482037e-02 0.044965 0.044965 0.170790 0.243379 0.400860 0.129641 0.098879 0.117468 0.168045
20 0.115278 NaN 0.157143 0.128290 0.018898 0.209657 0.055279 0.134749 0.018898 0.179657 ... 7.559289e-02 0.213029 0.081934 0.209657 0.166957 0.208696 0.018898 0.104828 0.080582 0.115278
30 0.092563 NaN 0.081934 0.023545 0.151744 0.168345 0.101455 0.081499 0.151744 0.244126 ... 4.335550e-02 0.154135 0.015038 0.168345 0.134059 0.081393 0.151744 0.012025 0.064704 0.092563
40 0.076249 NaN 0.018898 0.067884 0.125000 0.138675 0.036564 0.129641 0.125000 0.201100 ... 5.000000e-02 0.043355 0.043355 0.138675 0.110432 0.138039 0.125000 0.069338 0.053300 0.076249
50 0.057639 NaN 0.142857 0.012829 0.094491 0.104828 0.055279 0.024500 0.094491 0.152017 ... 1.889822e-01 0.131095 0.114708 0.104828 0.083478 0.229566 0.094491 0.104828 0.040291 0.057639
60 0.057639 NaN 0.142857 0.012829 0.094491 0.104828 0.055279 0.024500 0.094491 0.152017 ... 1.889822e-01 0.131095 0.114708 0.104828 0.083478 0.229566 0.094491 0.104828 0.040291 0.057639
96 10 0.241121 0.317934 NaN 0.021467 0.252982 0.043853 0.196561 0.051245 0.252982 0.219686 ... 1.581139e-01 0.109682 0.260494 0.087706 0.034922 0.279372 0.110680 0.043853 0.134840 0.192897
20 0.144932 0.110613 NaN 0.066820 0.237595 0.160036 0.064535 0.127609 0.084856 0.158854 ... 1.697111e-01 0.023545 0.241339 0.160036 0.127442 0.041231 0.084856 0.122380 0.224332 0.320921
30 0.115278 0.104828 NaN 0.102632 0.188982 0.104828 0.055279 0.085749 0.018898 0.055279 ... 1.511858e-01 0.065547 0.065547 0.104828 0.208696 0.166957 0.018898 0.052414 0.080582 0.403473
40 0.076249 0.086672 NaN 0.373364 0.125000 0.069338 0.036564 0.129641 0.125000 0.036564 ... 5.000000e-02 0.043355 0.043355 0.069338 0.138039 0.110432 0.100000 0.138675 0.053300 0.266872
50 0.067363 0.026800 NaN 0.296115 0.110432 0.107199 0.004038 0.082319 0.110432 0.177662 ... 1.104315e-01 0.081393 0.081393 0.107199 0.176829 0.097561 0.138039 0.122513 0.047088 0.311552
60 0.057639 0.170346 NaN 0.205263 0.094491 0.104828 0.152017 0.024500 0.094491 0.152017 ... 2.491523e-17 0.131095 0.131095 0.104828 0.083478 0.083478 0.094491 0.104828 0.040291 0.057639
97 10 0.210925 0.132956 0.095050 NaN 0.078587 0.139495 0.271251 0.154858 0.062869 0.039078 ... 3.143473e-02 0.174447 0.070869 0.008718 0.305482 0.163155 0.062869 0.270271 0.147442 0.210925
20 0.160192 0.063731 0.173702 NaN 0.032827 0.118358 0.225649 0.091497 0.114893 0.098421 ... 3.282661e-02 0.190711 0.065468 0.118358 0.232006 0.094252 0.114893 0.118358 0.111979 0.160192
30 0.137460 0.189904 0.222761 NaN 0.086672 0.182692 0.093804 0.211241 0.069338 0.020282 ... 1.386750e-01 0.138283 0.003006 0.038462 0.199083 0.145484 0.069338 0.038462 0.096088 0.137460
40 0.107833 0.073544 0.133631 NaN 0.176777 0.130744 0.025854 0.068752 0.176777 0.025854 ... 1.178511e-01 0.061314 0.061314 0.032686 0.156174 0.234261 0.176777 0.032686 0.075378 0.107833
50 0.076249 0.086672 0.018898 NaN 0.325000 0.069338 0.127973 0.016205 0.125000 0.127973 ... 5.000000e-02 0.151744 0.043355 0.069338 0.110432 0.138039 0.125000 0.138675 0.053300 0.076249
60 0.067363 0.026800 0.020870 NaN 0.386510 0.107199 0.004038 0.078740 0.110432 0.185738 ... 5.521576e-02 0.134059 0.081393 0.122513 0.097561 0.176829 0.110432 0.122513 0.047088 0.067363
106 10 0.057639 0.222761 0.285714 0.179605 NaN 0.157243 0.055279 0.024500 0.094491 0.262575 ... 0.000000e+00 0.114708 0.114708 0.104828 0.083478 0.083478 0.094491 0.104828 0.040291 0.057639
20 0.057639 0.222761 0.285714 0.179605 NaN 0.157243 0.055279 0.024500 0.094491 0.262575 ... 0.000000e+00 0.114708 0.114708 0.104828 0.083478 0.083478 0.094491 0.104828 0.040291 0.057639
30 0.046512 0.338364 0.403473 0.144932 NaN 0.232625 0.128246 0.168045 0.076249 0.379161 ... 1.524986e-01 0.092563 0.092563 0.084591 0.067363 0.067363 0.076249 0.084591 0.032513 0.046512
40 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
50 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
60 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ...
19734 10 0.046512 0.137460 0.115278 0.144932 0.076249 0.084591 0.128246 0.276780 0.076249 0.122670 ... 7.624929e-02 0.204961 0.092563 0.084591 0.067363 NaN 0.266872 0.549841 0.032513 0.046512
20 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
30 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
40 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
50 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
60 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
19735 10 0.046512 0.100452 0.144098 0.087994 0.076249 0.232625 0.128246 0.168045 0.266872 0.128246 ... 7.624929e-02 0.092563 0.204961 0.549841 0.311552 0.067363 NaN 0.232625 0.032513 0.476744
20 0.046512 0.100452 0.144098 0.087994 0.076249 0.232625 0.128246 0.168045 0.266872 0.128246 ... 7.624929e-02 0.092563 0.204961 0.549841 0.311552 0.067363 NaN 0.232625 0.032513 0.476744
30 0.046512 0.100452 0.144098 0.087994 0.076249 0.232625 0.128246 0.168045 0.266872 0.128246 ... 7.624929e-02 0.092563 0.204961 0.549841 0.311552 0.067363 NaN 0.232625 0.032513 0.476744
40 0.046512 0.100452 0.144098 0.087994 0.076249 0.232625 0.128246 0.168045 0.266872 0.128246 ... 7.624929e-02 0.092563 0.204961 0.549841 0.311552 0.067363 NaN 0.232625 0.032513 0.476744
50 0.046512 0.100452 0.144098 0.087994 0.076249 0.232625 0.128246 0.168045 0.266872 0.128246 ... 7.624929e-02 0.092563 0.204961 0.549841 0.311552 0.067363 NaN 0.232625 0.032513 0.476744
60 0.032513 0.236525 0.080582 0.224332 0.053300 0.384353 0.265043 0.117468 0.053300 0.085749 ... 2.132007e-01 0.064704 0.064704 0.384353 0.482654 0.047088 NaN 0.059131 0.022727 0.699025
19743 10 0.032513 0.096088 0.282038 0.101311 0.053300 0.059131 0.085749 0.117468 0.426401 0.265043 ... 1.066004e-01 0.064704 0.351250 0.384353 0.047088 0.047088 0.426401 NaN 0.022727 0.032513
20 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
30 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
40 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
50 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
60 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
19745 10 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
20 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
30 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
40 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
50 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
60 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
19747 10 0.046512 0.100452 0.115278 0.087994 0.076249 0.232625 0.128246 0.054368 0.076249 0.122670 ... 7.624929e-02 0.092563 0.092563 0.232625 0.690467 0.067363 0.266872 0.084591 0.032513 NaN
20 0.032513 0.236525 0.080582 0.224332 0.053300 0.384353 0.265043 0.117468 0.053300 0.085749 ... 2.132007e-01 0.064704 0.064704 0.384353 0.482654 0.047088 0.426401 0.059131 0.022727 NaN
30 0.032513 0.236525 0.080582 0.224332 0.053300 0.384353 0.265043 0.117468 0.053300 0.085749 ... 2.132007e-01 0.064704 0.064704 0.384353 0.482654 0.047088 0.426401 0.059131 0.022727 NaN
40 0.032513 0.236525 0.080582 0.224332 0.053300 0.384353 0.265043 0.117468 0.053300 0.085749 ... 2.132007e-01 0.064704 0.064704 0.384353 0.482654 0.047088 0.426401 0.059131 0.022727 NaN
50 0.032513 0.236525 0.080582 0.224332 0.053300 0.384353 0.265043 0.117468 0.053300 0.085749 ... 2.132007e-01 0.064704 0.064704 0.384353 0.482654 0.047088 0.426401 0.059131 0.022727 NaN
60 0.032513 0.236525 0.080582 0.224332 0.053300 0.384353 0.265043 0.117468 0.053300 0.085749 ... 2.132007e-01 0.064704 0.064704 0.384353 0.482654 0.047088 0.426401 0.059131 0.022727 NaN

10476 rows × 1746 columns


In [ ]:
data_file = open('./pickles/data.pkl', 'rb')
df = pickle.load(data_file)

In [ ]:
lst = []
for i in trains:
    for j in trains:
        s = df.loc[i][j].sum()
        if s > 2:
            lst.append(str(i) + '-' + str(j))
lst

In [ ]:
df