NearestNeighbors#
- classsklearn.neighbors.NearestNeighbors(*,n_neighbors=5,radius=1.0,algorithm='auto',leaf_size=30,metric='minkowski',p=2,metric_params=None,n_jobs=None)[source]#
Unsupervised learner for implementing neighbor searches.
Read more in theUser Guide.
Added in version 0.9.
- Parameters:
- n_neighborsint, default=5
Number of neighbors to use by default for
kneighborsqueries.- radiusfloat, default=1.0
Range of parameter space to use by default for
radius_neighborsqueries.- algorithm{‘auto’, ‘ball_tree’, ‘kd_tree’, ‘brute’}, default=’auto’
Algorithm used to compute the nearest neighbors:
‘ball_tree’ will use
BallTree‘kd_tree’ will use
KDTree‘brute’ will use a brute-force search.
‘auto’ will attempt to decide the most appropriate algorithmbased on the values passed to
fitmethod.
Note: fitting on sparse input will override the setting ofthis parameter, using brute force.
- leaf_sizeint, default=30
Leaf size passed to BallTree or KDTree. This can affect thespeed of the construction and query, as well as the memoryrequired to store the tree. The optimal value depends on thenature of the problem.
- metricstr or callable, default=’minkowski’
Metric to use for distance computation. Default is “minkowski”, whichresults in the standard Euclidean distance when p = 2. See thedocumentation ofscipy.spatial.distance andthe metrics listed in
distance_metricsfor valid metricvalues.If metric is “precomputed”, X is assumed to be a distance matrix andmust be square during fit. X may be asparse graph, in whichcase only “nonzero” elements may be considered neighbors.
If metric is a callable function, it takes two arrays representing 1Dvectors as inputs and must return one value indicating the distancebetween those vectors. This works for Scipy’s metrics, but is lessefficient than passing the metric name as a string.
- pfloat (positive), default=2
Parameter for the Minkowski metric fromsklearn.metrics.pairwise.pairwise_distances. When p = 1, this isequivalent to using manhattan_distance (l1), and euclidean_distance(l2) for p = 2. For arbitrary p, minkowski_distance (l_p) is used.
- metric_paramsdict, default=None
Additional keyword arguments for the metric function.
- n_jobsint, default=None
The number of parallel jobs to run for neighbors search.
Nonemeans 1 unless in ajoblib.parallel_backendcontext.-1means using all processors. SeeGlossaryfor more details.
- Attributes:
- effective_metric_str
Metric used to compute distances to neighbors.
- effective_metric_params_dict
Parameters for the metric used to compute distances to neighbors.
- n_features_in_int
Number of features seen duringfit.
Added in version 0.24.
- feature_names_in_ndarray of shape (
n_features_in_,) Names of features seen duringfit. Defined only when
Xhas feature names that are all strings.Added in version 1.0.
- n_samples_fit_int
Number of samples in the fitted data.
See also
KNeighborsClassifierClassifier implementing the k-nearest neighbors vote.
RadiusNeighborsClassifierClassifier implementing a vote among neighbors within a given radius.
KNeighborsRegressorRegression based on k-nearest neighbors.
RadiusNeighborsRegressorRegression based on neighbors within a fixed radius.
BallTreeSpace partitioning data structure for organizing points in a multi-dimensional space, used for nearest neighbor search.
Notes
SeeNearest Neighbors in the online documentationfor a discussion of the choice of
algorithmandleaf_size.https://en.wikipedia.org/wiki/K-nearest_neighbors_algorithm
Examples
>>>importnumpyasnp>>>fromsklearn.neighborsimportNearestNeighbors>>>samples=[[0,0,2],[1,0,0],[0,0,1]]>>>neigh=NearestNeighbors(n_neighbors=2,radius=0.4)>>>neigh.fit(samples)NearestNeighbors(...)>>>neigh.kneighbors([[0,0,1.3]],2,return_distance=False)array([[2, 0]]...)>>>nbrs=neigh.radius_neighbors(...[[0,0,1.3]],0.4,return_distance=False...)>>>np.asarray(nbrs[0][0])array(2)
- fit(X,y=None)[source]#
Fit the nearest neighbors estimator from the training dataset.
- Parameters:
- X{array-like, sparse matrix} of shape (n_samples, n_features) or (n_samples, n_samples) if metric=’precomputed’
Training data.
- yIgnored
Not used, present for API consistency by convention.
- Returns:
- selfNearestNeighbors
The fitted nearest neighbors estimator.
- get_metadata_routing()[source]#
Get metadata routing of this object.
Please checkUser Guide on how the routingmechanism works.
- Returns:
- routingMetadataRequest
A
MetadataRequestencapsulatingrouting information.
- get_params(deep=True)[source]#
Get parameters for this estimator.
- Parameters:
- deepbool, default=True
If True, will return the parameters for this estimator andcontained subobjects that are estimators.
- Returns:
- paramsdict
Parameter names mapped to their values.
- kneighbors(X=None,n_neighbors=None,return_distance=True)[source]#
Find the K-neighbors of a point.
Returns indices of and distances to the neighbors of each point.
- Parameters:
- X{array-like, sparse matrix}, shape (n_queries, n_features), or (n_queries, n_indexed) if metric == ‘precomputed’, default=None
The query point or points.If not provided, neighbors of each indexed point are returned.In this case, the query point is not considered its own neighbor.
- n_neighborsint, default=None
Number of neighbors required for each sample. The default is thevalue passed to the constructor.
- return_distancebool, default=True
Whether or not to return the distances.
- Returns:
- neigh_distndarray of shape (n_queries, n_neighbors)
Array representing the lengths to points, only present ifreturn_distance=True.
- neigh_indndarray of shape (n_queries, n_neighbors)
Indices of the nearest points in the population matrix.
Examples
In the following example, we construct a NearestNeighborsclass from an array representing our data set and ask who’sthe closest point to [1,1,1]
>>>samples=[[0.,0.,0.],[0.,.5,0.],[1.,1.,.5]]>>>fromsklearn.neighborsimportNearestNeighbors>>>neigh=NearestNeighbors(n_neighbors=1)>>>neigh.fit(samples)NearestNeighbors(n_neighbors=1)>>>print(neigh.kneighbors([[1.,1.,1.]]))(array([[0.5]]), array([[2]]))
As you can see, it returns [[0.5]], and [[2]], which means that theelement is at distance 0.5 and is the third element of samples(indexes start at 0). You can also query for multiple points:
>>>X=[[0.,1.,0.],[1.,0.,1.]]>>>neigh.kneighbors(X,return_distance=False)array([[1], [2]]...)
- kneighbors_graph(X=None,n_neighbors=None,mode='connectivity')[source]#
Compute the (weighted) graph of k-Neighbors for points in X.
- Parameters:
- X{array-like, sparse matrix} of shape (n_queries, n_features), or (n_queries, n_indexed) if metric == ‘precomputed’, default=None
The query point or points.If not provided, neighbors of each indexed point are returned.In this case, the query point is not considered its own neighbor.For
metric='precomputed'the shape should be(n_queries, n_indexed). Otherwise the shape should be(n_queries, n_features).- n_neighborsint, default=None
Number of neighbors for each sample. The default is the valuepassed to the constructor.
- mode{‘connectivity’, ‘distance’}, default=’connectivity’
Type of returned matrix: ‘connectivity’ will return theconnectivity matrix with ones and zeros, in ‘distance’ theedges are distances between points, type of distancedepends on the selected metric parameter inNearestNeighbors class.
- Returns:
- Asparse-matrix of shape (n_queries, n_samples_fit)
n_samples_fitis the number of samples in the fitted data.A[i,j]gives the weight of the edge connectingitoj.The matrix is of CSR format.
See also
NearestNeighbors.radius_neighbors_graphCompute the (weighted) graph of Neighbors for points in X.
Examples
>>>X=[[0],[3],[1]]>>>fromsklearn.neighborsimportNearestNeighbors>>>neigh=NearestNeighbors(n_neighbors=2)>>>neigh.fit(X)NearestNeighbors(n_neighbors=2)>>>A=neigh.kneighbors_graph(X)>>>A.toarray()array([[1., 0., 1.], [0., 1., 1.], [1., 0., 1.]])
- radius_neighbors(X=None,radius=None,return_distance=True,sort_results=False)[source]#
Find the neighbors within a given radius of a point or points.
Return the indices and distances of each point from the datasetlying in a ball with size
radiusaround the points of the queryarray. Points lying on the boundary are included in the results.The result points arenot necessarily sorted by distance to theirquery point.
- Parameters:
- X{array-like, sparse matrix} of (n_samples, n_features), default=None
The query point or points.If not provided, neighbors of each indexed point are returned.In this case, the query point is not considered its own neighbor.
- radiusfloat, default=None
Limiting distance of neighbors to return. The default is the valuepassed to the constructor.
- return_distancebool, default=True
Whether or not to return the distances.
- sort_resultsbool, default=False
If True, the distances and indices will be sorted by increasingdistances before being returned. If False, the results may notbe sorted. If
return_distance=False, settingsort_results=Truewill result in an error.Added in version 0.22.
- Returns:
- neigh_distndarray of shape (n_samples,) of arrays
Array representing the distances to each point, only present if
return_distance=True. The distance values are computed accordingto themetricconstructor parameter.- neigh_indndarray of shape (n_samples,) of arrays
An array of arrays of indices of the approximate nearest pointsfrom the population matrix that lie within a ball of size
radiusaround the query points.
Notes
Because the number of neighbors of each point is not necessarilyequal, the results for multiple query points cannot be fit in astandard data array.For efficiency,
radius_neighborsreturns arrays of objects, whereeach object is a 1D array of indices or distances.Examples
In the following example, we construct a NeighborsClassifierclass from an array representing our data set and ask who’sthe closest point to [1, 1, 1]:
>>>importnumpyasnp>>>samples=[[0.,0.,0.],[0.,.5,0.],[1.,1.,.5]]>>>fromsklearn.neighborsimportNearestNeighbors>>>neigh=NearestNeighbors(radius=1.6)>>>neigh.fit(samples)NearestNeighbors(radius=1.6)>>>rng=neigh.radius_neighbors([[1.,1.,1.]])>>>print(np.asarray(rng[0][0]))[1.5 0.5]>>>print(np.asarray(rng[1][0]))[1 2]
The first array returned contains the distances to all points whichare closer than 1.6, while the second array returned contains theirindices. In general, multiple points can be queried at the same time.
- radius_neighbors_graph(X=None,radius=None,mode='connectivity',sort_results=False)[source]#
Compute the (weighted) graph of Neighbors for points in X.
Neighborhoods are restricted the points at a distance lower thanradius.
- Parameters:
- X{array-like, sparse matrix} of shape (n_samples, n_features), default=None
The query point or points.If not provided, neighbors of each indexed point are returned.In this case, the query point is not considered its own neighbor.
- radiusfloat, default=None
Radius of neighborhoods. The default is the value passed to theconstructor.
- mode{‘connectivity’, ‘distance’}, default=’connectivity’
Type of returned matrix: ‘connectivity’ will return theconnectivity matrix with ones and zeros, in ‘distance’ theedges are distances between points, type of distancedepends on the selected metric parameter inNearestNeighbors class.
- sort_resultsbool, default=False
If True, in each row of the result, the non-zero entries will besorted by increasing distances. If False, the non-zero entries maynot be sorted. Only used with mode=’distance’.
Added in version 0.22.
- Returns:
- Asparse-matrix of shape (n_queries, n_samples_fit)
n_samples_fitis the number of samples in the fitted data.A[i,j]gives the weight of the edge connectingitoj.The matrix is of CSR format.
See also
kneighbors_graphCompute the (weighted) graph of k-Neighbors for points in X.
Examples
>>>X=[[0],[3],[1]]>>>fromsklearn.neighborsimportNearestNeighbors>>>neigh=NearestNeighbors(radius=1.5)>>>neigh.fit(X)NearestNeighbors(radius=1.5)>>>A=neigh.radius_neighbors_graph(X)>>>A.toarray()array([[1., 0., 1.], [0., 1., 0.], [1., 0., 1.]])
- set_params(**params)[source]#
Set the parameters of this estimator.
The method works on simple estimators as well as on nested objects(such as
Pipeline). The latter haveparameters of the form<component>__<parameter>so that it’spossible to update each component of a nested object.- Parameters:
- **paramsdict
Estimator parameters.
- Returns:
- selfestimator instance
Estimator instance.
