cosine.py 613 B

12345678910111213141516171819
  1. def cosine_sim(known_point, new_point):
  2. from math import sqrt
  3. up, d1, d2 = 0.0, 0.0, 0.0
  4. a, b = known_point, new_point
  5. for key in a.wifi_snr:
  6. d1 += a.wifi_snr[key] * a.wifi_snr[key]
  7. if key in b.wifi_snr:
  8. up += a.wifi_snr[key] * b.wifi_snr[key]
  9. for key in b.wifi_snr:
  10. d2 += b.wifi_snr[key] * b.wifi_snr[key]
  11. if up == 0:
  12. return None
  13. else:
  14. return up / sqrt(d1) / sqrt(d2)
  15. if __name__ == '__main__':
  16. from wifiloc import toplev
  17. toplev(infile = "basicdata.csv", sim = cosine_sim, bad_wifi_crit = 5000,
  18. sim_crit = 0.0)