Python sklearn.neighbors.kneighbors_graph() Examples
The following are 30
code examples of sklearn.neighbors.kneighbors_graph().
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.neighbors
, or try the search function
.
Example #1
Source File: 20newsgroup.py From OpenNE with MIT License | 9 votes |
def text_to_graph(text): import networkx as nx from sklearn.feature_extraction.text import TfidfVectorizer from sklearn.neighbors import kneighbors_graph # use tfidf to transform texts into feature vectors vectorizer = TfidfVectorizer() vectors = vectorizer.fit_transform(text) # build the graph which is full-connected N = vectors.shape[0] mat = kneighbors_graph(vectors, N, metric='cosine', mode='distance', include_self=True) mat.data = 1 - mat.data # to similarity g = nx.from_scipy_sparse_matrix(mat, create_using=nx.Graph()) return g
Example #2
Source File: test_neighbors.py From twitter-stock-recommendation with MIT License | 6 votes |
def test_kneighbors_graph_sparse(seed=36): # Test kneighbors_graph to build the k-Nearest Neighbor graph # for sparse input. rng = np.random.RandomState(seed) X = rng.randn(10, 10) Xcsr = csr_matrix(X) for n_neighbors in [1, 2, 3]: for mode in ["connectivity", "distance"]: assert_array_almost_equal( neighbors.kneighbors_graph(X, n_neighbors, mode=mode).toarray(), neighbors.kneighbors_graph(Xcsr, n_neighbors, mode=mode).toarray())
Example #3
Source File: test_isomap.py From twitter-stock-recommendation with MIT License | 6 votes |
def test_isomap_simple_grid(): # Isomap should preserve distances when all neighbors are used N_per_side = 5 Npts = N_per_side ** 2 n_neighbors = Npts - 1 # grid of equidistant points in 2D, n_components = n_dim X = np.array(list(product(range(N_per_side), repeat=2))) # distances from each point to all others G = neighbors.kneighbors_graph(X, n_neighbors, mode='distance').toarray() for eigen_solver in eigen_solvers: for path_method in path_methods: clf = manifold.Isomap(n_neighbors=n_neighbors, n_components=2, eigen_solver=eigen_solver, path_method=path_method) clf.fit(X) G_iso = neighbors.kneighbors_graph(clf.embedding_, n_neighbors, mode='distance').toarray() assert_array_almost_equal(G, G_iso)
Example #4
Source File: test_neighbors.py From Mastering-Elasticsearch-7.0 with MIT License | 6 votes |
def test_k_and_radius_neighbors_X_None(): # Test kneighbors et.al when query is None for algorithm in ALGORITHMS: nn = neighbors.NearestNeighbors(n_neighbors=1, algorithm=algorithm) X = [[0], [1]] nn.fit(X) dist, ind = nn.kneighbors() assert_array_equal(dist, [[1], [1]]) assert_array_equal(ind, [[1], [0]]) dist, ind = nn.radius_neighbors(None, radius=1.5) check_object_arrays(dist, [[1], [1]]) check_object_arrays(ind, [[1], [0]]) # Test the graph variants. rng = nn.radius_neighbors_graph(None, radius=1.5) kng = nn.kneighbors_graph(None) for graph in [rng, kng]: assert_array_equal(rng.A, [[0, 1], [1, 0]]) assert_array_equal(rng.data, [1, 1]) assert_array_equal(rng.indices, [1, 0]) X = [[0, 1], [0, 1], [1, 1]] nn = neighbors.NearestNeighbors(n_neighbors=2, algorithm=algorithm) nn.fit(X) assert_array_equal( nn.kneighbors_graph().A, np.array([[0., 1., 1.], [1., 0., 1.], [1., 1., 0]]))
Example #5
Source File: mst_clustering_3D.py From lmatools with BSD 2-Clause "Simplified" License | 6 votes |
def fit(self, X): """Fit the clustering model Parameters ---------- X : array_like the data to be clustered: shape = [n_samples, n_features] """ X = np.asarray(X, dtype=float) self.X_train_ = X # generate a sparse graph using the k nearest neighbors of each point G = kneighbors_graph(X, n_neighbors=self.n_neighbors, mode='distance') # Compute the minimum spanning tree of this graph self.full_tree_ = minimum_spanning_tree(G, overwrite=True) # Find the cluster labels self.n_components_, self.labels_, self.cluster_graph_ =\ self.compute_clusters() return self
Example #6
Source File: neighbors.py From velocyto.py with BSD 2-Clause "Simplified" License | 5 votes |
def smooth_data(self, data_to_smooth: np.ndarray, X: np.ndarray=None, maxl: int=None, mutual: bool=False, only_increase: bool=True) -> np.ndarray: """Use the wights learned from knn to smooth any data matrix Arguments --------- data_to_smooth: (features, samples) !! NOTE !! this is different from the input (for speed issues) if the data is provided (samples, features), this will be detected and the correct operation performed at cost of some effciency In the case where samples == samples then the shape (features, samples) will be assumed """ if self.bknn is None: assert (X is None) and (maxl is None), "graph was already fit with different parameters" self.kneighbors_graph(X=X, maxl=maxl, mode=self.mode) if mutual: connectivity = make_mutual(self.bknn > 0) else: connectivity = self.bknn.T > 0 connectivity = connectivity.tolil() connectivity.setdiag(1) w = connectivity_to_weights(connectivity).T assert np.allclose(w.sum(0), 1), "weight matrix need to sum to one over the columns" if data_to_smooth.shape[1] == w.shape[0]: result = sparse.csr_matrix.dot(data_to_smooth, w) elif data_to_smooth.shape[0] == w.shape[0]: result = sparse.csr_matrix.dot(data_to_smooth.T, w).T else: raise ValueError(f"Incorrect size of matrix, none of the axis correspond to the one of graph. {w.shape}") if only_increase: return np.maximum(result, data_to_smooth) else: return result # Mutual KNN version
Example #7
Source File: neighbors.py From velocyto.py with BSD 2-Clause "Simplified" License | 5 votes |
def knn_distance_matrix(data: np.ndarray, metric: str=None, k: int=40, mode: str='connectivity', n_jobs: int=4) -> sparse.csr_matrix: """Calculate a nearest neighbour distance matrix Notice that k is meant as the actual number of neighbors NOT INCLUDING itself To achieve that we call kneighbors_graph with X = None """ if metric == "correlation": nn = NearestNeighbors(n_neighbors=k, metric="correlation", algorithm="brute", n_jobs=n_jobs) nn.fit(data) return nn.kneighbors_graph(X=None, mode=mode) else: nn = NearestNeighbors(n_neighbors=k, n_jobs=n_jobs, ) nn.fit(data) return nn.kneighbors_graph(X=None, mode=mode)
Example #8
Source File: selfrepresentation.py From subspace-clustering with MIT License | 5 votes |
def _representation_to_affinity(self): """Compute affinity matrix from representation matrix. """ normalized_representation_matrix_ = normalize(self.representation_matrix_, 'l2') if self.affinity == 'symmetrize': self.affinity_matrix_ = 0.5 * (np.absolute(normalized_representation_matrix_) + np.absolute(normalized_representation_matrix_.T)) elif self.affinity == 'nearest_neighbors': neighbors_graph = kneighbors_graph(normalized_representation_matrix_, 3, mode='connectivity', include_self=False) self.affinity_matrix_ = 0.5 * (neighbors_graph + neighbors_graph.T)
Example #9
Source File: graph_density.py From active-learning with Apache License 2.0 | 5 votes |
def compute_graph_density(self, n_neighbor=10): # kneighbors graph is constructed using k=10 connect = kneighbors_graph(self.flat_X, n_neighbor,p=1) # Make connectivity matrix symmetric, if a point is a k nearest neighbor of # another point, make it vice versa neighbors = connect.nonzero() inds = zip(neighbors[0],neighbors[1]) # Graph edges are weighted by applying gaussian kernel to manhattan dist. # By default, gamma for rbf kernel is equal to 1/n_features but may # get better results if gamma is tuned. for entry in inds: i = entry[0] j = entry[1] distance = pairwise_distances(self.flat_X[[i]],self.flat_X[[j]],metric='manhattan') distance = distance[0,0] weight = np.exp(-distance * self.gamma) connect[i,j] = weight connect[j,i] = weight self.connect = connect # Define graph density for an observation to be sum of weights for all # edges to the node representing the datapoint. Normalize sum weights # by total number of neighbors. self.graph_density = np.zeros(self.X.shape[0]) for i in np.arange(self.X.shape[0]): self.graph_density[i] = connect[i,:].sum() / (connect[i,:]>0).sum() self.starting_density = copy.deepcopy(self.graph_density)
Example #10
Source File: test_neighbors.py From pandas-ml with BSD 3-Clause "New" or "Revised" License | 5 votes |
def test_kneighbors_graph(self): x = [[0], [3], [1]] df = pdml.ModelFrame(x) result = df.neighbors.kneighbors_graph(2) expected = neighbors.kneighbors_graph(x, 2) self.assert_numpy_array_almost_equal(result.toarray(), expected.toarray())
Example #11
Source File: sklearn_cluster.py From learn-to-cluster with MIT License | 5 votes |
def hierarchy(feat, n_clusters, knn, **kwargs): from sklearn.neighbors import kneighbors_graph knn_graph = kneighbors_graph(feat, knn, include_self=False) hierarchy = cluster.AgglomerativeClustering(n_clusters=n_clusters, connectivity=knn_graph, linkage='ward').fit(feat) return hierarchy.labels_
Example #12
Source File: test_isomap.py From twitter-stock-recommendation with MIT License | 5 votes |
def test_isomap_reconstruction_error(): # Same setup as in test_isomap_simple_grid, with an added dimension N_per_side = 5 Npts = N_per_side ** 2 n_neighbors = Npts - 1 # grid of equidistant points in 2D, n_components = n_dim X = np.array(list(product(range(N_per_side), repeat=2))) # add noise in a third dimension rng = np.random.RandomState(0) noise = 0.1 * rng.randn(Npts, 1) X = np.concatenate((X, noise), 1) # compute input kernel G = neighbors.kneighbors_graph(X, n_neighbors, mode='distance').toarray() centerer = preprocessing.KernelCenterer() K = centerer.fit_transform(-0.5 * G ** 2) for eigen_solver in eigen_solvers: for path_method in path_methods: clf = manifold.Isomap(n_neighbors=n_neighbors, n_components=2, eigen_solver=eigen_solver, path_method=path_method) clf.fit(X) # compute output kernel G_iso = neighbors.kneighbors_graph(clf.embedding_, n_neighbors, mode='distance').toarray() K_iso = centerer.fit_transform(-0.5 * G_iso ** 2) # make sure error agrees reconstruction_error = np.linalg.norm(K - K_iso) / Npts assert_almost_equal(reconstruction_error, clf.reconstruction_error())
Example #13
Source File: test_neighbors.py From twitter-stock-recommendation with MIT License | 5 votes |
def test_kneighbors_graph(): # Test kneighbors_graph to build the k-Nearest Neighbor graph. X = np.array([[0, 1], [1.01, 1.], [2, 0]]) # n_neighbors = 1 A = neighbors.kneighbors_graph(X, 1, mode='connectivity', include_self=True) assert_array_equal(A.toarray(), np.eye(A.shape[0])) A = neighbors.kneighbors_graph(X, 1, mode='distance') assert_array_almost_equal( A.toarray(), [[0.00, 1.01, 0.], [1.01, 0., 0.], [0.00, 1.40716026, 0.]]) # n_neighbors = 2 A = neighbors.kneighbors_graph(X, 2, mode='connectivity', include_self=True) assert_array_equal( A.toarray(), [[1., 1., 0.], [1., 1., 0.], [0., 1., 1.]]) A = neighbors.kneighbors_graph(X, 2, mode='distance') assert_array_almost_equal( A.toarray(), [[0., 1.01, 2.23606798], [1.01, 0., 1.40716026], [2.23606798, 1.40716026, 0.]]) # n_neighbors = 3 A = neighbors.kneighbors_graph(X, 3, mode='connectivity', include_self=True) assert_array_almost_equal( A.toarray(), [[1, 1, 1], [1, 1, 1], [1, 1, 1]])
Example #14
Source File: test_neighbors.py From twitter-stock-recommendation with MIT License | 5 votes |
def test_k_and_radius_neighbors_train_is_not_query(): # Test kneighbors et.al when query is not training data for algorithm in ALGORITHMS: nn = neighbors.NearestNeighbors(n_neighbors=1, algorithm=algorithm) X = [[0], [1]] nn.fit(X) test_data = [[2], [1]] # Test neighbors. dist, ind = nn.kneighbors(test_data) assert_array_equal(dist, [[1], [0]]) assert_array_equal(ind, [[1], [1]]) dist, ind = nn.radius_neighbors([[2], [1]], radius=1.5) check_object_arrays(dist, [[1], [1, 0]]) check_object_arrays(ind, [[1], [0, 1]]) # Test the graph variants. assert_array_equal( nn.kneighbors_graph(test_data).A, [[0., 1.], [0., 1.]]) assert_array_equal( nn.kneighbors_graph([[2], [1]], mode='distance').A, np.array([[0., 1.], [0., 0.]])) rng = nn.radius_neighbors_graph([[2], [1]], radius=1.5) assert_array_equal(rng.A, [[0, 1], [1, 1]])
Example #15
Source File: test_neighbors.py From twitter-stock-recommendation with MIT License | 5 votes |
def test_k_and_radius_neighbors_X_None(): # Test kneighbors et.al when query is None for algorithm in ALGORITHMS: nn = neighbors.NearestNeighbors(n_neighbors=1, algorithm=algorithm) X = [[0], [1]] nn.fit(X) dist, ind = nn.kneighbors() assert_array_equal(dist, [[1], [1]]) assert_array_equal(ind, [[1], [0]]) dist, ind = nn.radius_neighbors(None, radius=1.5) check_object_arrays(dist, [[1], [1]]) check_object_arrays(ind, [[1], [0]]) # Test the graph variants. rng = nn.radius_neighbors_graph(None, radius=1.5) kng = nn.kneighbors_graph(None) for graph in [rng, kng]: assert_array_equal(rng.A, [[0, 1], [1, 0]]) assert_array_equal(rng.data, [1, 1]) assert_array_equal(rng.indices, [1, 0]) X = [[0, 1], [0, 1], [1, 1]] nn = neighbors.NearestNeighbors(n_neighbors=2, algorithm=algorithm) nn.fit(X) assert_array_equal( nn.kneighbors_graph().A, np.array([[0., 1., 1.], [1., 0., 1.], [1., 1., 0]]))
Example #16
Source File: test_neighbors.py From twitter-stock-recommendation with MIT License | 5 votes |
def test_include_self_neighbors_graph(): # Test include_self parameter in neighbors_graph X = [[2, 3], [4, 5]] kng = neighbors.kneighbors_graph(X, 1, include_self=True).A kng_not_self = neighbors.kneighbors_graph(X, 1, include_self=False).A assert_array_equal(kng, [[1., 0.], [0., 1.]]) assert_array_equal(kng_not_self, [[0., 1.], [1., 0.]]) rng = neighbors.radius_neighbors_graph(X, 5.0, include_self=True).A rng_not_self = neighbors.radius_neighbors_graph( X, 5.0, include_self=False).A assert_array_equal(rng, [[1., 1.], [1., 1.]]) assert_array_equal(rng_not_self, [[0., 1.], [1., 0.]])
Example #17
Source File: test_neighbors.py From twitter-stock-recommendation with MIT License | 5 votes |
def test_same_knn_parallel(): X, y = datasets.make_classification(n_samples=30, n_features=5, n_redundant=0, random_state=0) X_train, X_test, y_train, y_test = train_test_split(X, y) def check_same_knn_parallel(algorithm): clf = neighbors.KNeighborsClassifier(n_neighbors=3, algorithm=algorithm) clf.fit(X_train, y_train) y = clf.predict(X_test) dist, ind = clf.kneighbors(X_test) graph = clf.kneighbors_graph(X_test, mode='distance').toarray() clf.set_params(n_jobs=3) clf.fit(X_train, y_train) y_parallel = clf.predict(X_test) dist_parallel, ind_parallel = clf.kneighbors(X_test) graph_parallel = \ clf.kneighbors_graph(X_test, mode='distance').toarray() assert_array_equal(y, y_parallel) assert_array_almost_equal(dist, dist_parallel) assert_array_equal(ind, ind_parallel) assert_array_almost_equal(graph, graph_parallel) for algorithm in ALGORITHMS: yield check_same_knn_parallel, algorithm
Example #18
Source File: clusterings.py From parcellation_fragmenter with BSD 3-Clause "New" or "Revised" License | 5 votes |
def ward(n_clusters, samples): """ Run Ward clustering on vertex coordinates. Parameters: - - - - - n_clusters : int number of clusters to generate samples : array Euclidean-space coordinates of vertices """ # Generate KNN graph knn_graph = neighbors.kneighbors_graph( samples, n_neighbors=20, mode='connectivity', metric='minkowski', p=2, include_self=False, n_jobs=-1) # Apply Ward-Agglomerative clustering ward = cluster.AgglomerativeClustering( n_clusters=n_clusters, affinity='euclidean', connectivity=knn_graph, linkage='ward') ward.fit(samples) labels = ward.labels_.copy() labels = labels.astype(np.int32)+1 return labels
Example #19
Source File: mnist.py From spektral with MIT License | 5 votes |
def _get_adj_from_data(X, k, **kwargs): """ Computes adjacency matrix of a K-NN graph from the given data. :param X: rank 1 np.array, the 2D coordinates of pixels on the grid. :param kwargs: kwargs for sklearn.neighbors.kneighbors_graph (see docs [here](https://scikit-learn.org/stable/modules/generated/sklearn.neighbors.kneighbors_graph.html)). :return: scipy sparse matrix. """ A = kneighbors_graph(X, k, **kwargs).toarray() A = sp.csr_matrix(np.maximum(A, A.T)) return A
Example #20
Source File: test_isomap.py From Mastering-Elasticsearch-7.0 with MIT License | 5 votes |
def test_isomap_simple_grid(): # Isomap should preserve distances when all neighbors are used N_per_side = 5 Npts = N_per_side ** 2 n_neighbors = Npts - 1 # grid of equidistant points in 2D, n_components = n_dim X = np.array(list(product(range(N_per_side), repeat=2))) # distances from each point to all others G = neighbors.kneighbors_graph(X, n_neighbors, mode='distance').toarray() for eigen_solver in eigen_solvers: for path_method in path_methods: clf = manifold.Isomap(n_neighbors=n_neighbors, n_components=2, eigen_solver=eigen_solver, path_method=path_method) clf.fit(X) G_iso = neighbors.kneighbors_graph(clf.embedding_, n_neighbors, mode='distance').toarray() assert_array_almost_equal(G, G_iso)
Example #21
Source File: test_isomap.py From Mastering-Elasticsearch-7.0 with MIT License | 5 votes |
def test_isomap_reconstruction_error(): # Same setup as in test_isomap_simple_grid, with an added dimension N_per_side = 5 Npts = N_per_side ** 2 n_neighbors = Npts - 1 # grid of equidistant points in 2D, n_components = n_dim X = np.array(list(product(range(N_per_side), repeat=2))) # add noise in a third dimension rng = np.random.RandomState(0) noise = 0.1 * rng.randn(Npts, 1) X = np.concatenate((X, noise), 1) # compute input kernel G = neighbors.kneighbors_graph(X, n_neighbors, mode='distance').toarray() centerer = preprocessing.KernelCenterer() K = centerer.fit_transform(-0.5 * G ** 2) for eigen_solver in eigen_solvers: for path_method in path_methods: clf = manifold.Isomap(n_neighbors=n_neighbors, n_components=2, eigen_solver=eigen_solver, path_method=path_method) clf.fit(X) # compute output kernel G_iso = neighbors.kneighbors_graph(clf.embedding_, n_neighbors, mode='distance').toarray() K_iso = centerer.fit_transform(-0.5 * G_iso ** 2) # make sure error agrees reconstruction_error = np.linalg.norm(K - K_iso) / Npts assert_almost_equal(reconstruction_error, clf.reconstruction_error())
Example #22
Source File: test_neighbors.py From Mastering-Elasticsearch-7.0 with MIT License | 5 votes |
def test_not_fitted_error_gets_raised(): X = [[1]] neighbors_ = neighbors.NearestNeighbors() assert_raises(NotFittedError, neighbors_.kneighbors_graph, X) assert_raises(NotFittedError, neighbors_.radius_neighbors_graph, X)
Example #23
Source File: test_neighbors.py From Mastering-Elasticsearch-7.0 with MIT License | 5 votes |
def test_kneighbors_graph(): # Test kneighbors_graph to build the k-Nearest Neighbor graph. X = np.array([[0, 1], [1.01, 1.], [2, 0]]) # n_neighbors = 1 A = neighbors.kneighbors_graph(X, 1, mode='connectivity', include_self=True) assert_array_equal(A.toarray(), np.eye(A.shape[0])) A = neighbors.kneighbors_graph(X, 1, mode='distance') assert_array_almost_equal( A.toarray(), [[0.00, 1.01, 0.], [1.01, 0., 0.], [0.00, 1.40716026, 0.]]) # n_neighbors = 2 A = neighbors.kneighbors_graph(X, 2, mode='connectivity', include_self=True) assert_array_equal( A.toarray(), [[1., 1., 0.], [1., 1., 0.], [0., 1., 1.]]) A = neighbors.kneighbors_graph(X, 2, mode='distance') assert_array_almost_equal( A.toarray(), [[0., 1.01, 2.23606798], [1.01, 0., 1.40716026], [2.23606798, 1.40716026, 0.]]) # n_neighbors = 3 A = neighbors.kneighbors_graph(X, 3, mode='connectivity', include_self=True) assert_array_almost_equal( A.toarray(), [[1, 1, 1], [1, 1, 1], [1, 1, 1]])
Example #24
Source File: test_neighbors.py From Mastering-Elasticsearch-7.0 with MIT License | 5 votes |
def test_kneighbors_graph_sparse(seed=36): # Test kneighbors_graph to build the k-Nearest Neighbor graph # for sparse input. rng = np.random.RandomState(seed) X = rng.randn(10, 10) Xcsr = csr_matrix(X) for n_neighbors in [1, 2, 3]: for mode in ["connectivity", "distance"]: assert_array_almost_equal( neighbors.kneighbors_graph(X, n_neighbors, mode=mode).toarray(), neighbors.kneighbors_graph(Xcsr, n_neighbors, mode=mode).toarray())
Example #25
Source File: test_neighbors.py From Mastering-Elasticsearch-7.0 with MIT License | 5 votes |
def test_non_euclidean_kneighbors(): rng = np.random.RandomState(0) X = rng.rand(5, 5) # Find a reasonable radius. dist_array = pairwise_distances(X).flatten() np.sort(dist_array) radius = dist_array[15] # Test kneighbors_graph for metric in ['manhattan', 'chebyshev']: nbrs_graph = neighbors.kneighbors_graph( X, 3, metric=metric, mode='connectivity', include_self=True).toarray() nbrs1 = neighbors.NearestNeighbors(3, metric=metric).fit(X) assert_array_equal(nbrs_graph, nbrs1.kneighbors_graph(X).toarray()) # Test radiusneighbors_graph for metric in ['manhattan', 'chebyshev']: nbrs_graph = neighbors.radius_neighbors_graph( X, radius, metric=metric, mode='connectivity', include_self=True).toarray() nbrs1 = neighbors.NearestNeighbors(metric=metric, radius=radius).fit(X) assert_array_equal(nbrs_graph, nbrs1.radius_neighbors_graph(X).A) # Raise error when wrong parameters are supplied, X_nbrs = neighbors.NearestNeighbors(3, metric='manhattan') X_nbrs.fit(X) assert_raises(ValueError, neighbors.kneighbors_graph, X_nbrs, 3, metric='euclidean') X_nbrs = neighbors.NearestNeighbors(radius=radius, metric='manhattan') X_nbrs.fit(X) assert_raises(ValueError, neighbors.radius_neighbors_graph, X_nbrs, radius, metric='euclidean')
Example #26
Source File: test_neighbors.py From Mastering-Elasticsearch-7.0 with MIT License | 5 votes |
def test_k_and_radius_neighbors_train_is_not_query(): # Test kneighbors et.al when query is not training data for algorithm in ALGORITHMS: nn = neighbors.NearestNeighbors(n_neighbors=1, algorithm=algorithm) X = [[0], [1]] nn.fit(X) test_data = [[2], [1]] # Test neighbors. dist, ind = nn.kneighbors(test_data) assert_array_equal(dist, [[1], [0]]) assert_array_equal(ind, [[1], [1]]) dist, ind = nn.radius_neighbors([[2], [1]], radius=1.5) check_object_arrays(dist, [[1], [1, 0]]) check_object_arrays(ind, [[1], [0, 1]]) # Test the graph variants. assert_array_equal( nn.kneighbors_graph(test_data).A, [[0., 1.], [0., 1.]]) assert_array_equal( nn.kneighbors_graph([[2], [1]], mode='distance').A, np.array([[0., 1.], [0., 0.]])) rng = nn.radius_neighbors_graph([[2], [1]], radius=1.5) assert_array_equal(rng.A, [[0, 1], [1, 1]])
Example #27
Source File: test_neighbors.py From Mastering-Elasticsearch-7.0 with MIT License | 5 votes |
def test_include_self_neighbors_graph(): # Test include_self parameter in neighbors_graph X = [[2, 3], [4, 5]] kng = neighbors.kneighbors_graph(X, 1, include_self=True).A kng_not_self = neighbors.kneighbors_graph(X, 1, include_self=False).A assert_array_equal(kng, [[1., 0.], [0., 1.]]) assert_array_equal(kng_not_self, [[0., 1.], [1., 0.]]) rng = neighbors.radius_neighbors_graph(X, 5.0, include_self=True).A rng_not_self = neighbors.radius_neighbors_graph( X, 5.0, include_self=False).A assert_array_equal(rng, [[1., 1.], [1., 1.]]) assert_array_equal(rng_not_self, [[0., 1.], [1., 0.]])
Example #28
Source File: test_neighbors.py From Mastering-Elasticsearch-7.0 with MIT License | 5 votes |
def test_knn_forcing_backend(backend, algorithm): # Non-regression test which ensure the knn methods are properly working # even when forcing the global joblib backend. with parallel_backend(backend): X, y = datasets.make_classification(n_samples=30, n_features=5, n_redundant=0, random_state=0) X_train, X_test, y_train, y_test = train_test_split(X, y) clf = neighbors.KNeighborsClassifier(n_neighbors=3, algorithm=algorithm, n_jobs=3) clf.fit(X_train, y_train) clf.predict(X_test) clf.kneighbors(X_test) clf.kneighbors_graph(X_test, mode='distance').toarray()
Example #29
Source File: baseline_clustering.py From cdp with MIT License | 5 votes |
def hierarchy(feat, n_clusters=2, knn=30): from sklearn.neighbors import kneighbors_graph knn_graph = kneighbors_graph(feat, knn, include_self=False) hierarchy = cluster.AgglomerativeClustering(n_clusters=n_clusters, connectivity=knn_graph, linkage='ward').fit(feat) return hierarchy.labels_
Example #30
Source File: MCFS.py From fsfc with MIT License | 5 votes |
def _calc_scores(self, x): graph = kneighbors_graph( x, n_neighbors=self.p, ) # Construct the heat matrix w = np.zeros([x.shape[0], x.shape[0]]) rows, cols = graph.nonzero() for i, j in zip(rows, cols): w[i, j] = math.exp(-np.linalg.norm(x[i] - x[j])**2/self.sigma) # Compute degree and Laplacian matrices degree_vector = np.sum(w, 1) degree = np.diag(degree_vector) laplacian = degree - w # Solve the eigen-problem values, vectors = eigh(laplacian, degree) smallest = vectors[:, 0:self.clusters].T # Find coefficients for each cluster coefs = [] for i in range(self.clusters): this_coefs = self._create_regressor().fit(x, smallest[i]).coef_ coefs.append(this_coefs) coefs = np.array(coefs) # Compute MCFS-scores scores = np.max(coefs, 0) return scores