top of page

VALUE OF INFORMATION

The cost of training and prediction is great. Machine learning is expensive and time consuming. In order to maximize results while sacrificing the fewest resources submit '0' for each target. Then manipulate the F1 score to determine the number of 'false negatives' in the data set.

Process: Text
fscore.PNG

Calculating Fn if input is all zeros 

If fp=0 then p=1 and F1 = 2[1/(1+r)] therefore         (F1)/2 = [1/(1+ tp/(tp + fn))]

If tp=0 and F1 = 0.47015 then                  0.47015/2 = [tp/(tp/(fn))]

33515* 0.235075 = 7878.5                                 fn = 0.235075

Process: Text

Code Excerpt

import csv 
from datetime import datetime

with open('data_test.csv', "r") as srcfile:
    reader = csv.DictReader(srcfile)
    
    count = 0 
    entries = 0
    temp_traj = ''
    temp_target = ''
    hashes = []
    targets = []
    ids = []
    distancesort = []
    
    for row in reader: 
        if row['hash'] not in hashes:
            t1 = datetime.strptime(row['time_entry'], "%H:%M:%S")
            t2 = datetime.strptime(row['time_exit'], "%H:%M:%S")
            totalt = t1-t2 
            ids.append(row)
            hashes.append(row['hash'])
            targets.append(row['hash'], temp_distance)
            temp_traj = row['trajectory_id'] 
            count = count + 1
        
        else: 
            row_name, row_value = row['trajectory_id'].rsplit('_',1)
            temp_name, temp_value = temp_traj.rsplit('_', 1)
            if int(row_value) > int(temp_value):
                temp_traj = row['trajectory_id']
                temp_distance = abs(float(row['x_entry']) - 3760901.5068)) + abs(float(row['y_entry']) + 19238905.6133)): 
                    

    distancesort = sorted(targets, key=lambda x: x[1])
    for x in range (0,7879) 
        with open('results.csv', 'a', newline='') as outfile: 
            thewriter = csv.writer(outfile)
            thewriter.writerow([distancesort[x:,0], 1]) 
    for x in range (7879, len(distancesort))
    with open('results.csv', 'a', newline='') as outfile: 
            thewriter = csv.writer(outfile)
            thewriter.writerow([distancesort[x:,0], 0])  
                
print ('done')

Process: Text

RESULTS

Challenge ranking after choosing the 7878 closest targets. Score improved from 0.47015 to 0.52241

rank2.PNG
Process: Our Programs
bottom of page