zoukankan      html  css  js  c++  java
  • sklearn.neighbors.NNeighborsClassifier 详细说明

            平时会用到sklearn.neighbors.NNeighborsClassifier函数来构建K最邻近分类器,所以这里对NNeighborsClassifier中的参数进行说明,文中参考的是scikit-learn 0.20.3版本。

           NNeighborsClassifier函数中参数如下:

           n_neighbors:类别预测时,选择的最邻近数据点数量,默认为5。设置该参数时需要注意,设置得过大容易将一些较远的样本引入,造成误分类,尤其是在数据密度分布不均匀时,不过这个问题可以通过对样本施加权重来改善;设置得过小时噪声的影响就非常明显。

           weights:设置邻近范围内数据点的权重,默认是不施加权重,采用'uniform',所有数据点都一样。在施加权重时,一般可以选择 ‘distance’ 或者自定义权重的施加方式。采用‘distance’时,权重是数据点与待分类点距离的倒数,使用更多的权重函数是高斯函数,这个需要用户自定义,在自定义权重函数时,输入参数是一些列距离值,返回值是一些列权重值。

           algorithm: 选择K最邻近分类器构建算法。构建K最邻近分类器的过程主要是用 ‘距离’ 的度量准则、采用合理的数据结构存储训练集,在类别预测时能够快速的搜索数据。目前常用的数据结构是 “球树(ball-tree)”、"KD树(kd-tree)",暴力搜索方然也是一种方式。ball-tree在构建时会比kd-tree要麻烦一些,因为涉及到距离的计算,但是在类别预测时,其最邻近点检索更快,且一般在高维数据中表现比较好。kd-tree采用二叉树方式存储数据,构建过程比较快,但是搜索过程麻烦,因此一般适用于数据集较小、维度较低的场合。暴力搜索一般不推荐,仅用于少量数据的情形下。该参数有4个可选值,“ball_tree”、“kd_tree”、"brute"、“auto”,brute表示暴力搜索,当设置“auto”时,会依据传入的训练数据自动选择最合适的算法。

          leaf_size:设置叶子结点个数,默认值为30。该参数用于 algorithm为ball_tree或kd_tree的情况,叶子结点数越多,则树模型深度越大,构建和搜索过程越耗时,但是分类准确率越高,因此该值如何设置需要依据具体的问题考虑。一般来说,训练数据集越大,则可以适当将该值设置大一些。

         p:选用距离的计算方式,1表示使用曼哈顿距离,2表示使用欧氏距离,默认为2。对任意两个n维数据x(x_{1},x_{2},...,x_{n})y(y_{1},y_{2},...,y_{n}),将p设置为任意的正整数值时,xy的距离的计算方式为闵可夫斯基距离:

                                                                            d=sqrt[p]{sum_{i=1}^{n}|x_{i}-y_{i}|^{p}}

        metric:设置距离度量方式,默认是闵可夫斯基距离。距离的度量方式有多种,应用于不同的距离,例如在文档相似性分析中,词频数据是一个稀疏数据,一般采用余弦距离度量。

        n_jobs:设置执行分类任务时的并行线程个数,主要是为了提高数据搜索效率,默认为None,表示使用1个线程,-1表示使用所有可用的线程,该参数不影响分类结果。

                                

        

            

  • 相关阅读:
    11g新特性-dba_users安全性的一些增强
    sysbench的安装与使用(with MySQL)
    参数table_open_cache
    参数max_allowed_packet
    解决linux下unzip中文有乱码的问题
    11g添加asm
    有了iscsi存储怎么让主机识别以及使用创建lvm
    用rlwrap使sqlplus可以上下翻页
    卸载已经安装的rpm包
    物化视图刷新慢--有可能是mv log被多个mv使用造成的
  • 原文地址:https://www.cnblogs.com/hgz-dm/p/10886364.html
Copyright © 2011-2022 走看看