KNN
K近邻是包含在sklearn.neighbors包中,用于分类的是KNeighborsClassifier,用于回归的是KNeighborsRegressor。除此之外,还有KNN的扩展,即限定半径最近邻分类树的类RadiusNeighborsClassifier和限定半径最近邻回归树的类RadiusNeighborsRegressor, 以及最近质心分类算法NearestCentroid。在这里只介绍KNeighborsClassifier和KNeighborsRegressor
from sklearn.neighbors import KNeighborsClassifier,KNeighborsRegressor
KNN用于分类和回归的参数是完全一样的,主要参数有:
①n_neighbors:k值,默认是5。需要调参。(很重要的参数)
②wights:近邻样本的权重,可以选择"uniform","distance" 或者自定义权重,默认是"uniform",即近邻样本的权重都一样。"distance" 表示权重与距离成反比,越近的权重越高。当样本分布较乱时,一般使用"distance" ,如果预测效果不好,可以自定义权重调优。
③algorithm:使用的算法,有4种选择:‘brute’蛮力实现,‘kd_treeKD树实现,‘ball_tree’对应第三种的球树实现, ‘auto’则会在上面三种算法中做权衡,选择一个拟合最好的最优算法。如果样本少特征也少,使用默认的 ‘auto’。如果数据量很大或者特征也很多,建议选择KD树实现,此时如果发现‘kd_tree’速度比较慢或者已经知道样本分布不是很均匀时,可以尝试用‘ball_tree’。而如果输入样本是稀疏的,无论你选择哪个算法最后实际运行的都是‘brute’。
④leaf_size:停止建子树的叶子节点数量阈值,默认是30。该值依赖与样本的数量,当样本数量增加时,该值必须增加,以防止过拟合,需要调参。
⑤metric:距离度量,一般选择默认的欧式距离 “euclidean”即可。