KNN算法(监督学习,适用于少量数据)
kNN思想
该算法的思想是:一个样本与数据集中的k个样本最相似,如果这k个样本中的大多数属于某一个类别,则该样本也属于这个类别。
(1)KNN属于惰性学习(lazy-learning)
这是与急切学习(eager learning)相对应的,因为KNN没有显式的学习过程!也就是说没有训练阶段,从上面的例子就可以看出,数据集事先已有了分类和特征值,待收到新样本后直接进行处理。
(2)KNN的计算复杂度较高
我们从上面的例子可以看到,新样本需要与数据集中每个数据进行距离计算,计算复杂度和数据集中的数据数目n成正比,也就是说,KNN的时间复杂度为O(n),因此KNN一般适用于样本数较少的数据集。
(3)k取不同值时,分类结果可能会有显著不同。
k值选择中,如果设置较小的k值,说明在较小的范围内进行训练和统计,误差较大且容易产生过拟合的情况;k值较大时意味着在较大的范围中学习,可以减少学习的误差,但是在其统计范围变大了,说明模型变简单了,容易在预测的时候发生分类错误。
Kmeans思想(无监督,适合大量数据)
基本K-Means算法的思想很简单,(1)事先确定常数K,常数K意味着最终的聚类类别数,(2)首先随机选定初始点为