k近邻算法工作原理如下:
1、首先指定“训练”数据集
2、对于一个新的即将被预测分类的观测值,算法试图找到距离这个新的观测值最近的K个观测值,并预测这个新的观测值的类别。
3、新观测值的类别由与其最近的k个观测值类别占比最多的类别决定,作为该新值的类别。
4、不像其它模型,k近邻并没有创建一个模型对象。而是,你需要提供训练数据以及测试数据作为参数。
原文:https://blog.csdn.net/wolfbloodbj/article/details/8842399

class包:

library(class)#载入包
index<-sample(1:nrow(data),round(0.7*nrow(data)))#随机抽取样本
train<-data[index,-5]
test<-data[-index,-5]#划分训练集和测试集
cl<-data[index,5]#设置类别变量,knn基于此变量来投票判断测试集分类结果
k<-3#设置以周围最近的几个点来投票
pre<-knn(train=train,test=test,cl=cl,k=k,pro=T)
table(data[-index,5],pre)#输出分类结果

class包的knn算法似乎针对的数据必须是数值型的,对于有因子型变量的数据会报错。

kknn包:

library(kknn)
index<-sample(1:nrow(data),round(0.7*nrow(data)))
train<-data[index,]
test<-data[-index,]
pre<-kknn(LEAVE~.,train, test, distance = 1,kernel= "triangular")
summary(pre)
fit <- fitted(pre)
t<-table(test$LEAVE, fit)
sum(diag(t))/sum(t)#计算分类准确率

kknn包可以处理带有因子型变量的数据集

R语言knn算法的两种方法:class包与kknn包相关推荐

  1. C语言判断素数的两种方法

    C语言判断素数的两种方法 素数又称质数.所谓素数是指除了 1 和它本身以外,不能被任何整数整除的数,例如17就是素数,因为它不能被 2~16 的任一整数整除. 思路1):因此判断一个整数m是否是素数, ...

  2. R语言github软件的两种安装方式

    背景 不得不说,国内网络方位国外网络,查看技术文档时,确实经常遇到网速限制的问题. 在R软件安装过程中, 基于CRAN的,可以使用清华的镜像源(http://mirrors.tuna.tsinghua ...

  3. C语言结束输入(两种方法)

    方法1: //输入数据 while (getchar() != '\n') {scanf("%d", &Data);data[i++] = Data; }; 方法2: fo ...

  4. python实现二分查找算法_两种方法实现Python二分查找算法

    一. arr=[1,3,6,9,10,20,30] def findnumber(l,h,number): mid=(l+h)//2 if arr[mid]==number: print(" ...

  5. C语言返回数组的两种方法

    在构造方法中,我们经常通过函数得到改变的或者新建的数组.但是使用return是无法成功返回的,如下: /*** Note: The returned array must be malloced, a ...

  6. c语言十进制转二进制两种方法

    void fun25(void) {int i, j, num;unsigned ask = 0x8000;scanf("%d", &num);//方法一for (i = ...

  7. 统计图的连通块的个数的两种方法

    @算法学习 两种方法 DFS遍历法 并查集法 1. DFS遍历计算连通块 先上代码: #include <stdio.h> #include <vector>using nam ...

  8. php给点击的li设置样式,两种方法为LI列表前3行设置样式

    两种方法为LI列表前3行设置样式 蓝叶    网站设计    2014-06-18    9789    10评论 在设计网页模板的时候,为了突出信息的重要性以及美观度,我们会设置一些样式使LI文章列 ...

  9. python 手动安装包的两种方法

    python 手动安装包的两种方法 对于 .tar.gz 的包来说 解压缩文件 aaaxxxx-1.0.1.tar.gz 移动到压缩文件所在目录 使用tar -zxvf aaaxxxx-1.0.1.t ...

  10. linux c语言乘法口诀,shell 脚本实现乘法口诀表的两种方法——shell与C语言

    shell 脚本实现乘法口诀表的两种方法--shell与C语言 话不多说直接给出代码(执行c语言时没有gcc编译器会报错的哦!): 1 #!/bin/bash 2 if [ $# -eq 0 ] 3 ...

最新文章

  1. 搭建百度unit2.0测试代码(Java)
  2. 推荐一本书《网络机器人java编程指南》
  3. 俄罗斯议会下院通过“老大哥”反恐法
  4. Segment公司--整合数据进行分析
  5. 简述ip地址的abc类如何划分_面试官问:讲讲IP地址的分配原理
  6. C++11多线程std::thread的简单使用
  7. github构建自己的代码库
  8. 智慧城市顶层设计实施工作指南
  9. win10系统盘分多大合适?
  10. 西门子PLC怎么调试?
  11. Python基础-Week2
  12. Spring框架开发QQ登录教程
  13. 七公江湖烤翅防骗子—常见网络骗子骗术防御要点
  14. 如何在视频上添加水印?建议收藏这些方法
  15. matlab dsb调制,幅度调制(AM、DSB、SSB、VSB)
  16. drawio界面自定义配置
  17. .net C# 堆 栈 垃圾回收 GC
  18. ThinkPHP6 验证码(点击刷新)
  19. 水煮三国(二) 能把梳子卖给和尚吗
  20. P1 无符号整数二进制补码

热门文章

  1. 幂函数展开c语言,第三章幂函数展开.pdf
  2. pixel cra_cra到pwa
  3. 心智与认知(1): 反馈循环(Feedback loop)
  4. 项目经理一定要知道的PMP项目管理八大会议流程-(PMBOK高频考点)
  5. beaker-用于会话和缓存的WSGI中间件
  6. mysql和sqline的异同_mysql的那点事儿,你知道吗
  7. 【晒出你的第83行代码】社区用户@尼古拉斯雷的代码故事,和现在比起来以前的代码都是垃圾!...
  8. MATLAB编辑AWG波形,使用MATLAB和任意波形发生器创建高性能激励测试系统
  9. 全球资本市场竞争力指数排名发布,中国跃居第五
  10. java模拟usb接口_Java练习:一个简单的USB接口程序设计