sklearn 翻译笔记:KNeighborsClassifier

sklearn.neighbors.KNeighborsClassifier

class  sklearn.neighbors. KNeighborsClassifier ( n_neighbors=5weights=’uniform’algorithm=’auto’leaf_size=30p=2metric=’minkowski’metric_params=Nonen_jobs=1**kwargs ) [source]

实现了K最近邻居投票算法的分类器。

想要了解更多,请看使用手册(英文)。

参数:

n_neighbors : int, 可选参数(默认为 5)

用于kneighbors查询的默认邻居的数量

weights(权重) : str or callable(自定义类型), 可选参数(默认为 ‘uniform’)

用于预测的权重函数。可选参数如下:

  • ‘uniform’ : 统一的权重. 在每一个邻居区域里的点的权重都是一样的。
  • ‘distance’ : 权重点等于他们距离的倒数。使用此函数,更近的邻居对于所预测的点的影响更大。
  • [callable] : 一个用户自定义的方法,此方法接收一个距离的数组,然后返回一个相同形状并且包含权重的数组。

algorithm(算法) : {‘auto’, ‘ball_tree’, ‘kd_tree’, ‘brute’}, 可选参数(默认为 'auto')

计算最近邻居用的算法:

  • ‘ball_tree’ 使用算法 BallTree
  • ‘kd_tree’ 使用算法 KDTree
  • ‘brute’ 使用暴力搜索.
  • ‘auto’ 会基于传入fit方法的内容,选择最合适的算法。

注意: 如果传入fit方法的输入是稀疏的,将会重载参数设置,直接使用暴力搜索。

leaf_size(叶子数量) : int, 可选参数(默认为 30)

传入BallTree或者KDTree算法的叶子数量。此参数会影响构建、查询BallTree或者KDTree的速度,以及存储BallTree或者KDTree所需要的内存大小。 此可选参数根据是否是问题所需选择性使用。

p : integer, 可选参数(默认为 2)

用于Minkowski metric(闵可夫斯基空间)的超参数。p = 1, 相当于使用曼哈顿距离 (l1),p = 2, 相当于使用欧几里得距离(l2)  对于任何 p ,使用的是闵可夫斯基空间(l_p)

metric(矩阵) : string or callable, 默认为 ‘minkowski’

用于树的距离矩阵。默认为闵可夫斯基空间 ,如果和p=2一块使用相当于使用标准欧几里得矩阵. 所有可用的矩阵列表请查询 DistanceMetric 的文档。

metric_params(矩阵参数) : dict, 可选参数(默认为 None)

给矩阵方法使用的其他的关键词参数。

n_jobs : int, 可选参数(默认为 1)

用于搜索邻居的,可并行运行的任务数量。如果为 -1, 任务数量设置为CPU核的数量。不会影响 fit 方法。

注意

关于如何选择algorithm 和 leaf_size参数,请查看Nearest Neighborsi的在线文档。

警告:  根据

Nearest Neighbors算法,如果找到两个邻居,例如邻居k+1和k,他们有着一样的距离但是不一样的标签,最后的结果会根据训练数据的顺序来决定。

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

例子:

>>>
>>> X = [[0], [1], [2], [3]]
>>> y = [0, 0, 1, 1]
>>> from sklearn.neighbors import KNeighborsClassifier
>>> neigh = KNeighborsClassifier(n_neighbors=3)
>>> neigh.fit(X, y) 
KNeighborsClassifier(...)
>>> print(neigh.predict([[1.1]]))
[0]
>>> print(neigh.predict_proba([[0.9]]))
[[ 0.66666667  0.33333333]]

方法:

fit(X, y)使用X作为训练数据,y作为目标值(类似于标签)来拟合模型。
get_params([deep])获取估值器的参数。
kneighbors([X, n_neighbors, return_distance])查找一个或几个点的K个邻居。
kneighbors_graph([X, n_neighbors, mode])计算在X数组中每个点的k邻居的(权重)图。
predict(X)给提供的数据预测对应的标签。
predict_proba(X)返回测试数据X的概率估值。
score(X, y[, sample_weight])返回给定测试数据和标签的平均准确值。
set_params(**params)设置估值器的参数
__init__ ( n_neighbors=5weights=’uniform’algorithm=’auto’leaf_size=30p=2metric=’minkowski’metric_params=Nonen_jobs=1**kwargs ) [source]
fit ( Xy ) [source]

使用X作为训练数据,y作为目标值(标签)拟合模型

Parameters:

X : {类似数组, 稀疏矩阵, BallTree, KDTree}

