KNeighborsClassifier()
该函数是sklearn库中KNN算法的实现函数. 引入方式:
from sklearn.neighbors import KNeighborsClassifier
原型是
KNeighborsClassifier(n_neighbors=5, weights='uniform', algorithm='auto', leaf_size=30, p=2, metric='minkowski', metric_params=None, n_jobs=1, **kwargs)
参数解读:
- n_neighbors:
- int,默认是5
- 也就是KNN中的K值
- weights
- 该参数在对样本分类的过程中使用
- 默认是uniform,含义是所有neighbor权重相同,所以计算k个neighbor的分类,类似于投票机制, 每个neighbor的类别的权重都是1
- distance:权重与距样本的距离成反比,如何某个neighbor与样本距离较近,那么该neighbor的类别对样本最终的分类影响较大
- 用户自定义函数:该函数的输入是样本与K个nneighbor 的距离,返回是k个权重
- algorithm
- 算法是用来计算最近邻的
- ball_tree:使用BallTree算法
- kd_tree:使用KDTree算法
- brute:使用暴力搜索
- auto:程序根据输入的数据集自动选择样本
- 注意:如果输入是稀疏矩阵,那么算法强制使用brute方式进行计算
- leaf_size
- 如果上述algorithm参数使用了Tree相关算法进行计算,这里就需要指定树的叶节点数量
- 默认值是30
- 这个参数会影响树的构建速度,neighbor查询速度,以及存储树的内存
- metric
- 距离度量方式,可以使用字符串指定,默认使用"minkowski"
- 也可以使用具体的对象,sklearn库中有DistanceMetric class,可以构建相应的对象传入
- p
- minkowski距离度量方式的指数,如果p=1就是街市距离(曼哈顿距离),如果p=2就是欧式距离
- metric_params
- metric函数的参数
- n_jobs
- 默认是-1, 搜索neighbor过程中并行的job设置成cpu的核心数