监督学习-----k近邻分类(knn)

对于一个待分类的样本,未知其类别,按照成语‘近朱者赤近墨者黑’的说法,我们需要寻找与这个待分类的样本在特征空间中距离最近的K个已标记样本作为参考,来帮助我们做出决策。K不属于模型通过训练数据学习的参数,因此要在模型初始化过程中提前确定,但是k质的不同会对模型的表现性能有巨大的影响

一:经典例题利用K近邻算法对生物物种进行分类,使用最为著名的“鸢尾(Iris)”数据集,该数据及曾经被fisher用在其经典的论文中,目前作为教科书般的数据样本预存在scikit-learn的工具包中。

读取scikit-learn中的Iris数据集

通过上述代码对数据的查验以及数据本身的描述,我们了解到Iris数据集共有150朵鸢尾数据样本,并且均匀分布在3个不同的亚种,每个数据样本被4个不同的花瓣、花萼的形状特征所描述。由于没有指定的测试集,按照惯例,我们需要对数据进行随机分割,25%的样本用于测试,其余75%的数据样本用于训练。

这里需要额外强调的是,要务必保证随机采样。尽管许多数据集中样本的排列顺序相对随机,但是也有例外。本例Iris数据及便是按照类别依次排列。如果只是采样前25%的数据用于测试,那么所有的测试样本都属于一个类别,同时训练样本也是不均衡的(unblanced),这样得到的结果存在偏置性(Bias),并且可信度极低

knn没有参数训练过程。也就是说,并没有通过任何学习算法分析训练数据,,而只是根据测试样本在训练数据的分布直接作出分类决策。因此k最近邻属于无参数模型(nonparametric model)中非常简单的一种。然而,正是这样的决策算法,导致了其非常高的计算复杂度和内存消耗。因为该模型每处理一个测试样本,都需要对所有预先加载在内存的训练样本进行遍历,逐一计算相似度、排序并且选取k个最近邻训练样本的标记,进而做出分类决策。这是平方级别的算法复杂度,一旦数据规模稍大,使用者便需要权衡更多计算时间的代价。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值