RadiusNeighborsClassifier#

class sklearn.neighbors.RadiusNeighborsClassifier(radius=1.0, *, weights='uniform', algorithm='auto', leaf_size=30, p=2, metric='minkowski', outlier_label=None, metric_params=None, n_jobs=None)#

分类器在给定半径内的邻居之间进行投票。

更多信息请参阅 用户指南

Parameters:
radiusfloat, default=1.0

默认用于 radius_neighbors 查询的参数空间范围。

weights{‘uniform’, ‘distance’}, callable or None, default=’uniform’

用于预测的权重函数。可能的值:

  • ‘uniform’ : 均匀权重。每个邻域中的所有点权重相同。

  • ‘distance’ : 按距离的倒数对点进行加权。在这种情况下,查询点的近邻将比远邻具有更大的影响。

  • [callable] : 用户定义的函数,接受距离数组并返回相同形状的权重数组。

默认使用均匀权重。

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

用于计算最近邻的算法:

  • ‘ball_tree’ 将使用 BallTree

  • ‘kd_tree’ 将使用 KDTree

  • ‘brute’ 将使用暴力搜索。

  • ‘auto’ 将尝试根据传递给 fit 方法的值决定最合适的算法。

注意:在稀疏输入上拟合将覆盖此参数的设置,使用暴力搜索。

leaf_sizeint, default=30

传递给 BallTree 或 KDTree 的叶子大小。这会影响构建和查询的速度,以及存储树所需的内存。最佳值取决于问题的性质。

pfloat, default=2

闵可夫斯基度量的幂参数。当 p = 1 时,这相当于使用曼哈顿距离(l1),当 p = 2 时,相当于使用欧几里得距离(l2)。对于任意 p,使用闵可夫斯基距离(l_p)。此参数应为正数。

metricstr or callable, default=’minkowski’

用于距离计算的度量。默认是 “minkowski”,当 p = 2 时,结果为标准的欧几里得距离。请参阅 scipy.spatial.distance 的文档和 distance_metrics 中列出的度量值。

如果度量是 “precomputed”,则假定 X 是距离矩阵,并且在拟合时必须是方阵。X 可以是 稀疏图 ,在这种情况下,只考虑 “非零” 元素作为邻居。

如果度量是可调用函数,它接受两个表示一维向量的数组作为输入,并返回一个值,表示这两个向量之间的距离。这适用于 Scipy 的度量,但不如将度量名称作为字符串传递高效。

outlier_label{manual label, ‘most_frequent’}, default=None

给定半径内没有邻居的样本(离群样本)的标签。

  • manual label: str 或 int 标签(应与 y 的类型相同)或用于多输出的手动标签列表。

  • ‘most_frequent’ : 将 y 中最频繁的标签分配给离群值。

  • None : 当检测到任何离群值时,将引发 ValueError。

离群标签应从唯一的 ‘Y’ 标签中选择。如果指定了不同的值,将发出警告,并且所有离群值的类别概率将分配为 0。

metric_paramsdict, default=None

度量函数的额外关键字参数。

n_jobsint, default=None

用于邻居搜索的并行作业数。 None 表示 1,除非在 joblib.parallel_backend 上下文中。 -1 表示使用所有处理器。有关更多详细信息,请参阅 Glossary

Attributes:
classes_ndarray of shape (n_classes,)

分类器已知的类别标签。

effective_metric_str or callable

使用的距离度量。将与 metric 参数相同或其同义词,例如,如果 metric 参数设置为 ‘minkowski’ 且 p 参数设置为 2,则为 ‘euclidean’。

effective_metric_params_dict

度量函数的额外关键字参数。对于大多数度量,将与 metric_params 参数相同,但如果 effective_metric_ 属性设置为 ‘minkowski’,则可能还包含 p 参数值。

n_features_in_int

fit 过程中看到的特征数。

Added in version 0.24.

feature_names_in_ndarray of shape ( n_features_in_ ,)

fit 过程中看到的特征名称。仅当 X 的特征名称均为字符串时定义。

Added in version 1.0.

n_samples_fit_int

拟合数据中的样本数。

