• API
• FAQ
• Tools
• Archive
SHARE
TWEET # Untitled a guest Oct 18th, 2019 89 Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
1. import numpy as np
2.
3. def rowaddmult(A, i, j, c):
4.     A[j] += A[i] * c
5.     return A
6.
7. def backsub(U,v):
8.     Copy = U.copy()
9.     rows,cols = Copy.shape
10.     ret = np.ones((rows))
11.     for i in range(rows-1,-1,-1):
12.         x = (v[i] - U[i,i+1:rows]@ret[i+1:rows]) / U[i,i]
13.         ret[i] = x
14.     return ret
15.
16. def rowred(A):
17.     Copy = A.copy()
18.     rows,cols = Copy.shape
19.     for a in range(rows):
20.         for b in range(rows):
21.             if (b > a and Copy[a,a] != 0.0):
22.                 Copy = rowaddmult(Copy, a, b, (-1)*Copy[b,a]/Copy[a,a])
23.                 #print(Copy)
24.     return Copy
25.
26. def solve(Aug):
27.     Ud = rowred(Aug)
28.     rows, cols = Ud.shape
29.     return backsub(Ud[:,0:rows], Ud[:,rows])
30.
31.
32.
33. A = np.zeros((200, 3))
34. A[0:100,0] = (np.random.rand(100) * 5) + 5
35. A[0:100,1] = (np.random.rand(100) * 5) + 5
36. A[100:,0] = (np.random.rand(100) * 4) + 8
37. A[100:,1] = (np.random.rand(100) * 4) + 4
38. A[:,2] = np.ones(200)
39.
40. v = np.ones(200)
41. v[100:] = -1
42. #v = np.zeros(200)
43.
44. M = np.ones((3,4))
45. M[:, 0:3] = A.T@A
46. M[:, 3] = A.T@v
47. x = solve(M)
48.
49. def determinefalses(A, x):
50.     #"Is this point in the cluster on the top left?'
51.     #The probability of getting a false positive (point is on top left when correct is point is on bottom right.);
52.     #aka
53.     #The probability of getting a false negative (that is, a 'no' answer when the correct answer is 'yes'.).
54.     false_pos = []
55.     false_neg = []
56.
57.     for i in range(0, 100):
58.         fxy = (x * A[i,0]) + (x * A[i,1]) + x
59.         if fxy < 0:#double check this!
60.             false_pos.append((A[i,0], A[i,1]))
61.
62.     for i in range(100, 200):
63.         fxy = (x * A[i,0]) + (x * A[i,1]) + x
64.         if fxy > 0:#double check this!
65.             false_neg.append((A[i,0], A[i,1]))
66.
67.     return [len(false_pos) / 100, len(false_neg) / 100]
68.
69. falses = determinefalses(A, x)
70.
71. print(f'Probability of False Positive: {falses}\nProbability of False Negative: {falses}')
72.
73.
74.
75. %matplotlib inline
76. import matplotlib.pyplot as plt
77. x1 = np.linspace(5,12,1000) # 1000 linearly spaced numbers - read up on the np.linspace() command!
78. y1 = -xhat*x1/xhat - xhat/xhat
79. plt.plot(x1, y1, 'b')
80.
81. plt.scatter(A[0:100,0],A[0:100,1],c='b')
82. plt.scatter(A[100:,0],A[100:,1],c='r')
RAW Paste Data
We use cookies for various purposes including analytics. By continuing to use Pastebin, you agree to our use of cookies as described in the Cookies Policy.
Not a member of Pastebin yet?