Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import linear
- import numpy
- import math
- import lpputils
- import datetime
- def MAE(data, prediction):
- return numpy.mean([abs(a - b) for a,b in zip(data, prediction)])
- class Naloga3:
- def __init__(self):
- self.departureData = []
- self.arrivalData = []
- self.departureData2 = []
- def ucniPodatki(self):
- with open("../ucni_podatki/train_pred.csv") as f:
- f.readline()
- for line in f:
- row = line.strip().split("\t")
- departureTime = lpputils.parsedate(row[6])
- arrivalTime = lpputils.parsedate(row[8])
- # znacilka za vikend
- vikend = 1
- ura = 1
- if departureTime.weekday() < 5: vikend = 1000000
- if departureTime.hour < 17 and departureTime.hour > 8: ura = departureTime.hour*100000000000
- #if departureTime.weekday() == 6: vikend = 0
- #ura = departureTime.hour * 3600 + departureTime.minute * 60 + departureTime.second
- self.departureData.append([departureTime.timestamp(), vikend, ura])
- self.arrivalData.append(arrivalTime.timestamp())
- def izracunPrihodov(self):
- with open("../ucni_podatki/test_pred.csv") as f:
- f.readline()
- for line in f:
- row = line.strip().split("\t")
- departureTime = lpputils.parsedate(row[6])
- # znacilka za vikend
- vikend = 1
- ura = 1
- if departureTime.weekday() < 5: vikend = 1000000
- elif departureTime.weekday() == 6: vikend = 500000000
- #print(departureTime, departureTime.weekday(), vikend)
- #if departureTime.weekday() == 6: vikend = 0
- if departureTime.hour < 17 and departureTime.hour > 8: ura = departureTime.hour*100000000000
- #ura = departureTime.hour*3600 + departureTime.minute*60 + departureTime.second
- #print(ura)
- self.departureData2.append([departureTime.timestamp(), vikend, ura])
- x = numpy.array(self.departureData)
- y = numpy.array(self.arrivalData)
- #print(self.departureData)
- #print(x)
- #print(y)
- lr = linear.LinearLearner(lambda_=1.)
- napovednik = lr(x, y)
- #print("Koeficienti", napovednik.th) # prvi je konstanten faktor
- napovedi = numpy.array(self.departureData2)
- #print(napovedi)
- #napovedanDatum = napovednik(napovedi[1])
- #napovedanDatum = datetime.datetime.fromtimestamp(napovedanDatum)
- f = open('napovedi_pred.txt', 'w')
- nap = []
- for napoved in napovedi:
- print(napoved)
- napoved = napovednik(napoved)
- napoved = datetime.datetime.fromtimestamp(napoved)
- #print(napoved)
- f.write(str(napoved) + "\n")
- for napoved in self.departureData:
- napoved = napovednik(napoved)
- nap.append(float(str(napoved)))
- #print(nap)
- print("MAE ", MAE(self.arrivalData, nap))
- def run(self):
- self.ucniPodatki()
- self.izracunPrihodov()
- naloga3 = Naloga3()
- naloga3.run()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement