Ejemplo n.º 1
0
 def angles_and_jumps(self):
     jumps = 0.0
     angles = []
     previousmax = distance(self._x[1], self._y[1], self._x[0], self._y[0])
     for i in xrange(1, len(self._x)):
         angles.append(self.getAngle(self._x[i], self._y[i], self._x[i-1], self._y[i-1]))
         current = distance(self._x[i], self._y[i], self._x[i-1], self._y[i-1])
         if current > previousmax:
             if current > 10 * previousmax:
                 jumps += 1
             previousmax = current
     return angles, jumps
Ejemplo n.º 2
0
 def angles_and_jumps(self):
     jumps = 0.0
     angles = []
     previousmax = distance(self.__xn[1], self.__yn[1], self.__xn[0], self.__yn[0])
     for i in xrange(1, len(self.__xn)):
         angles.append(self.getAngle(self.__xn[i], self.__yn[i], self.__xn[i-1], self.__yn[i-1]))
         current = distance(self.__xn[i], self.__yn[i], self.__xn[i-1], self.__yn[i-1])
         if current > previousmax:
             if current > 10 * previousmax:
                 jumps += 1
             previousmax = current
     return angles, jumps
Ejemplo n.º 3
0
    def __init__(self, filename):
        """Input: path and name of the file of a trace; how many filtering steps should be used for sliding window filtering"""
        self.__id = int(os.path.basename(filename).split(".")[0])
        x = []
        y = []
        with open(filename, "r") as trainfile:
            trainfile.readline()  # skip header
            for line in trainfile:
                items = line.split(",", 2)
                x.append(float(items[0]))
                y.append(float(items[1]))
        triplength = distance(x[0], y[0], x[-1], y[-1])
        self.triptime = len(x)
        xvar, yvar = bettervariance(x, y)
        overlaps = overlap(x, y)
        self.featurelist = []
        self.featurelist.append(triplength)
        self.featurelist.append(self.triptime)
        self.featurelist.append(xvar)
        self.featurelist.append(yvar)
        self.featurelist.append(overlaps)

        v, distancecovered = velocities_and_distance_covered(x, y)
        vfiltered = reject_outliers(v, 3)
        maxspeed = max(vfiltered)
        medianspeed = median(vfiltered)
        meanspeed, varspeed = meanstdv(vfiltered)
        angles, jumps = self.angles_and_jumps()
        anglespeed = [speed * angle for (speed, angle) in zip(v, angles)]
        anglespeedfiltered  = reject_outliers(anglespeed, 3)
        maxanglespeed = max(anglespeedfiltered)
        mediananglespeed = median(anglespeedfiltered)
        meananglespeed, varanglespeed = meanstdv(anglespeedfiltered)
        totalangle = sum(angles)
        maxangle = max(angles)
        minangle = min(angles)
        medianangle = max(angles)
        acc, dec, stills = getratio(vfiltered, medianspeed)
        if (acc + dec) == 0:
            accratio = 0.5
        else:
            accratio = acc / (acc + dec)
        self.featurelist.append(distancecovered)
        self.featurelist.append(maxspeed)
        self.featurelist.append(medianspeed)
        self.featurelist.append(meanspeed)
        self.featurelist.append(varspeed)
        self.featurelist.append(maxanglespeed)
        self.featurelist.append(mediananglespeed)
        self.featurelist.append(meananglespeed)
        self.featurelist.append(varanglespeed)
        self.featurelist.append(totalangle)
        self.featurelist.append(medianangle)
        self.featurelist.append(maxangle)
        self.featurelist.append(minangle)
        self.featurelist.append(jumps)
        self.featurelist.append(accratio)
        self.featurelist.append(acc)
        self.featurelist.append(dec)
        self.featurelist.append(stills)
