MCPcopy Create free account
hub / github.com/lazyprogrammer/machine_learning_examples / DBI2

Function DBI2

unsupervised_class/kmeans_mnist.py:70–100  ·  view source on GitHub ↗
(X, R)

Source from the content-addressed store, hash-verified

68
69# hard labels
70def DBI2(X, R):
71 N, D = X.shape
72 _, K = R.shape
73
74 # get sigmas, means first
75 sigma = np.zeros(K)
76 M = np.zeros((K, D))
77 assignments = np.argmax(R, axis=1)
78 for k in range(K):
79 Xk = X[assignments == k]
80 M[k] = Xk.mean(axis=0)
81 # assert(Xk.mean(axis=0).shape == (D,))
82 n = len(Xk)
83 diffs = Xk - M[k]
84 sq_diffs = diffs * diffs
85 sigma[k] = np.sqrt( sq_diffs.sum() / n )
86
87
88 # calculate Davies-Bouldin Index
89 dbi = 0
90 for k in range(K):
91 max_ratio = 0
92 for j in range(K):
93 if k != j:
94 numerator = sigma[k] + sigma[j]
95 denominator = np.linalg.norm(M[k] - M[j])
96 ratio = numerator / denominator
97 if ratio > max_ratio:
98 max_ratio = ratio
99 dbi += max_ratio
100 return dbi / K
101
102
103

Callers 1

mainFunction · 0.85

Calls

no outgoing calls

Tested by

no test coverage detected