Advertisement
Guest User

Untitled

a guest
Dec 10th, 2016
71
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.78 KB | None | 0 0
  1. import numpy as np
  2. import matplotlib.pyplot as plt
  3. from __future__ import division
  4. import pandas as pd
  5. from math import exp
  6.  
  7. w, h = 6, 4
  8. data = [[0 for x in range(w)] for y in range(h)]
  9.  
  10. A = 0
  11. B = 0
  12. values = []
  13. z = []
  14. a0_list = [0.33, 0.5, 0.66, 0.75]
  15. sigma0 = 1
  16. sigma1 = 1
  17. m0_list = [2, 3, 4, 5]
  18. m1_list = [-2, -3, -4, -5]
  19. N = 150
  20. n0 = 0
  21. n1 = 0
  22. q1 = []
  23.  
  24. for j in range(4):
  25.  
  26. a0 = a0_list[j]
  27. m0 = m0_list[j]
  28. m1 = m1_list[j]
  29. n0 = 0
  30. n1 = 0
  31. m0_curr = m0
  32. m1_curr = m1
  33. for t in range(200):
  34. n1 = 0
  35. n0 = 0
  36. q1 = []
  37. values = []
  38. for i in range(N):
  39. # generating values[i] and q1[i]
  40. alpha = np.random.uniform(0, 1, 1)[0]
  41. if (alpha < a0):
  42. values.append(np.random.normal(m0, sigma0, 1)[0])
  43. else:
  44. values.append(np.random.normal(m1, sigma1, 1)[0])
  45. q1.append(exp(-(values[i] - m1_curr)*(values[i] - m1_curr) / 2) / (exp(-(values[i] - m0_curr) * (values[i] - m0_curr) / 2) + exp(-(values[i] - m1_curr) * (values[i] - m1_curr) / 2)))
  46. n1 = n1 + q1[i]
  47.  
  48. n0 = N - n1
  49. m0_curr = 0
  50. m1_curr = 0
  51. for f in range(N):
  52. m0_curr = m0_curr + values[f] * (1 - q1[f])
  53. m1_curr = m1_curr + values[f] * q1[f]
  54.  
  55. m0_curr = m0_curr / n0
  56. m1_curr = m1_curr / n1
  57.  
  58. m0_hat = m0_curr
  59. m1_hat = m1_curr
  60.  
  61. data[j][0] = a0
  62. data[j][1] = m0
  63. data[j][2] = m1
  64.  
  65. data[j][3] = round(n0 / N, 3)
  66. data[j][4] = round(m0_hat, 3)
  67. data[j][5] = round(m1_hat, 3)
  68.  
  69.  
  70. df = pd.DataFrame(data = data)
  71. df.columns = ['p_real', 'm0_real', 'm1_real', 'p_estimated', 'm0_estimated', 'm1_estimated']
  72. df.head()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement