Advertisement
Guest User

Untitled

a guest
Dec 14th, 2019
119
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 3.24 KB | None | 0 0
  1. import linear
  2. import numpy
  3. import math
  4. import lpputils
  5. import datetime
  6.  
  7. def MAE(data, prediction):
  8.     return numpy.mean([abs(a - b) for a,b in zip(data, prediction)])
  9.  
  10. class Naloga3:
  11.     def __init__(self):
  12.         self.departureData = []
  13.         self.arrivalData = []
  14.  
  15.         self.departureData2 = []
  16.  
  17.     def ucniPodatki(self):
  18.         with open("../ucni_podatki/train_pred.csv") as f:
  19.             f.readline()
  20.  
  21.             for line in f:
  22.                 row = line.strip().split("\t")
  23.                 departureTime = lpputils.parsedate(row[6])
  24.                 arrivalTime = lpputils.parsedate(row[8])
  25.  
  26.                 # znacilka za vikend
  27.                 vikend = 1
  28.                 ura = 1
  29.                 if departureTime.weekday() < 5: vikend = 1000000
  30.                 if departureTime.hour < 17 and departureTime.hour > 8: ura = departureTime.hour*100000000000
  31.                 #if departureTime.weekday() == 6: vikend = 0
  32.  
  33.                 #ura = departureTime.hour * 3600 + departureTime.minute * 60 + departureTime.second
  34.  
  35.                 self.departureData.append([departureTime.timestamp(), vikend, ura])
  36.                 self.arrivalData.append(arrivalTime.timestamp())
  37.  
  38.  
  39.     def izracunPrihodov(self):
  40.         with open("../ucni_podatki/test_pred.csv") as f:
  41.             f.readline()
  42.             for line in f:
  43.                 row = line.strip().split("\t")
  44.                 departureTime = lpputils.parsedate(row[6])
  45.  
  46.                 # znacilka za vikend
  47.                 vikend = 1
  48.                 ura = 1
  49.                 if departureTime.weekday() < 5: vikend = 1000000
  50.                 elif departureTime.weekday() == 6: vikend = 500000000
  51.  
  52.  
  53.                 #print(departureTime, departureTime.weekday(), vikend)
  54.                 #if departureTime.weekday() == 6: vikend = 0
  55.                 if departureTime.hour < 17 and departureTime.hour > 8: ura = departureTime.hour*100000000000
  56.                 #ura = departureTime.hour*3600 + departureTime.minute*60 + departureTime.second
  57.                 #print(ura)
  58.                 self.departureData2.append([departureTime.timestamp(), vikend, ura])
  59.  
  60.  
  61.         x = numpy.array(self.departureData)
  62.         y = numpy.array(self.arrivalData)
  63.         #print(self.departureData)
  64.         #print(x)
  65.         #print(y)
  66.         lr = linear.LinearLearner(lambda_=1.)
  67.         napovednik = lr(x, y)
  68.  
  69.         #print("Koeficienti", napovednik.th)  # prvi je konstanten faktor
  70.         napovedi = numpy.array(self.departureData2)
  71.         #print(napovedi)
  72.         #napovedanDatum = napovednik(napovedi[1])
  73.         #napovedanDatum = datetime.datetime.fromtimestamp(napovedanDatum)
  74.  
  75.         f = open('napovedi_pred.txt', 'w')
  76.         nap = []
  77.         for napoved in napovedi:
  78.             print(napoved)
  79.             napoved = napovednik(napoved)
  80.             napoved = datetime.datetime.fromtimestamp(napoved)
  81.             #print(napoved)
  82.             f.write(str(napoved) + "\n")
  83.  
  84.         for napoved in self.departureData:
  85.             napoved = napovednik(napoved)
  86.             nap.append(float(str(napoved)))
  87.  
  88.         #print(nap)
  89.         print("MAE ", MAE(self.arrivalData, nap))
  90.     def run(self):
  91.         self.ucniPodatki()
  92.         self.izracunPrihodov()
  93.  
  94.  
  95. naloga3 = Naloga3()
  96. naloga3.run()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement