def calculate_variance(X, Xs): kernel = RBF() kernel.__init__() sigma = 0.01 ks = kernel.diag(Xs) Kt = kernel.__call__(X, X) + sigma**2 if is_invertible(Kt): Kt = inv(Kt) else: Kt = pinv(Kt) K = kernel.__call__(Xs, X) Ktt = np.matmul(K, Kt) Ktt = np.matmul(Ktt, K.transpose()) Ktt = Ktt.diagonal() var = ks - Ktt.transpose() return var
def costfun_rbf(x): rbf = RBF() res = np.dot(np.dot( np.transpose(x), rbf.__call__(S, S)), x) - 2 * np.dot( np.transpose(x), rbf.__call__(S, b)) + rbf.__call__(b, b) return res[0][0]
# Anisotropicly distributed data random_state = 170 X, y = datasets.make_blobs(n_samples=n_samples, random_state=random_state) transformation = [[0.6, -0.6], [-0.4, 0.8]] X_aniso = np.dot(X, transformation) aniso = (X_aniso, y) # print aniso for datatuple in [aniso]: r = 1 if r == 1: run_kmeans_and_plot(datatuple, 'kernel kmeans') elif r == 2: run_kmeans_and_plot(datatuple, 'kmeans') else: # print 'test' x = np.asarray(datatuple[0]) kernel = 'rbf' if kernel == 'linear': kernel_product = pairwisekernel.linear_kernel(x, x) # print kernel_product.shape elif kernel == 'quadratic': kernel_product = pairwisekernel.polynomial_kernel(x, x, degree=2) elif kernel == 'rbf': # print 'test' rbf_kernel = RBF() print rbf_kernel.hyperparameters kernel_product = rbf_kernel.__call__(x, x) print kernel_product.shape
def get_Relative_Average_similarity(X, AverageSimilarity): X_rand = X[np.random.randint(1, len(X), size=5000 )] rbf = RBF(1) M = rbf.__call__(X_rand, X) A_temp = 1/AverageSimilarity return np.mean(M*A_temp , axis=0)
def get_Average_similarity(X): X_rand = X[np.random.randint(1, len(X), size=5000 )] rbf = RBF(1) M = rbf.__call__(X, X_rand) AverageSimilarity = np.mean(M, axis=1) return AverageSimilarity