K-近邻算法(KNN)

KNN算法是采用测量不同特征向量之间的距离的方法进行分类。

工作原理:存在一个数据集,数据集中的每个数据都有对应的标签,当输入一个新的没有标签的数据时,KNN算法找到与新数据特征量最相似的分类标签。

KNN算法步骤:

(1)选择邻近的数量k和距离度量方法;

(2)找到待分类样本的k个最近邻居;

(3)根据最邻近的类标进行多数投票。

 

KNN算法优点:精度高,对异常值不敏感,无数据输入假定;

               缺点:计算复杂度高,空间复杂度高。

               适用范围:数值型、标称型

 python 代码:

KNeighborsClassifier中的参数

参数 含义
n_neighbors k值,默认为5
weights

k个近邻样本的权重。可选值:uniform、distance,默认为uniform。

uniform:所有最近邻样本权重一样;

distance:权重和距离成反比;

还可以自定义权重,即自定义一个函数,输入距离值,输出权重值。

algorithm

算法,可选值:'auto', 'ball_tree', 'kd_tree', 'brute'。

'ball_tree':球树实现

'kd_tree':KD树实现

'brute’:蛮力实现

'auto':会在上述三种算法中做权衡,选择一个拟合最好的最优算法。

leaf_size

用于控制KD树或球树停止建子树的叶子节点阈值,默认为30。这个值越小,生成的KD树或球树越大,层数越深,耗时越长。

随着样本的增加,这个值要增加。

metric 距离度量,默认为'minkowski' 即闵可夫斯基距离。
p 距离度量参数metric附属参数,只用于'minkowski'中p值的选择,p=1,位曼哈顿距离,p=2位欧式距离,默认为2。
metric_params 距离度量的其他附属参数,主要用于带权重闵可夫斯基距离的权重,以及其他一些复杂的距离度量的参数。
 n_jobs 并行处理任务数,默认值为1。
#KNN
1 import numpy as np 2 import pandas as pd 3 from sklearn.neighbors import KNeighborsClassifier 4 df=pd.read_csv(r'E:data analysis estclassification.csv')#训练数据集 5 df_test=pd.read_csv(r'E:data analysis estclassification_test.csv')#测试数据集 6 x=df.ix[:,:-1] #特征值 7 y=df.ix[:,-1] #目标变量 8 knn=KNeighborsClassifier(n_neighbors=5) #取得knn分类器 9 knn.fit(x,y) #导入数据进行训练 10 print(knn.predict (df_test)) #对新数据进行分类
原文地址:https://www.cnblogs.com/niniya/p/8848550.html