Vector.py 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. #!/usr/bin/python3
  2. try:
  3. import cPickle as pickle
  4. except ImportError:
  5. import pickle
  6. import os
  7. import sys
  8. import typing
  9. from typing import List
  10. sys.path.insert(0, os.path.dirname(os.path.realpath(__file__)) + \
  11. '/../src/feature-extractor')
  12. import sample
  13. class FeatureVector:
  14. def __init__(self, s: sample, features = None):
  15. self.activefeatures = []
  16. # list of key, value tuples represnting values for features.
  17. self.sampleInfo = s
  18. if isinstance(s, sample.Sample):
  19. self.classification = s.user
  20. else:
  21. self.classification = "DUMMY DATA - DO NOT USE"
  22. if features is not None:
  23. self.set_features(features)
  24. # set which features are active using a binary list
  25. # ~~ex: For 2nd, 4th and 5th features to be active, pass [0,1,0,1,1]~~
  26. # ex: ["total_time", "average_iat", "dead_time"]
  27. def set_features(self, features: typing.List[str]):
  28. self.activefeatures = [self.sampleInfo[feature] for feature in features]
  29. return self
  30. def get(self):
  31. return self.activefeatures
  32. def __repr__(self):
  33. return str(self.activefeatures)
  34. def main():
  35. # fv = FeatureVector()
  36. # writePickledData("test.bin")
  37. # readPickledData("test.txt")
  38. # s = sample.Sample([{"delta": 0, "time": '09/19/18 13:55:26', }], open("./results.txt"))
  39. # s.dead_time = 30
  40. # s.average_iat = 3
  41. # s.total_time = 30
  42. s = {"dead_time": 30, "average_iat": 3, "total_time": 30}
  43. fv = FeatureVector(s)
  44. fv.set_features(["total_time", "average_iat", "dead_time"])
  45. print(fv)
  46. if __name__ == '__main__':
  47. main()