待训练数据。如果是数组或者矩阵,形状为 [n_samples, n_features],如果矩阵为 ’precomputed', 则形状为 [n_samples, n_samples]。

y : {类似数组, 稀疏矩阵}

形状为[n_samples] 或者 [n_samples, n_outputs]的目标值。

get_params ( deep=True ) [source]

获取估值器的参数.

参数:

deep : boolean, 可选参数

如果为 True, 则返回估值器的参数,以及包含子目标的估值器。

返回值:

params : Mapping String to any

Map变量 [参数值: 值, 参数值: 值, ........]。

kneighbors ( X=Nonen_neighbors=Nonereturn_distance=True ) [source]

查询一个或几个点的K个邻居

返回每个点的下标和到邻居的距离。

参数:

X : array-like, shape (n_query, n_features), or (n_query, n_indexed) if metric == ‘precomputed’

带查询的一个或几个点。如果没有提供,则返回每个有下标的点的邻居们。

n_neighbors : int

邻居数量 (默认为调用构造器时设定的n_neighboes的值).

return_distance : boolean, 可选参数. 默认为 True.

如果为 False,则不会返回距离

返回值:

dist : array

return_distance =True时,返回到每个点的长度

ind : array

邻居区域中最近的几个点的下标。

例子:

在此案例中, 我们构建了一个NeighborsClassifier类。 此类从数组中获取数据,并查询哪个点最接近于[1, 1, 1]

>>>
>>> samples = [[0., 0., 0.], [0., .5, 0.], [1., 1., .5]]
>>> from sklearn.neighbors import NearestNeighbors
>>> neigh = NearestNeighbors(n_neighbors=1)
>>> neigh.fit(samples) 
NearestNeighbors(algorithm='auto', leaf_size=30, ...)
>>> print(neigh.kneighbors([[1., 1., 1.]])) 
(array([[ 0.5]]), array([[2]]...))

如你所见返回值为[[0.5]] 和 [[2]]。意思是此点是距离为0.5并且是样本中的第三个元素 (下标从0开始)。你可以尝试查询多个点:

>>>
>>> X = [[0., 1., 0.], [1., 0., 1.]]
>>> neigh.kneighbors(X, return_distance=False) 
array([[1],
       [2]]...)
kneighbors_graph ( X=Nonen_neighbors=Nonemode=’connectivity’ ) [source]

计算在X数组中每个点的k邻居的(权重)图

参数:

X : 类似数组, 形状(n_query, n_features)。如果矩阵是‘precomputed’,形状为(n_query, n_indexed) 

一个或多个待查询点。如果没有提供,则返回每个有下标的点的邻居们

n_neighbors : int

邻居数量。(默认为调用构造器时设定的n_neighboes的值)。

mode : {‘connectivity’, ‘distance’}, 可选参数

返回矩阵数据类型: ‘connectivity’ 会返回1和0组成的矩阵。 in ‘distance’ 会返回点之间的欧几里得距离。

返回值:

A : CSR格式的稀疏矩阵,形状为 [n_samples, n_samples_fit]

n_samples_fit 是拟合过的数据中样例的数量,其中 A[i, j] 代表i到j的边的权重。

例子:

>>>
>>> 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.]])
predict ( X ) [source]

给提供的数据预测相应的类别标签

参数:

X : 类似数组, 形状(n_query, n_features)。 如果矩阵是‘precomputed’,形状为(n_query, n_indexed) 

待测试样例。

返回值:

y : 形状为 [n_samples] 或者 [n_samples, n_outputs]的数组

返回每个待测试样例的类别标签。

predict_proba ( X ) [source]

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

参数:

X : 类似数组, 形状(n_query, n_features)。 如果矩阵是‘precomputed’,形状为(n_query, n_indexed) 

待测试样例。

返回值:

p : 形状为[n_samples, n_classes]的数组,或者是n_outputs列表

 输入样例的类别概率估值。其中类别根据词典顺序排序。

score ( X y sample_weight=None ) [source]

返回给定测试数据和标签的平均准确度。在多标签分类中,返回的是各个子集的准确度。

参数:

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

待测试样例

y : 类似数组,形状为 (n_samples) 或者 (n_samples, n_outputs)

X的真实标签

sample_weight : 类似数组,形状为 [n_samples], 可选参数

待测试的权重

返回值:

score : float

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

set_params ( **params ) [source]

设置估值器的参数。

此方法在单个估值器和嵌套对象(例如管道)中有效。而嵌套对象有着  <component>__<parameter> 形式的参数,方便更新各个参数。

返回值:

self


  • 3
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值