Python sklearn.metrics.pairwise.pairwise_kernels() Examples
The following are 25
code examples of sklearn.metrics.pairwise.pairwise_kernels().
You can vote up the ones you like or vote down the ones you don't like,
and go to the original project or source file by following the links above each example.
You may also want to check out all available functions/classes of the module
sklearn.metrics.pairwise
, or try the search function
.
Example #1
Source File: core.py From Summarizer with Apache License 2.0 | 6 votes |
def _intertext_score(full_text): '''returns tuple of scored sentences in order of appearance Note: Doing an A/B test to compare results, reverting to original algorithm.''' sentences = sentence_tokenizer(full_text) norm = _normalize(sentences) similarity_matrix = pairwise_kernels(norm, metric='cosine') scores = _textrank(similarity_matrix) scored_sentences = [] for i, s in enumerate(sentences): scored_sentences.append((scores[i],i,s)) top_scorers = sorted(scored_sentences, key=lambda tup: tup[0], reverse=True) return top_scorers
Example #2
Source File: localsimilaritykernel.py From dscribe with Apache License 2.0 | 6 votes |
def get_pairwise_matrix(self, X, Y=None): """Calculates the pairwise similarity of atomic environments with scikit-learn, and the pairwise metric configured in the constructor. Args: X(np.ndarray): Feature vector for the atoms in structure A Y(np.ndarray): Feature vector for the atoms in structure B Returns: np.ndarray: NxM matrix of local similarities between structures A and B, with N and M atoms respectively. """ if callable(self.metric): params = self.kernel_params or {} else: params = {"gamma": self.gamma, "degree": self.degree, "coef0": self.coef0} return pairwise_kernels(X, Y, metric=self.metric, filter_params=True, **params)
Example #3
Source File: test_pairwise.py From Mastering-Elasticsearch-7.0 with MIT License | 6 votes |
def test_pairwise_kernels_callable(): # Test the pairwise_kernels helper function # with a callable function, with given keywords. rng = np.random.RandomState(0) X = rng.random_sample((5, 4)) Y = rng.random_sample((2, 4)) metric = callable_rbf_kernel kwds = {'gamma': 0.1} K1 = pairwise_kernels(X, Y=Y, metric=metric, **kwds) K2 = rbf_kernel(X, Y=Y, **kwds) assert_array_almost_equal(K1, K2) # callable function, X=Y K1 = pairwise_kernels(X, Y=X, metric=metric, **kwds) K2 = rbf_kernel(X, Y=X, **kwds) assert_array_almost_equal(K1, K2)
Example #4
Source File: core.py From samacharbot2 with GNU General Public License v3.0 | 6 votes |
def _intertext_score(full_text): '''returns tuple of scored sentences in order of appearance Note: Doing an A/B test to compare results, reverting to original algorithm.''' sentences = sentence_tokenizer(full_text) norm = _normalize(sentences) similarity_matrix = pairwise_kernels(norm, metric='cosine') scores = _textrank(similarity_matrix) scored_sentences = [] for i, s in enumerate(sentences): scored_sentences.append((scores[i],i,s)) top_scorers = sorted(scored_sentences, key=lambda tup: tup[0], reverse=True) return top_scorers
Example #5
Source File: test_pairwise.py From Mastering-Elasticsearch-7.0 with MIT License | 6 votes |
def test_pairwise_similarity_sparse_output(metric, pairwise_func): rng = np.random.RandomState(0) X = rng.random_sample((5, 4)) Y = rng.random_sample((3, 4)) Xcsr = csr_matrix(X) Ycsr = csr_matrix(Y) # should be sparse K1 = pairwise_func(Xcsr, Ycsr, dense_output=False) assert issparse(K1) # should be dense, and equal to K1 K2 = pairwise_func(X, Y, dense_output=True) assert not issparse(K2) assert_array_almost_equal(K1.todense(), K2) # show the kernel output equal to the sparse.todense() K3 = pairwise_kernels(X, Y=Y, metric=metric) assert_array_almost_equal(K1.todense(), K3)
Example #6
Source File: test_pairwise.py From Mastering-Elasticsearch-7.0 with MIT License | 6 votes |
def test_cosine_similarity(): # Test the cosine_similarity. rng = np.random.RandomState(0) X = rng.random_sample((5, 4)) Y = rng.random_sample((3, 4)) Xcsr = csr_matrix(X) Ycsr = csr_matrix(Y) for X_, Y_ in ((X, None), (X, Y), (Xcsr, None), (Xcsr, Ycsr)): # Test that the cosine is kernel is equal to a linear kernel when data # has been previously normalized by L2-norm. K1 = pairwise_kernels(X_, Y=Y_, metric="cosine") X_ = normalize(X_) if Y_ is not None: Y_ = normalize(Y_) K2 = pairwise_kernels(X_, Y=Y_, metric="linear") assert_array_almost_equal(K1, K2)
Example #7
Source File: test_mmk.py From skl-groups with BSD 3-Clause "New" or "Revised" License | 6 votes |
def test_mmk(): bags = [np.random.normal(size=(np.random.randint(10, 100), 10)) for _ in range(20)] res = MeanMapKernel(gamma=2.38).fit_transform(bags) for i in range(20): for j in range(20): exp = pairwise_kernels(bags[j], bags[i], metric='rbf', gamma=2.38) assert_almost_equal(res[i, j], exp.mean(), err_msg="({} to {})".format(i, j)) res = MeanMapKernel(kernel='linear').fit(bags[:5]).transform(bags[-2:]) for i in range(5): for j in range(18, 20): exp = pairwise_kernels(bags[j], bags[i], metric='linear') assert_almost_equal(res[j - 18, i], exp.mean(), err_msg="({} to {})".format(i, j)) # fails on wrong dimension assert_raises( ValueError, lambda:MeanMapKernel().fit(bags).transform([np.random.randn(20, 8)])) ################################################################################
Example #8
Source File: svm.py From svm with MIT License | 6 votes |
def decision_function(self, X): """Decision function of the SVM. Parameters ---------- X : array-like, shape (n_samples, n_features) The input data. Returns ------- y : array-like, shape (n_samples,) The values of decision function. """ X = check_array(X) if self.kernel == "linear": return self.intercept_ + np.dot(X, self.coef_) else: K = pairwise_kernels(X, self.support_vectors_, metric=self.kernel, **self.kernel_args) return (self.intercept_ + np.sum(self.dual_coef_[np.newaxis, :] * self.y * K, axis=1))
Example #9
Source File: test_pairwise.py From twitter-stock-recommendation with MIT License | 5 votes |
def test_pairwise_parallel(): wminkowski_kwds = {'w': np.arange(1, 5).astype('double'), 'p': 1} metrics = [(pairwise_distances, 'euclidean', {}), (pairwise_distances, wminkowski, wminkowski_kwds), (pairwise_distances, 'wminkowski', wminkowski_kwds), (pairwise_kernels, 'polynomial', {'degree': 1}), (pairwise_kernels, callable_rbf_kernel, {'gamma': .1}), ] for func, metric, kwds in metrics: yield check_pairwise_parallel, func, metric, kwds
Example #10
Source File: test_pairwise.py From twitter-stock-recommendation with MIT License | 5 votes |
def test_pairwise_precomputed(): for func in [pairwise_distances, pairwise_kernels]: # Test correct shape assert_raises_regexp(ValueError, '.* shape .*', func, np.zeros((5, 3)), metric='precomputed') # with two args assert_raises_regexp(ValueError, '.* shape .*', func, np.zeros((5, 3)), np.zeros((4, 4)), metric='precomputed') # even if shape[1] agrees (although thus second arg is spurious) assert_raises_regexp(ValueError, '.* shape .*', func, np.zeros((5, 3)), np.zeros((4, 3)), metric='precomputed') # Test not copied (if appropriate dtype) S = np.zeros((5, 5)) S2 = func(S, metric="precomputed") assert_true(S is S2) # with two args S = np.zeros((5, 3)) S2 = func(S, np.zeros((3, 3)), metric="precomputed") assert_true(S is S2) # Test always returns float dtype S = func(np.array([[1]], dtype='int'), metric='precomputed') assert_equal('f', S.dtype.kind) # Test converts list to array-like S = func([[1.]], metric='precomputed') assert_true(isinstance(S, np.ndarray))
Example #11
Source File: core.py From samacharbot2 with GNU General Public License v3.0 | 5 votes |
def _title_similarity_score(full_text, title): """Similarity scores for sentences with title in descending order""" sentences = sentence_tokenizer(full_text) norm = _normalize([title]+sentences) similarity_matrix = pairwise_kernels(norm, metric='cosine') return sorted(zip( similarity_matrix[0,1:], range(len(similarity_matrix)), sentences ), key = lambda tup: tup[0], reverse=True )
Example #12
Source File: test_pairwise.py From twitter-stock-recommendation with MIT License | 5 votes |
def test_pairwise_kernels_filter_param(): rng = np.random.RandomState(0) X = rng.random_sample((5, 4)) Y = rng.random_sample((2, 4)) K = rbf_kernel(X, Y, gamma=0.1) params = {"gamma": 0.1, "blabla": ":)"} K2 = pairwise_kernels(X, Y, metric="rbf", filter_params=True, **params) assert_array_almost_equal(K, K2) assert_raises(TypeError, pairwise_kernels, X, Y, "rbf", **params)
Example #13
Source File: dml_algorithm.py From pyDML with GNU General Public License v3.0 | 5 votes |
def _get_kernel(self, X, Y=None): if callable(self.kernel_): params = self.kernel_params_ or {} else: params = {'gamma': self.gamma_, 'degree': self.degree_, 'coef0': self.coef0_} return pairwise_kernels(X, Y, metric=self.kernel_, filter_params=True, **params)
Example #14
Source File: test_pairwise.py From twitter-stock-recommendation with MIT License | 5 votes |
def test_cosine_similarity_sparse_output(): # Test if cosine_similarity correctly produces sparse output. rng = np.random.RandomState(0) X = rng.random_sample((5, 4)) Y = rng.random_sample((3, 4)) Xcsr = csr_matrix(X) Ycsr = csr_matrix(Y) K1 = cosine_similarity(Xcsr, Ycsr, dense_output=False) assert_true(issparse(K1)) K2 = pairwise_kernels(Xcsr, Y=Ycsr, metric="cosine") assert_array_almost_equal(K1.todense(), K2)
Example #15
Source File: mmk.py From skl-groups with BSD 3-Clause "New" or "Revised" License | 5 votes |
def transform(self, X): ''' Compute kernels from X to :attr:`features_`. Parameters ---------- X : list of arrays or :class:`skl_groups.features.Features` The bags to compute "from". Must have same dimension as :attr:`features_`. Returns ------- K : array of shape ``[len(X), len(features_)]`` The kernel evaluations from X to :attr:`features_`. ''' X = as_features(X, stack=True, bare=True) Y = self.features_ if X.dim != Y.dim: raise ValueError("MMK transform got dimension {} but had {} at fit" .format(X.dim, Y.dim)) pointwise = pairwise_kernels(X.stacked_features, Y.stacked_features, metric=self.kernel, filter_params=True, **self._get_kernel_params()) # TODO: is there a way to do this without a Python loop? K = np.empty((len(X), len(Y))) for i in range(len(X)): for j in range(len(Y)): K[i, j] = pointwise[X._boundaries[i]:X._boundaries[i+1], Y._boundaries[j]:Y._boundaries[j+1]].mean() return K
Example #16
Source File: clustering.py From tslearn with BSD 2-Clause "Simplified" License | 5 votes |
def _get_kernel(self, X, Y=None): kernel_params = self._get_kernel_params() if self.kernel == "gak": return cdist_gak(X, Y, n_jobs=self.n_jobs, verbose=self.verbose, **kernel_params) else: X_sklearn = to_sklearn_dataset(X) if Y is not None: Y_sklearn = to_sklearn_dataset(Y) else: Y_sklearn = Y return pairwise_kernels(X_sklearn, Y_sklearn, metric=self.kernel, n_jobs=self.n_jobs, **kernel_params)
Example #17
Source File: test_pairwise.py From Mastering-Elasticsearch-7.0 with MIT License | 5 votes |
def test_pairwise_kernels_filter_param(): rng = np.random.RandomState(0) X = rng.random_sample((5, 4)) Y = rng.random_sample((2, 4)) K = rbf_kernel(X, Y, gamma=0.1) params = {"gamma": 0.1, "blabla": ":)"} K2 = pairwise_kernels(X, Y, metric="rbf", filter_params=True, **params) assert_array_almost_equal(K, K2) assert_raises(TypeError, pairwise_kernels, X, Y, "rbf", **params)
Example #18
Source File: test_pairwise.py From Mastering-Elasticsearch-7.0 with MIT License | 5 votes |
def test_pairwise_kernels(metric): # Test the pairwise_kernels helper function. rng = np.random.RandomState(0) X = rng.random_sample((5, 4)) Y = rng.random_sample((2, 4)) function = PAIRWISE_KERNEL_FUNCTIONS[metric] # Test with Y=None K1 = pairwise_kernels(X, metric=metric) K2 = function(X) assert_array_almost_equal(K1, K2) # Test with Y=Y K1 = pairwise_kernels(X, Y=Y, metric=metric) K2 = function(X, Y=Y) assert_array_almost_equal(K1, K2) # Test with tuples as X and Y X_tuples = tuple([tuple([v for v in row]) for row in X]) Y_tuples = tuple([tuple([v for v in row]) for row in Y]) K2 = pairwise_kernels(X_tuples, Y_tuples, metric=metric) assert_array_almost_equal(K1, K2) # Test with sparse X and Y X_sparse = csr_matrix(X) Y_sparse = csr_matrix(Y) if metric in ["chi2", "additive_chi2"]: # these don't support sparse matrices yet assert_raises(ValueError, pairwise_kernels, X_sparse, Y=Y_sparse, metric=metric) return K1 = pairwise_kernels(X_sparse, Y=Y_sparse, metric=metric) assert_array_almost_equal(K1, K2)
Example #19
Source File: core.py From Summarizer with Apache License 2.0 | 5 votes |
def _title_similarity_score(full_text, title): """Similarity scores for sentences with title in descending order""" sentences = sentence_tokenizer(full_text) norm = _normalize([title]+sentences) similarity_matrix = pairwise_kernels(norm, metric='cosine') return sorted(zip( similarity_matrix[0,1:], range(len(similarity_matrix)), sentences ), key = lambda tup: tup[0], reverse=True )
Example #20
Source File: test_kernel_ridge.py From twitter-stock-recommendation with MIT License | 5 votes |
def test_kernel_ridge_precomputed(): for kernel in ["linear", "rbf", "poly", "cosine"]: K = pairwise_kernels(X, X, metric=kernel) pred = KernelRidge(kernel=kernel).fit(X, y).predict(X) pred2 = KernelRidge(kernel="precomputed").fit(K, y).predict(K) assert_array_almost_equal(pred, pred2)
Example #21
Source File: svm.py From svm with MIT License | 4 votes |
def fit(self, X, y): """Fit the model to data matrix X and target y. Parameters ---------- X : array-like, shape (n_samples, n_features) The input data. y : array-like, shape (n_samples,) The class labels. Returns ------- self : returns a trained SVM """ self.support_vectors_ = check_array(X) self.y = check_array(y, ensure_2d=False) random_state = check_random_state(self.random_state) self.kernel_args = {} if self.kernel == "rbf" and self.gamma is not None: self.kernel_args["gamma"] = self.gamma elif self.kernel == "poly": self.kernel_args["degree"] = self.degree self.kernel_args["coef0"] = self.coef0 elif self.kernel == "sigmoid": self.kernel_args["coef0"] = self.coef0 K = pairwise_kernels(X, metric=self.kernel, **self.kernel_args) self.dual_coef_ = np.zeros(X.shape[0]) self.intercept_ = _svm.smo( K, y, self.dual_coef_, self.C, random_state, self.tol, self.numpasses, self.maxiter, self.verbose) # If the user was using a linear kernel, lets also compute and store # the weights. This will speed up evaluations during testing time. if self.kernel == "linear": self.coef_ = np.dot(self.dual_coef_ * self.y, self.support_vectors_) # only samples with nonzero coefficients are relevant for predictions support_vectors = np.nonzero(self.dual_coef_) self.dual_coef_ = self.dual_coef_[support_vectors] self.support_vectors_ = X[support_vectors] self.y = y[support_vectors] return self
Example #22
Source File: test_pairwise.py From twitter-stock-recommendation with MIT License | 4 votes |
def test_pairwise_kernels(): # Test the pairwise_kernels helper function. rng = np.random.RandomState(0) X = rng.random_sample((5, 4)) Y = rng.random_sample((2, 4)) # Test with all metrics that should be in PAIRWISE_KERNEL_FUNCTIONS. test_metrics = ["rbf", "laplacian", "sigmoid", "polynomial", "linear", "chi2", "additive_chi2"] for metric in test_metrics: function = PAIRWISE_KERNEL_FUNCTIONS[metric] # Test with Y=None K1 = pairwise_kernels(X, metric=metric) K2 = function(X) assert_array_almost_equal(K1, K2) # Test with Y=Y K1 = pairwise_kernels(X, Y=Y, metric=metric) K2 = function(X, Y=Y) assert_array_almost_equal(K1, K2) # Test with tuples as X and Y X_tuples = tuple([tuple([v for v in row]) for row in X]) Y_tuples = tuple([tuple([v for v in row]) for row in Y]) K2 = pairwise_kernels(X_tuples, Y_tuples, metric=metric) assert_array_almost_equal(K1, K2) # Test with sparse X and Y X_sparse = csr_matrix(X) Y_sparse = csr_matrix(Y) if metric in ["chi2", "additive_chi2"]: # these don't support sparse matrices yet assert_raises(ValueError, pairwise_kernels, X_sparse, Y=Y_sparse, metric=metric) continue K1 = pairwise_kernels(X_sparse, Y=Y_sparse, metric=metric) assert_array_almost_equal(K1, K2) # Test with a callable function, with given keywords. metric = callable_rbf_kernel kwds = {'gamma': 0.1} K1 = pairwise_kernels(X, Y=Y, metric=metric, **kwds) K2 = rbf_kernel(X, Y=Y, **kwds) assert_array_almost_equal(K1, K2) # callable function, X=Y K1 = pairwise_kernels(X, Y=X, metric=metric, **kwds) K2 = rbf_kernel(X, Y=X, **kwds) assert_array_almost_equal(K1, K2)
Example #23
Source File: spectral.py From intro_ds with Apache License 2.0 | 4 votes |
def fit(self, X, y=None): """Creates an affinity matrix for X using the selected affinity, then applies spectral clustering to this affinity matrix. Parameters ---------- X : array-like or sparse matrix, shape (n_samples, n_features) OR, if affinity==`precomputed`, a precomputed affinity matrix of shape (n_samples, n_samples) """ X = check_array(X, accept_sparse=['csr', 'csc', 'coo'], dtype=np.float64) if X.shape[0] == X.shape[1] and self.affinity != "precomputed": warnings.warn("The spectral clustering API has changed. ``fit``" "now constructs an affinity matrix from data. To use" " a custom affinity matrix, " "set ``affinity=precomputed``.") if self.affinity == 'nearest_neighbors': connectivity = kneighbors_graph(X, n_neighbors=self.n_neighbors, include_self=True, n_jobs=self.n_jobs) self.affinity_matrix_ = 0.5 * (connectivity + connectivity.T) elif self.affinity == 'precomputed': self.affinity_matrix_ = X else: params = self.kernel_params if params is None: params = {} if not callable(self.affinity): params['gamma'] = self.gamma params['degree'] = self.degree params['coef0'] = self.coef0 self.affinity_matrix_ = pairwise_kernels(X, metric=self.affinity, filter_params=True, **params) random_state = check_random_state(self.random_state) self.labels_ = spectral_clustering(self.affinity_matrix_, n_clusters=self.n_clusters, eigen_solver=self.eigen_solver, random_state=random_state, n_init=self.n_init, eigen_tol=self.eigen_tol, assign_labels=self.assign_labels) return self
Example #24
Source File: ssad.py From Deep-SAD-PyTorch with MIT License | 4 votes |
def test(self, dataset: BaseADDataset, device: str = 'cpu', n_jobs_dataloader: int = 0): """Tests the SSAD model on the test data.""" logger = logging.getLogger() _, test_loader = dataset.loaders(batch_size=128, num_workers=n_jobs_dataloader) # Get data from loader idx_label_score = [] X = () idxs = [] labels = [] for data in test_loader: inputs, label_batch, _, idx = data inputs, label_batch, idx = inputs.to(device), label_batch.to(device), idx.to(device) if self.hybrid: inputs = self.ae_net.encoder(inputs) # in hybrid approach, take code representation of AE as features X_batch = inputs.view(inputs.size(0), -1) # X_batch.shape = (batch_size, n_channels * height * width) X += (X_batch.cpu().data.numpy(),) idxs += idx.cpu().data.numpy().astype(np.int64).tolist() labels += label_batch.cpu().data.numpy().astype(np.int64).tolist() X = np.concatenate(X) # Testing logger.info('Starting testing...') start_time = time.time() # Build kernel kernel = pairwise_kernels(X, self.X_svs, metric=self.kernel, gamma=self.gamma) scores = (-1.0) * self.model.apply(kernel) self.results['test_time'] = time.time() - start_time scores = scores.flatten() self.rho = -self.model.threshold # Save triples of (idx, label, score) in a list idx_label_score += list(zip(idxs, labels, scores.tolist())) self.results['test_scores'] = idx_label_score # Compute AUC _, labels, scores = zip(*idx_label_score) labels = np.array(labels) scores = np.array(scores) self.results['test_auc'] = roc_auc_score(labels, scores) # If hybrid, also test model with linear kernel if self.hybrid: start_time = time.time() linear_kernel = pairwise_kernels(X, self.linear_X_svs, metric='linear') scores_linear = (-1.0) * self.linear_model.apply(linear_kernel) self.results['test_time_linear'] = time.time() - start_time scores_linear = scores_linear.flatten() self.results['test_auc_linear'] = roc_auc_score(labels, scores_linear) logger.info('Test AUC linear model: {:.2f}%'.format(100. * self.results['test_auc_linear'])) logger.info('Test Time linear model: {:.3f}s'.format(self.results['test_time_linear'])) # Log results logger.info('Test AUC: {:.2f}%'.format(100. * self.results['test_auc'])) logger.info('Test Time: {:.3f}s'.format(self.results['test_time'])) logger.info('Finished testing.')
Example #25
Source File: _eigenpro.py From scikit-learn-extra with BSD 3-Clause "New" or "Revised" License | 4 votes |
def _kernel(self, X, Y): """Calculate the kernel matrix Parameters --------- X : {float, array}, shape = [n_samples, n_features] Input data. Y : {float, array}, shape = [n_centers, n_targets] Kernel centers. Returns ------- K : {float, array}, shape = [n_samples, n_centers] Kernel matrix. """ if ( self.kernel != "rbf" and self.kernel != "laplace" and self.kernel != "cauchy" ): if callable(self.kernel): params = self.kernel_params or {} else: params = { "gamma": self.gamma_, "degree": self.degree, "coef0": self.coef0, } return pairwise_kernels( X, Y, metric=self.kernel, filter_params=True, **params ) distance = euclidean_distances(X, Y, squared=True) bandwidth = np.float32(1.0 / np.sqrt(2.0 * self.gamma_)) if self.kernel == "rbf": distance = -self.gamma_ * distance K = np.exp(distance) elif self.kernel == "laplace": d = np.maximum(distance, 0) K = np.exp(-np.sqrt(d) / bandwidth) else: # self.kernel == "cauchy": K = 1 / (1 + 2.0 * self.gamma_ * distance) return K