R语言knn算法的两种方法:class包与kknn包
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包相关推荐
- C语言判断素数的两种方法
C语言判断素数的两种方法 素数又称质数.所谓素数是指除了 1 和它本身以外,不能被任何整数整除的数,例如17就是素数,因为它不能被 2~16 的任一整数整除. 思路1):因此判断一个整数m是否是素数, ...
- R语言github软件的两种安装方式
背景 不得不说,国内网络方位国外网络,查看技术文档时,确实经常遇到网速限制的问题. 在R软件安装过程中, 基于CRAN的,可以使用清华的镜像源(http://mirrors.tuna.tsinghua ...
- C语言结束输入(两种方法)
方法1: //输入数据 while (getchar() != '\n') {scanf("%d", &Data);data[i++] = Data; }; 方法2: fo ...
- python实现二分查找算法_两种方法实现Python二分查找算法
一. arr=[1,3,6,9,10,20,30] def findnumber(l,h,number): mid=(l+h)//2 if arr[mid]==number: print(" ...
- C语言返回数组的两种方法
在构造方法中,我们经常通过函数得到改变的或者新建的数组.但是使用return是无法成功返回的,如下: /*** Note: The returned array must be malloced, a ...
- c语言十进制转二进制两种方法
void fun25(void) {int i, j, num;unsigned ask = 0x8000;scanf("%d", &num);//方法一for (i = ...
- 统计图的连通块的个数的两种方法
@算法学习 两种方法 DFS遍历法 并查集法 1. DFS遍历计算连通块 先上代码: #include <stdio.h> #include <vector>using nam ...
- php给点击的li设置样式,两种方法为LI列表前3行设置样式
两种方法为LI列表前3行设置样式 蓝叶 网站设计 2014-06-18 9789 10评论 在设计网页模板的时候,为了突出信息的重要性以及美观度,我们会设置一些样式使LI文章列 ...
- python 手动安装包的两种方法
python 手动安装包的两种方法 对于 .tar.gz 的包来说 解压缩文件 aaaxxxx-1.0.1.tar.gz 移动到压缩文件所在目录 使用tar -zxvf aaaxxxx-1.0.1.t ...
- linux c语言乘法口诀,shell 脚本实现乘法口诀表的两种方法——shell与C语言
shell 脚本实现乘法口诀表的两种方法--shell与C语言 话不多说直接给出代码(执行c语言时没有gcc编译器会报错的哦!): 1 #!/bin/bash 2 if [ $# -eq 0 ] 3 ...
最新文章
- 搭建百度unit2.0测试代码(Java)
- 推荐一本书《网络机器人java编程指南》
- 俄罗斯议会下院通过“老大哥”反恐法
- Segment公司--整合数据进行分析
- 简述ip地址的abc类如何划分_面试官问:讲讲IP地址的分配原理
- C++11多线程std::thread的简单使用
- github构建自己的代码库
- 智慧城市顶层设计实施工作指南
- win10系统盘分多大合适?
- 西门子PLC怎么调试?
- Python基础-Week2
- Spring框架开发QQ登录教程
- 七公江湖烤翅防骗子—常见网络骗子骗术防御要点
- 如何在视频上添加水印?建议收藏这些方法
- matlab dsb调制,幅度调制(AM、DSB、SSB、VSB)
- drawio界面自定义配置
- .net C# 堆 栈 垃圾回收 GC
- ThinkPHP6 验证码(点击刷新)
- 水煮三国(二) 能把梳子卖给和尚吗
- P1 无符号整数二进制补码
热门文章
- 幂函数展开c语言,第三章幂函数展开.pdf
- pixel cra_cra到pwa
- 心智与认知(1): 反馈循环(Feedback loop)
- 项目经理一定要知道的PMP项目管理八大会议流程-(PMBOK高频考点)
- beaker-用于会话和缓存的WSGI中间件
- mysql和sqline的异同_mysql的那点事儿,你知道吗
- 【晒出你的第83行代码】社区用户@尼古拉斯雷的代码故事,和现在比起来以前的代码都是垃圾!...
- MATLAB编辑AWG波形,使用MATLAB和任意波形发生器创建高性能激励测试系统
- 全球资本市场竞争力指数排名发布,中国跃居第五
- java模拟usb接口_Java练习:一个简单的USB接口程序设计