Advertisement
Guest User

Untitled

a guest
Mar 29th, 2017
66
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 6.30 KB | None | 0 0
  1. import pymc
  2. import numpy as np
  3. import pandas as pd
  4.  
  5.  
  6. zabiłA = pymc.Bernoulli('zabiłA', .33, value=np.ones(1))
  7.  
  8. zabiłB = pymc.Bernoulli('zabiłB', .33, value=np.ones(1))
  9.  
  10. zabiłC = pymc.Bernoulli('zabiłC', .33, value=np.ones(1))
  11.  
  12.  
  13.  
  14. p_odciskiA = pymc.Lambda('p_odciskiA', lambda zabiłA=zabiłA, : np.where(zabiłA, .7, .5))
  15. odciskiA = pymc.Bernoulli('odciskiA', p_odciskiA, value=np.ones(1))
  16.  
  17. p_niealibiA = pymc.Lambda('p_niealibiA', lambda zabiłA=zabiłA: np.where(zabiłA, .9, .5))
  18. niealibiA = pymc.Bernoulli('niealibiA', p_niealibiA, value=np.ones(1))
  19.  
  20. p_motywA = pymc.Lambda('p_motywA', lambda zabiłA=zabiłA: np.where(zabiłA, .6, .5))
  21. motywA = pymc.Bernoulli('motywA', p_motywA, value=np.ones(1))
  22.  
  23. p_złyrysopisA = pymc.Lambda('p_złyrysopisA', lambda zabiłA=zabiłA: np.where(zabiłA, .2,.5))
  24. złyrysopisA = pymc.Bernoulli('złyrysopisA', p_złyrysopisA, value=np.ones(1))
  25.  
  26. p_szanowanyA = pymc.Lambda('p_szanowanyA', lambda zabiłA=zabiłA: np.where(zabiłA, .3, .5))
  27. szanowanyA = pymc.Bernoulli('szanowanyA', p_szanowanyA, value=np.ones(1))
  28.  
  29.  
  30.  
  31.  
  32. p_odciskiB = pymc.Lambda('p_odciskiB', lambda zabiłB=zabiłB, : np.where(zabiłB, .7, .5))
  33. odciskiB = pymc.Bernoulli('odciskiB', p_odciskiB, value=np.ones(1))
  34.  
  35. p_niealibiB = pymc.Lambda('p_niealibiB', lambda zabiłB=zabiłB: np.where(zabiłB, .9, .5))
  36. niealibiB = pymc.Bernoulli('niealibiB', p_niealibiB, value=np.ones(1))
  37.  
  38. p_motywB = pymc.Lambda('p_motywB', lambda zabiłB=zabiłB: np.where(zabiłB, .6, .5))
  39. motywB = pymc.Bernoulli('motywB', p_motywB, value=np.ones(1))
  40.  
  41. p_złyrysopisB = pymc.Lambda('p_złyrysopisB', lambda zabiłB=zabiłB: np.where(zabiłB, .2, .5))
  42. złyrysopisB = pymc.Bernoulli('złyrysopisB', p_złyrysopisB, value=np.ones(1))
  43.  
  44. p_szanowanyB = pymc.Lambda('p_szanowanyB', lambda zabiłB=zabiłB: np.where(zabiłB, .3, .5))
  45. szanowanyB = pymc.Bernoulli('szanowanyB', p_szanowanyB, value=np.ones(1))
  46.  
  47.  
  48.  
  49.  
  50.  
  51. p_odciskiC = pymc.Lambda('p_odciskiC', lambda zabiłC=zabiłC, : np.where(zabiłC, .7, .5))
  52. odciskiC = pymc.Bernoulli('odciskiC', p_odciskiC, value=np.ones(1))
  53.  
  54. p_niealibiC = pymc.Lambda('p_niealibiC', lambda zabiłC=zabiłC: np.where(zabiłC, .9, .5))
  55. niealibiC = pymc.Bernoulli('niealibiC', p_niealibiC, value=np.ones(1))
  56.  
  57. p_motywC = pymc.Lambda('p_motywC', lambda zabiłC=zabiłC: np.where(zabiłC, .6, .5))
  58. motywC = pymc.Bernoulli('motywC', p_motywC, value=np.ones(1))
  59.  
  60. p_złyrysopisC = pymc.Lambda('p_złyrysopisC', lambda zabiłC=zabiłC: np.where(zabiłC, .2, .5))
  61. złyrysopisC = pymc.Bernoulli('złyrysopisC', p_złyrysopisC, value=np.ones(1))
  62.  
  63. p_szanowanyC = pymc.Lambda('p_szanowanyC', lambda zabiłC=zabiłC: np.where(zabiłC, .3, .5))
  64. szanowanyC = pymc.Bernoulli('szanowanyC', p_szanowanyC, value=np.ones(1))
  65.  
  66.  
  67.  
  68. # model
  69. model = pymc.Model([p_odciskiA, odciskiA, p_niealibiA, niealibiA, p_motywA, motywA, p_złyrysopisA, szanowanyA, p_szanowanyA, złyrysopisA, p_odciskiB, odciskiB, p_niealibiB, niealibiB, p_motywB, motywB, p_złyrysopisB, szanowanyB, p_szanowanyB, złyrysopisB, p_odciskiC, odciskiC, p_niealibiC, niealibiC, p_motywC, motywC, p_złyrysopisC, szanowanyC, p_szanowanyC, złyrysopisC, zabiłA, zabiłB, zabiłC])
  70.  
  71. mcmc = pymc.MCMC(model)
  72. mcmc.sample(10000,2000)
  73.  
  74. # wyciągnięcie scieżek dla każdej ze zmiennych
  75. t_zabiłA = mcmc.trace('zabiłA')[:]
  76. t_zabiłB = mcmc.trace('zabiłB')[:]
  77. t_zabiłC = mcmc.trace('zabiłC')[:]
  78. t_odciskiA = mcmc.trace('odciskiA')[:]
  79. t_niealibiA = mcmc.trace('niealibiA')[:]
  80. t_motywA = mcmc.trace('motywA')[:]
  81. t_złyrysopisA = mcmc.trace('złyrysopisA')[:]
  82. t_szanowanyA = mcmc.trace('szanowanyA')[:]
  83. t_odciskiB = mcmc.trace('odciskiB')[:]
  84. t_niealibiB = mcmc.trace('niealibiB')[:]
  85. t_motywB = mcmc.trace('motywB')[:]
  86. t_złyrysopisB = mcmc.trace('złyrysopisB')[:]
  87. t_szanowanyB = mcmc.trace('szanowanyB')[:]
  88. t_odciskiC = mcmc.trace('odciskiC')[:]
  89. t_niealibiC = mcmc.trace('niealibiC')[:]
  90. t_motywC = mcmc.trace('motywC')[:]
  91. t_złyrysopisC = mcmc.trace('złyrysopisC')[:]
  92. t_szanowanyC = mcmc.trace('szanowanyC')[:]
  93.  
  94. # stworzenie słownika, zamieniamy wartości logiczne True/False na 1/0
  95. dictionary = {
  96. 'zabiłA': [1 if ii[0] else 0 for ii in t_zabiłA.tolist() ],
  97. 'zabiłB': [1 if ii[0] else 0 for ii in t_zabiłB.tolist() ],
  98. 'zabiłC': [1 if ii[0] else 0 for ii in t_zabiłC.tolist() ],
  99. 'odciskiA': [1 if ii[0] else 0 for ii in t_odciskiA.tolist() ],
  100. 'niealibiA': [1 if ii[0] else 0 for ii in t_niealibiA.tolist()],
  101. 'motywA': [1 if ii[0] else 0 for ii in t_motywA.tolist()],
  102. 'złyrysopisA': [1 if ii[0] else 0 for ii in t_złyrysopisA.tolist()],
  103. 'szanowanyA': [1 if ii[0] else 0 for ii in t_szanowanyA.tolist()],
  104. 'odciskiB': [1 if ii[0] else 0 for ii in t_odciskiB.tolist() ],
  105. 'niealibiB': [1 if ii[0] else 0 for ii in t_niealibiB.tolist()],
  106. 'motywB': [1 if ii[0] else 0 for ii in t_motywB.tolist()],
  107. 'złyrysopisB': [1 if ii[0] else 0 for ii in t_złyrysopisB.tolist()],
  108. 'szanowanyB': [1 if ii[0] else 0 for ii in t_szanowanyB.tolist()],
  109. 'odciskiC': [1 if ii[0] else 0 for ii in t_odciskiC.tolist() ],
  110. 'niealibiC': [1 if ii[0] else 0 for ii in t_niealibiC.tolist()],
  111. 'motywC': [1 if ii[0] else 0 for ii in t_motywC.tolist()],
  112. 'złyrysopisC': [1 if ii[0] else 0 for ii in t_złyrysopisC.tolist()],
  113. 'szanowanyC': [1 if ii[0] else 0 for ii in t_szanowanyC.tolist()],
  114. }
  115. # stworzenie obiektu DataFrame
  116. df = pd.DataFrame(dictionary)
  117. # podgląd tabeli (pierwsze 5 wierszy)
  118. print(df.head())
  119.  
  120. #gdyby znaleziono na miejscu zbrodni jego odciski palców 0.702228
  121. pA = float(df[(df['zabiłA'] == 1) & (df['szanowanyA'] == 1) & (df['niealibiA'] == 1)].shape[0])/ df[(df['szanowanyA'] == 1) & (df['niealibiA'] == 1) ].shape[0]
  122. print('p_zabiłA:', pA)
  123.  
  124. pB = float(df[(df['zabiłB'] == 1) & (df['złyrysopisB'] == 1) & (df['niealibiB'] == 1)].shape[0])/ df[(df['złyrysopisB'] == 1) & (df['niealibiB'] == 1) ].shape[0]
  125. print('p_zabiłB:', pB)
  126.  
  127. pC = float(df[(df['zabiłC'] == 1) & (df['złyrysopisC'] == 1) & (df['motywC'] == 1)].shape[0])/ df[(df['złyrysopisC'] == 1) & (df['motywC'] == 1) ].shape[0]
  128. print('p_zabiłC:', pC)
  129.  
  130. A = pA/(pA+pB+pC)
  131. B = pB/(pA+pB+pC)
  132. C = pC/(pA+pB+pC)
  133.  
  134. print(A)
  135. print(B)
  136. print(C)
  137.  
  138. print(A+B+C)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement