Advertisement
Guest User

Untitled

a guest
Feb 19th, 2019
72
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.16 KB | None | 0 0
  1. p_t_given_y=p_t_given_y[:,np.random.permutation(card_y)]
  2. a=np.linspace(0,30,num=25)
  3. b=np.linspace(30,100,num=50)
  4. c=np.linspace(100,400,num=50)
  5. d=np.array([np.inf])
  6. beta=np.concatenate((a, b,c,d), axis=0)
  7. p=np.zeros(len(beta))
  8. I_t_and_y_new_list=[]
  9. for h in np.arange(0,len(beta)):
  10. while Js>Eps:
  11. KL=np.zeros([card_t,card_y])
  12. for runKL in np.arange(0, card_x):
  13. klp1 = np.matlib.repmat(np.log((p_x_given_t[runKL, :])), card_y, 1)
  14. klp2 = np.matlib.repmat(np.log(p_x_given_y[runKL, :]), card_t, 1)
  15. klp12 = klp2.T - klp1
  16. klp3 = np.matlib.repmat(p_x_given_y[runKL, :], card_t, 1)
  17. klp123 = klp3 * klp12.T
  18. KL = KL + klp123
  19. KL_div = KL
  20. if beta[h]==np.inf:
  21. p_t_given_yi =(np.argmin(KL,axis=0))
  22. a=np.zeros([card_y,card_t])
  23. a[np.arange(p_t_given_yi.size),p_t_given_yi]=1
  24. p_t_given_y_new=a.T
  25. else:
  26. exp_dkl=np.exp(-beta[h]*KL)
  27. p_t_given_y_new=(np.tile(p_t,(card_y,1))).T * exp_dkl
  28. z_x_and_beta=np.sum(p_t_given_y_new,axis=0)
  29. p_t_given_y_new = p_t_given_y_new/np.tile(z_x_and_beta,(card_t,
  30. p_t=np.sum(p_y[np.newaxis,:]*p_t_given_y_new,axis=1)
  31. p_t_and_y_new= p_t_given_y_new*p_y[np.newaxis,:]
  32. I_t_and_y_new=np.sum(p_t_and_y_new*np.nan_to_num(np.log2(p_t_and_y_new/(np.tile(np.tile(p_t,(1,32))*p_y,[card_t,1])))))
  33. I_t_and_y_new_list.append(I_t_and_y_new)
  34. p_t_given_y3d_new= np.tile(np.expand_dims(p_t_given_y_new,axis=2),[1,1,card_x])#turning 2d into 3d for calculation of p(x|t)
  35. p_x_and_y3d_new=np.tile(np.expand_dims(p_x_and_y,axis=2),[1,1,card_t])
  36. p_x_given_t=np.sum(np.transpose(p_t_given_y3d_new)*p_x_and_y3d,axis=1)/p_t
  37. pi=np.array([0.5,0.5])
  38. p_t_given_ybar=pi[0]*p_t_given_y_new+pi[1]*p_t_given_y
  39. dkl1=p_t_given_y_new*np.nan_to_num(np.log2(p_t_given_y_new/p_t_given_ybar))
  40. dkl2=p_t_given_y*np.nan_to_num(np.log2(p_t_given_y/p_t_given_ybar))
  41. Js=np.sum(pi[0]*dkl1+pi[1]*dkl2)
  42. #Js=np.sum(pi[0]*p_t_given_y_new*np.log2(p_t_given_y_new/(pi[0]*p_t_given_y_new+pi[1]*p_t_given_y)))+np.sum(pi[1]*np.sum(p_t_given_y*np.log2(p_t_given_y/(pi[0]*p_t_given_y_new+pi[1]*p_t_given_y))))
  43. p_t_given_y=p_t_given_y_new
  44. counter += 1
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement