sklearn.neighbors.NearestNeighbors源码笔记

来源:互联网 发布:软件站 编辑:程序博客网 时间:2024/06/06 20:16

参数:
n_neighbors:整数,可选(默认值为5),用k_neighbors查找的近邻数。
radius:浮点数,可选(默认值为1.0)
algorithm:{‘auto’,’ball_tree’,’kd_tree’,’brute’},可选
算法用来计算临近的值,‘ball_tree’会用BallTree,’kd_tree’会用KDtree,’brute’会用burte-force来搜寻。
‘auto’会基于fit方法来决定大部分相似情况下合适的算法。
NoTe:如果fit用在稀疏(矩阵)的输入上,那么将会覆盖参数的设置,而使用brute force.
leaf_size:整数,可选(默认值为30)
Leaf size是针对BallTree 和 KDTree的。
它将会影响构建模型和搜寻的速度,以及存储的树的内存。可选值将决定该问题的类型。
p:整数,可选(默认值为2)。是sklearn.metrics.pairwise.pairwise_distance里的闵可夫斯基度量参数,当 p=1时,
使用曼哈顿距离。当p=2时,使用的是欧氏距离。对于任意的p,使用闵可夫斯基距离。
metric:字符或者调用,默认值为‘minkowski’
metric用来计算距离。scikit-learn或者scipy.spatial.distance中的任何距离都可以被使用。
如果距离是可选函数,每一对实例都会返回相应的记录值。(无法计算矩阵间的距离。)
metric_params:字典,可选(默认值为1)
关于距离公式中其他的关键值讨论。
n_jobs:int,可选(默认值为1)
表示搜寻近邻值时并行作业的数量 。如果为-1,那么并行数量则会被设定为CPU的内核数。
(只针对k_neighbors 和kneighbors_graph方法)

examples:
Examples

import numpy as np
from sklearn.neighbors import NearestNeighbors
samples = [[0, 0, 2], [1, 0, 0], [0, 0, 1]]
neigh = NearestNeighbors(2, 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]) 用X作为训练集拟合模型
get_params([deep]) 得到相应估计的参数
kneighbors([X,n_neighbors,return_distance]) 找出k个临近点
kneighbors_graph([X,n_neighbors,mode]) 计算X中k个临近点(列表)对应的权重
radius_neighbors_graph([X,radius,mode]) 计算X中临近点(列表)对应的权重
radius_neighbors([X,radius,return_distance]) 找出半径内的k个临近点
set_params(**params) 设置当前估计的参数

Examples:

X = [[0], [3], [1]]
from sklearn.neighbors import NearestNeighbors
neigh = NearestNeighbors(n_neighbors=2)
neigh.fit(X)
NearestNeighbors(algorithm=’auto’, leaf_size=30, …)
A = neigh.kneighbors_graph(X)
A.toarray()
array([[ 1., 0., 1.],
[ 0., 1., 1.],
[ 1., 0., 1.]])

Notes:由于每个点的临近数不必相等,所以混合搜寻点的结果不能拟合一个标准化的数组。为了提高效率,在所有对象都是一维数组时,radius_neighbors返回数组对象。

Example:
在下面的例子中,我们从一个数组中构造一个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(algorithm=’auto’, leaf_size=30, …)
rng = neigh.radius_neighbors([[1., 1., 1.]])
print(np.asarray(rng[0][0])) —>半径以内的距离,1.5是第二个,0.5是第三个
[ 1.5 0.5]
print(np.asarray(rng[1][0])) —>临近点在样本中的位置,1是第二个,2是第三个
[1 2]

方法::radius_neighbors_graph(X=None, radius=None, mode=’connectivity’)
Examples

>

X = [[0], [3], [1]]
from sklearn.neighbors import NearestNeighbors
neigh = NearestNeighbors(radius=1.5)
neigh.fit(X)
NearestNeighbors(algorithm=’auto’, leaf_size=30, …)
A = neigh.radius_neighbors_graph(X)
A.toarray()
array([[ 1., 0., 1.],
[ 0., 1., 0.],
[ 1., 0., 1.]])

0 0
原创粉丝点击