Advertisement
Guest User

Untitled

a guest
May 26th, 2016
53
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.76 KB | None | 0 0
  1. from sklearn.svm import OneClassSVM
  2. import os
  3. import json
  4.  
  5. from funcy import pairwise, pluck
  6. from tkinter import *
  7.  
  8. os.system('xset r off')
  9.  
  10. c = OneClassSVM('poly', degree=2, nu=0.4)
  11. with open('params', 'r') as fp:
  12. features = json.loads(fp.read())
  13. c.fit(features)
  14.  
  15.  
  16. def normalize(timeline, passphrase):
  17. """Reorganize timeline to keep corresponding events nearly."""
  18. result = []
  19. timeline = timeline[:]
  20. for passchar in passphrase:
  21. cnt = 0
  22. for index, (timestamp, char) in enumerate(timeline[:]):
  23. if cnt == 2:
  24. break
  25. if char == passchar:
  26. timeline.pop(index) if not cnt else timeline.pop(index-1)
  27. cnt += 1
  28. result.append((timestamp, char))
  29.  
  30. return result
  31.  
  32.  
  33. def to_differences(timeline):
  34. return [t2-t1 for t1, t2 in pairwise(pluck(0, timeline))]
  35.  
  36. timeline = []
  37.  
  38.  
  39. def keypress(event):
  40. global num
  41. if event.keycode == 36:
  42. a = to_differences(normalize(timeline, 'близнецы'))
  43. if len(a) != len(features[0]):
  44. print('error')
  45. a = [0] * len(features[0])
  46. print(c.decision_function([a]))
  47. print(c.predict([a]))
  48. while timeline:
  49. timeline.pop()
  50.  
  51. timeline.append((event.time, event.char))
  52.  
  53.  
  54. def keyrelease(event):
  55. global num
  56. if event.keycode == 36:
  57. return
  58. timeline.append((event.time, event.char))
  59.  
  60.  
  61. def focus(event):
  62. frame.focus_set()
  63.  
  64. try:
  65. root = Tk()
  66. frame = Frame(root, width=100, height=100)
  67. frame.bind("<KeyPress>", keypress)
  68. frame.bind("<KeyRelease>", keyrelease)
  69. frame.bind("<Button-1>", focus)
  70. frame.pack()
  71.  
  72. root.mainloop()
  73. finally:
  74. os.system('xset r on')
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement