一、K最近邻
1.调用函数—
from sklearn.neighbors import KNeighborsClassifier
clf=KNeighborsRegressor(n_neighbors=2)
clf.fit(x,y)
KNN的特殊情况是k =1 的情况,称为最近邻算法。对输入的实例点(特征向量)x ,最近邻法将训练数据集中与x 最近邻点的类作为其类别。
(1)一般k 会取一个较小的值,然后用过交叉验证来确定;
(2)距离度量:一般是欧式距离(二范数),或者曼哈顿距离(一范数)
(3)回归问题:取K个最近样本的平均,或者使用加权平均。
算法的优点:(1)思想简单,理论成熟,既可以用来做分类也可以用来做回归;(2)可用于非线性分类;(3)训练时间复杂度为O(n);(4)准确度高,对数据没有假设,对outlier不敏感。
缺点:计算量大;样本不平衡问题(即有些类别的样本数量很多,而其它样本的数量很少);需要大量的内存;
需要考虑问题:
(1)KNN的计算成本很高;
(2)所有特征应该标准化数量级,否则数量级大的特征在计算距离上会有偏移; (3)在进行KNN前预处理数据,例如去除异常值,噪音等。
KD树是一个二叉树,表示对K维空间的一个划分,可以进行快速检索&#x