sklearn.neighbors

sklearn.neighbors

  • KNN分类树KNeighborsClassifier,KNN回归树KNeighborsRegressor。
  • 限定半径最近邻分类树RadiusNeighborsClassifier和限定半径最近邻回归树RadiusNeighborsRegressor
  • 质心分类算法NearestCentroid,直接选择最近质心来分类,距离度量和特征选择距离阈值
  • kneighbors_graph返回用KNN时和每个样本最近的K个训练集样本的位置
  • radius_neighbors_graph返回用限定半径最近邻法时和每个样本在限定半径内的训练集样本的位置

KNeighbors
(n_neighbors=5, weights=’uniform’, algorithm=’auto’, leaf_size=30, p=2, metric=’minkowski’,metric_params=None, n_jobs=None)

  • 只参考样本周围k个“邻居”样本的所属类别,较适合处理样本集存在较多重叠的场景,主要用于文本分类、降维等处理。
  • 需要存储所有的训练集,占用很大内存,速度相对较慢,使用该方法前通常训练集需要进行降维处理。

参数

  1. n_neighbors: 默认值为5,算法中选取离测试数据最近的k个点。(交叉验证)
  2. weight: 默认值为uniform,k近邻点对预测结果的影响。如果样本分布较乱,可选择"distance"。
    • ‘uniform’:表示所有点的权重相等
    • distance’:表示权重是距离的倒数,距离近的点对结果的影响大于距离远的点
    • [callable]:自定义一个函数,输入是距离值,输出是权重值。
  3. algorithm:计算k近邻点的算法
    • ‘ball_tree’:维数大于20,数据量很大
    • ‘kd_tree’:维数小于20
    • ‘brute’:输入数据较稀疏
    • ‘auto’:自动权衡,选择一个拟合最好的最优算法
  4. leaf_size:默认值为30,构造BallTree或KDTree时停止建子树的叶子节点数量的阈值。这个值越小,则生成的KD树或者球树就越大,层数越深,建树时间越长。这个值一般依赖于样本的数量,随着样本数量的增加,这个值必须要增加,否则不仅建树时间长,还容易过拟合。
  5. metric : 距离度量,默认使用’minkowski’(闵可夫斯基距离)
    • 欧式距离 “euclidean”: ∑ i = 1 n ( x i − y i ) 2 \sqrt{\sum\limits_{i=1}^{n}(x_i-y_i)^2} i=1n(xiyi)2
    • 曼哈顿距离 “manhattan”: ∑ i = 1 n ∣ x i − y i ) ∣ \sum\limits_{i=1}^{n}|x_i-y_i)| i=1nxiyi)
    • 切比雪夫距离“chebyshev”: m a x ∣ x i − y i ∣ ( i = 1 , 2 , . . . n ) max|x_i-y_i| (i = 1,2,...n) maxxiyi(i=1,2,...n)
    • 闵可夫斯基距离 “minkowski”: ∑ i = 1 n ( ∣ x i − y i ∣ ) p p \sqrt[p]{\sum\limits_{i=1}^{n}(|x_i-y_i|)^p} pi=1n(xiyi)p
    • 带权重闵可夫斯基距离 “wminkowski”: ∑ i = 1 n ( w ∣ x i − y i ∣ ) p p \sqrt[p]{\sum\limits_{i=1}^{n}(w|x_i-y_i|)^p} pi=1n(wxiyi)p
  6. p:闵可夫斯基参数,默认值为2,欧式距离。
  7. n_jobs : 主要用于多核CPU时的并行处理,加快建立KNN树和预测搜索的速度。-1即所有的CPU核都参与计算。

RadiusNeighbors

  • 限定半径radius:半径的选择与样本分布有关,可以通过交叉验证来选择一个较小的半径,尽量保证每类训练样本与其他类别样本的距离较远,默认值是1.0。
  • 异常点类别选择outlier_label:用于预测时,如果目标点半径内没有任何训练集的样本点时,应该标记的类别,一般设置为训练集里最多样本的类别 ‘most_frequent’。

你可能感兴趣的:(Machine,Learning)