outlier_label_int or array-like of shape (n_class,)

给定半径内没有邻居的样本(离群样本)的标签。

outputs_2d_bool

y 的形状为 (n_samples, ) 或 (n_samples, 1) 时为 False,否则为 True。

See also

KNeighborsClassifier

实现 k-最近邻投票的分类器。

RadiusNeighborsRegressor

基于固定半径内邻居的回归。

KNeighborsRegressor

基于 k-最近邻的回归。

NearestNeighbors

实现邻居搜索的无监督学习器。

Notes

有关 algorithmleaf_size 选择的讨论,请参阅在线文档中的 Nearest Neighbors

https://en.wikipedia.org/wiki/K-nearest_neighbor_algorithm

Examples

>>> X = [[0], [1], [2], [3]]
>>> y = [0, 0, 1, 1]
>>> from sklearn.neighbors import RadiusNeighborsClassifier
>>> neigh = RadiusNeighborsClassifier(radius=1.0)
>>> neigh.fit(X, y)
RadiusNeighborsClassifier(...)
>>> print(neigh.predict([[1.5]]))
[0]
>>> print(neigh.predict_proba([[1.0]]))
[[0.66666667 0.33333333]]
fit(X, y)#

拟合从训练数据集得到的半径邻域分类器。

Parameters:
X{array-like, sparse matrix},形状为 (n_samples, n_features) 或 如果 metric=’precomputed’ 则为 (n_samples, n_samples)

训练数据。

y{array-like, sparse matrix},形状为 (n_samples,) 或 (n_samples, n_outputs)

目标值。

Returns:
selfRadiusNeighborsClassifier

拟合的半径邻域分类器。

get_metadata_routing()#

获取此对象的元数据路由。

请查看 用户指南 以了解路由机制的工作原理。

Returns:
routingMetadataRequest

MetadataRequest 封装的 路由信息。

get_params(deep=True)#

获取此估计器的参数。

Parameters:
deepbool, 默认=True

如果为True,将返回此估计器和包含的子对象(也是估计器)的参数。

Returns:
paramsdict

参数名称映射到它们的值。

predict(X)#

预测提供的数据的类别标签。

Parameters:
X{array-like, sparse matrix} 形状为 (n_queries, n_features), 或者如果 metric == ‘precomputed’ 则为 (n_queries, n_indexed)

测试样本。

Returns:
yndarray 形状为 (n_queries,) 或 (n_queries, n_outputs)

每个数据样本的类别标签。

predict_proba(X)#

返回测试数据X的概率估计。

Parameters:
X{array-like, sparse matrix},形状为 (n_queries, n_features), 或者如果 metric == ‘precomputed’,形状为 (n_queries, n_indexed)

测试样本。

Returns:
pndarray,形状为 (n_queries, n_classes),或者如果 n_outputs > 1,则为这样的数组的列表。

输入样本的类概率。类按字典顺序排列。

radius_neighbors(X=None, radius=None, return_distance=True, sort_results=False)#

查找给定半径内的点的邻居。

返回数据集中每个点在查询数组的点周围半径为 radius 的球内的索引和距离。位于边界上的点包含在结果中。

结果点与其查询点的距离不一定按升序排序。

Parameters:
X{array-like, sparse matrix} of (n_samples, n_features), default=None

查询点或点。 如果未提供,则返回每个索引点的邻居。 在这种情况下,查询点不视为其自身的邻居。

radiusfloat, default=None

返回邻居的限制距离。默认值是在构造函数中传递的值。

return_distancebool, default=True

是否返回距离。

sort_resultsbool, default=False

如果为True,距离和索引将在返回前按升序排序。如果为False,结果可能未排序。如果 return_distance=False ,设置 sort_results=True 将导致错误。

Added in version 0.22.

Returns:
neigh_distndarray of shape (n_samples,) of arrays

表示到每个点的距离的数组,仅在 return_distance=True 时存在。距离值根据 metric 构造函数参数计算。

neigh_indndarray of shape (n_samples,) of arrays

一个数组的数组,包含来自总体矩阵的近似最近点的索引,这些点位于查询点周围半径为 radius 的球内。

Notes

因为每个点的邻居数量不一定相等,多个查询点的结果不能适应标准数据数组。 为了效率, radius_neighbors 返回对象数组,其中每个对象是索引或距离的1D数组。

Examples

在以下示例中,我们从一个表示数据集的数组构造一个NeighborsClassifier类,并询问谁是[1, 1, 1]最近的点:

>>> import numpy as np
>>> samples = [[0., 0., 0.], [0., .5, 0.], [1., 1., .5]]
>>> from sklearn.neighbors import NearestNeighbors
>>> 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]

第一个返回的数组包含所有距离小于1.6的点的距离,而第二个返回的数组包含它们的索引。通常,可以同时查询多个点。

radius_neighbors_graph(X=None, radius=None, mode='connectivity', sort_results=False)#

计算X中点的(加权)邻居图。

邻居限制在距离小于半径的点。

Parameters:
X{array-like, sparse matrix},形状为 (n_samples, n_features),默认=None

查询点或点。 如果未提供,则返回每个索引点的邻居。 在这种情况下,查询点不被视为其自身的邻居。

radiusfloat,默认=None

邻域的半径。默认值是在构造函数中传递的值。

mode{‘connectivity’, ‘distance’},默认=’connectivity’

返回矩阵的类型:’connectivity’ 将返回带有1和0的连通性矩阵,在’distance’中, 边是点之间的距离,距离的类型取决于NearestNeighbors类中选择的度量参数。

sort_resultsbool,默认=False

如果为True,结果中的每一行的非零条目将按增加的距离排序。如果为False,非零条目可能 不会排序。仅在mode=’distance’时使用。

Added in version 0.22.

Returns:
A形状为 (n_queries, n_samples_fit) 的稀疏矩阵

n_samples_fit 是拟合数据中的样本数量。 A[i, j] 给出连接 ij 的边的权重。 矩阵为CSR格式。

See also

kneighbors_graph

计算X中点的(加权)k-邻居图。

Examples

>>> X = [[0], [3], [1]]
>>> from sklearn.neighbors import NearestNeighbors
>>> 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.]])
score(X, y, sample_weight=None)#

返回给定测试数据和标签的平均准确率。

在多标签分类中,这是子集准确率,这是一个严格的指标,因为你要求每个样本的每个标签集都被正确预测。

Parameters:
X形状为 (n_samples, n_features) 的类数组

测试样本。

y形状为 (n_samples,) 或 (n_samples, n_outputs) 的类数组

` X`的真实标签。

sample_weight形状为 (n_samples,) 的类数组,默认=None

样本权重。

Returns:
scorefloat

self.predict(X) 相对于 y 的平均准确率。

set_params(**params)#

设置此估计器的参数。

该方法适用于简单估计器以及嵌套对象(例如 Pipeline )。后者具有形式为 <component>__<parameter> 的参数,以便可以更新嵌套对象的每个组件。

Parameters:
**paramsdict

估计器参数。

Returns:
selfestimator instance

估计器实例。

set_score_request(*, sample_weight: bool | None | str = '$UNCHANGED$') RadiusNeighborsClassifier#

Request metadata passed to the score method.

Note that this method is only relevant if enable_metadata_routing=True (see sklearn.set_config ). Please see User Guide on how the routing mechanism works.

The options for each parameter are:

  • True : metadata is requested, and passed to score if provided. The request is ignored if metadata is not provided.

  • False : metadata is not requested and the meta-estimator will not pass it to score .

  • None : metadata is not requested, and the meta-estimator will raise an error if the user provides it.

  • str : metadata should be passed to the meta-estimator with this given alias instead of the original name.

The default ( sklearn.utils.metadata_routing.UNCHANGED ) retains the existing request. This allows you to change the request for some parameters and not others.

Added in version 1.3.

Note

This method is only relevant if this estimator is used as a sub-estimator of a meta-estimator, e.g. used inside a Pipeline . Otherwise it has no effect.

Parameters:
sample_weightstr, True, False, or None, default=sklearn.utils.metadata_routing.UNCHANGED

Metadata routing for sample_weight parameter in score .

Returns:
selfobject

The updated object.