Ejemplo n.º 4
0
    def __init__(self, filename, quantiles=[0.0, 0.25, 0.5, 0.75, 1.0]):
        """Input: path and name of the file of a trace; how many filtering steps should be used for sliding window filtering"""
        self.__id = int(os.path.basename(filename).split(".")[0])
        self._x = []
        self._y = []
        with open(filename, "r") as trainfile:
            trainfile.readline()  # skip header
            for line in trainfile:
                items = line.split(",", 2)
                self._x.append(float(items[0]))
                self._y.append(float(items[1]))
        self.rawfeaturelist = []
        self.rawfeaturelist.extend(self._x)
        self.rawfeaturelist.extend(self._y)
        triplength = distance(self._x[0], self._y[0], self._x[-1], self._y[-1])
        self.triptime = len(self._x)
        xvar, yvar = bettervariance(self._x, self._y)
        overlaps = overlap(self._x, self._y)
        self.featurelist = []
        self.featurelist.append(triplength)
        self.featurelist.append(self.triptime)
        self.featurelist.append(xvar)
        self.featurelist.append(yvar)
        self.featurelist.append(overlaps)

        v, distancecovered = velocities_and_distance_covered(self._x, self._y)
        vfiltered = reject_outliers(v, 3)
        self.rawfeaturelist.extend(vfiltered)
        speed_qs = mquantiles(vfiltered, prob=quantiles)
        angles, jumps = self.angles_and_jumps()
        self.rawfeaturelist.extend(angles)
        anglespeed = [speed * angle for (speed, angle) in zip(v, angles)]
        anglespeedfiltered = reject_outliers(anglespeed, 3)
        anglespeed_qs = mquantiles(anglespeedfiltered, prob=quantiles)
        totalangle = sum(angles)
        angle_qs = mquantiles(angles, prob=quantiles)
        acc, dec, stills = getratio(vfiltered, anglespeed_qs[2])

        self.featurelist.append(distancecovered)
        self.featurelist.extend(speed_qs)
        self.featurelist.extend(anglespeed_qs)
        self.featurelist.append(totalangle)
        self.featurelist.extend(angle_qs)
        self.featurelist.append(acc)
        self.featurelist.append(dec)
        self.featurelist.append(stills)
Ejemplo n.º 5
0
    def __init__(self, filename, quantiles=[0.0, 0.25, 0.5, 0.75, 1.0]):
        """Input: path and name of the file of a trace; how many filtering steps should be used for sliding window filtering"""
        self.__id = int(os.path.basename(filename).split(".")[0])
        self._x = []
        self._y = []
        with open(filename, "r") as trainfile:
            trainfile.readline()  # skip header
            for line in trainfile:
                items = line.split(",", 2)
                self._x.append(float(items[0]))
                self._y.append(float(items[1]))
        self.rawfeaturelist = []
        self.rawfeaturelist.extend(self._x)
        self.rawfeaturelist.extend(self._y)
        triplength = distance(self._x[0], self._y[0], self._x[-1], self._y[-1])
        self.triptime = len(self._x)
        xvar, yvar = bettervariance(self._x, self._y)
        overlaps = overlap(self._x, self._y)
        self.featurelist = []
        self.featurelist.append(triplength)
        self.featurelist.append(self.triptime)
        self.featurelist.append(xvar)
        self.featurelist.append(yvar)
        self.featurelist.append(overlaps)

        v, distancecovered = velocities_and_distance_covered(self._x, self._y)
        vfiltered = reject_outliers(v, 3)
        self.rawfeaturelist.extend(vfiltered)
        speed_qs = mquantiles(vfiltered, prob=quantiles)
        angles, jumps = self.angles_and_jumps()
        self.rawfeaturelist.extend(angles)
        anglespeed = [speed * angle for (speed, angle) in zip(v, angles)]
        anglespeedfiltered = reject_outliers(anglespeed, 3)
        anglespeed_qs = mquantiles(anglespeedfiltered, prob=quantiles)
        totalangle = sum(angles)
        angle_qs = mquantiles(angles, prob=quantiles)
        acc, dec, stills = getratio(vfiltered, anglespeed_qs[2])

        self.featurelist.append(distancecovered)
        self.featurelist.extend(speed_qs)
        self.featurelist.extend(anglespeed_qs)
        self.featurelist.append(totalangle)
        self.featurelist.extend(angle_qs)
        self.featurelist.append(acc)
        self.featurelist.append(dec)
        self.featurelist.append(stills)