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 forkneighbors queries.

radiusfloat, default=1.0

Range of parameter space to use by default forradius_neighborsqueries.

algorithm{‘auto’, ‘ball_tree’, ‘kd_tree’, ‘brute’}, default=’auto’

Algorithm used to compute the nearest neighbors:

  • ‘ball_tree’ will useBallTree

  • ‘kd_tree’ will useKDTree

  • ‘brute’ will use a brute-force search.

  • ‘auto’ will attempt to decide the most appropriate algorithmbased on the values passed tofit method.

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 indistance_metrics for 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.None means 1 unless in ajoblib.parallel_backend context.-1 means 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 whenXhas feature names that are all strings.

Added in version 1.0.

n_samples_fit_int

Number of samples in the fitted data.

See also

KNeighborsClassifier

Classifier implementing the k-nearest neighbors vote.

RadiusNeighborsClassifier

Classifier implementing a vote among neighbors within a given radius.

KNeighborsRegressor

Regression based on k-nearest neighbors.

RadiusNeighborsRegressor

Regression based on neighbors within a fixed radius.

BallTree

Space 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 ofalgorithm andleaf_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

AMetadataRequest encapsulatingrouting 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.Formetric='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_fit is the number of samples in the fitted data.A[i,j] gives the weight of the edge connectingi toj.The matrix is of CSR format.

See also

NearestNeighbors.radius_neighbors_graph

Compute 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 sizeradius around 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. Ifreturn_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 ifreturn_distance=True. The distance values are computed accordingto themetric constructor 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 sizeradius around 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_neighbors returns 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_fit is the number of samples in the fitted data.A[i,j] gives the weight of the edge connectingi toj.The matrix is of CSR format.

See also

kneighbors_graph

Compute 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 asPipeline). 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.

Gallery examples#

Approximate nearest neighbors in TSNE

Approximate nearest neighbors in TSNE