《r语言与机器学习(1)k-近邻算法》由会员分享,可在线阅读,更多相关《r语言与机器学习(1)k-近邻算法(8页珍藏版)》请在金锄头文库上搜索。
1、K-近邻算法原理及举例工作原理:我们知道样本集中每一个数据与所属分类的对应关系,输入没有标签的新数据后,将新数据与训练集的数据对应特征进行比较,找出“距离”最近的 k(通常 kerror11919/94610.02008457也就是说,使用 5-近邻算法,误差率为 2%,属于一个可以接受的范围。这里由于本人没有找到较好的批量导入数据的办法,所以代码有些复杂,也出现了 hardcode 和 magicnumber 的毛病,但是泛化也不是那么的复杂,所以也没再做更进一步的改进。希望读者告诉我如何解决 R 里导入批量数据的方法。其中有两个函数是我在之前的博客中没有使用过的,现在简单介绍如下:赋值函数
2、 assign:assign(x, c(10.4, 5.6, 3.1, 6.4, 21.7) 与 x - c(10.4,5.6, 3.1, 6.4, 21.7)等价读取赋值函数的函数 get:a- 1:4assign(a1,2)a1= 2 #FALSEget(a1) = 2 #TRUE在 R 中,我没有找到求众数的函数,简单编写了一个names(which.max(table(indexorder(di)1:5),这个函数有两个众数时会输出两个,所以 K 近邻为了保证多数投票法有用,麻烦仔细选择合理的 k 值。这里我在做训练集时并没有选择 k 值得过程(因为这个算法实在是太慢了,没有那个耐心)实际使用这个算法,执行效率相当的低下,每个距离的计算包含了 1024 个维度的浮点运算,总计 900 多次,还要为测试向量准备 2M 的存储空间。所以 k 决策树是你需要进一步了解的。K 决策树的种类也有不少,比如 kd 树,但是他们的问题就是 k 的选取总是一个麻烦的过程,kd 树找最近邻是十分高效的,但是找 k 近邻,删除结点重新建树还是比较麻烦的。Further reading:JULY 大神的从 K 近邻算法、距离度量谈到 KD 树、SIFT+BBF 算法