r语言中正定矩阵由于误差不正定_R语言之数据处理(一)
在上一篇小文中,提到了关于R语言导入数据的一些方法,之后的重点就转向了数据的处理上。数据处理其实在整个数据分析项目中所占用的时间是比较多的,所以根据处理的目的不同,也有不同的处理方法。在R语言中,我通常会将数据处理分成三部分:数据质量处理、数据维度处理和特殊文本的处理。由于三个部分的内容也比较多,就先介绍数据质量处理的内容,其余的两部分会在后面的文章介绍。
一、数据清洗
数据清洗简单说就是处理缺失值和异常值的判断,当然要根据实际情况来定义数据清洗的任务。
1.缺失值处理
当我们面对的数据是比较大量的时候,就需要了解数据集中那些变量有缺失值、缺失的数量、属于那种组合方式等有用信息。此时可以使用mice包中的md.pattern()函数,该函数可生成一个以矩阵或者数据框形式展示缺失值模式的表格,且该函数只需要传入需要判断的数据即可。另外还有使用图形方法这种更直观的方法描述数据的缺失,可利用VIM包中的aggr()函数实现,形式如下:
aggr(x,delimiter = NULL,plot = T,...)
x表示一个向量、矩阵或者数据框,delimiter用于区分插值补量,plot则指明是否画图。
识别出数据中的缺失值,接下来对其处理。最常用的方法是将包含缺失值的记录删去,使用na.omit()函数,但仅限于出现缺失值的记录数量比较少。但含缺失值的记录很多时,就要考虑替换缺失值,一般可用均值、中位数和平均数替换,更专业一点的做法是使用插值法(将缺失数据的变量作为因变量,其他变量作为自变量,建立预测模型)
2.异常值的判断与处理
异常值处理的重点在于识别,处理的手段和缺失值基本一致,所以下面主要介绍识别异常值的一些方法。3σ原则是使用比较多的方法,而R语言qc包中的qcc()函数是专业绘制质量监控图的。初次之外,还可以利用箱线图和聚类分析识别出异常值。
二、数据去重
数据去重并不是处理数据的必要步骤,所以单独拿出来说。在R语言中去重的方法也很简单,对于向量数据可使用unique()函数,而针对矩阵或者数据框这种多维数据时,可使用duplicated()函数。
三、数据转换
数据转换的内容简单地可分为三部分,产生衍生变量、数据分箱和数据标注化。衍生变量就是原有的变量属性构造新的属性,比如变量A和变量B通过相乘得到变量C,另外比较常见的就是哑变量的构成(可以使用caret包的dummyVars()函数)。
数据分箱实际上就是按照属性值划分子区间,比如将考试成绩0-59分的归为不及格,60-89的归为中等,90-100的归为优秀。R语言中分cut()函数可以实现数据分箱的目的。
数据标准化主要的目的就是消除变量之间的量纲影响,让不同的变量经过标准化后可以有平等分析和比较的基础。常用的标准化有两种,Min-Max标准化和Z-Score标准化,而caret包中的preProcess()函数能非常灵活地实现数据的标注化。
四、数据抽样
在数据分析或者建立数据模型之前,在面对或多或少的数据时,一般不会直接使用数据,而是采用抽样的方法去选取数据,而根据不同的情况,会有不同的抽样方法。下面介绍四种抽样方法及其在R语言中的实现:
- 处理类失衡的抽样方法——SMOTE
类失衡会发生在包含分类变量的数据集,比如在整个数据集中,A类的数据占总体的5%,而B类数据占了95%。具体的理论可参考下面的连接:
SMOTE算法www.jianshu.com
现在我们的关键在于如何使用R语言去解决类失衡的情况,比如A类数据有4000条记录,B类数据只有200条记录,此时可以使用DMwR包中的SMOTE()函数。
2.随机抽样
R语言中实现随机抽样的函数是sample(),基本形式如下:
sample(x,size,replace=F/T,prob=NULL)
x是数值型向量,size是抽样个数,replace表示是否放回,prob是与x长度一致的向量,且每个元素表示与x对应位置上的元素被抽中的概率。
如上面的命令,在1到5中随机抽取3个元素,且每个元素被抽中的概率为0.1、0.2、0.5、0.4和0.3。
3.等比抽样
当面对多分类数据时,我们会采用等比抽样的方法,实现快速得到与原始数据集有比例关系的抽样数据。R语言中实现这一功能的是caret包中的createDataPartition()函数,形式如下:
createDataPartition(x,time,p,list=F/T,groups = min(5,length(x)))
x是包含了多分类信息的向量,time表示需要进行抽样的次数,p表示需要从数据中抽取的样本比例,list表示结果是否是为list形式,默认为T,groups表示如果输出变量是数值型数据,则默认按分位数分组进行取样。以iris数据集为例,使用str()函数查看iris数据集的构成:
可以知道iris数据集中的Species变量是分类变量,且有3类元素。使用createDataPartition()函数进行抽样。
从结果可以看到三类的数据量是一样的。
4.交叉验证的样本抽取
如果我们在建立模型时只采用一次抽样的数据,这样得到的数据模型随机性和误差性是比较大的,因此使用N折交叉验证的方法可以提高模型结果的可靠性。步骤大概是将数据集的每条记录分配下标1,2,...N个数据,换言之就是将数据集分成了N份,然后,每次提取一份作为测试数据集,剩下的N-1份数据作为训练数据集,然后记录下拟合的N个模型结果和误差,最后计算平均误差来衡量模型的准确性。对K折交叉验证法原理不熟悉的伙伴,可以看以下的连接:
K折交叉验证blog.csdn.net
R语言中实现K折交叉验证法,主要是使用caret包中的createFolds()和createMultiFolds()两个函数。两者的形式别如下:
createFolds(x,k=10,list = T,returnTrain = F)
x是要依据分类的变量,k指指定的折数,默认是10,list表示返回的结果索引值是否为列表形式,默认为True,returnTrain表示是否返回抽样的真实值,默认Flase。
createMultiFolds(x,k = 10,times = 5)
x和k的参数意义与createFolds()一样,times为指定抽样组数。
两个函数都可是实现K折交叉验证的抽样,具体的使用方法可参照下面的连接:
k折交叉验证(R语言)www.jianshu.com
r语言中正定矩阵由于误差不正定_R语言之数据处理(一)相关推荐
- r语言中正定矩阵由于误差不正定_Kalman滤波在MOT中的应用(一)——理论篇
前言 Kalman滤波器是多目标跟踪任务中一个经典的运动模型,接下来会从理论.发展和代码实践三个方面对其进行展开,本次主要以理论基础为主. 在这篇之前还有一个关于多目标背景任务的介绍,不过被知乎删了, ...
- r语言中正定矩阵由于误差不正定_浅谈「正定矩阵」和「半正定矩阵」
在众多的机器学习模型中,线性代数的身影无处不在,当然,我们也会时常碰到线性代数中的正定矩阵和半正定矩阵.例如,多元正态分布的协方差矩阵要求是半正定的. --------------×--------- ...
- r语言中正定矩阵由于误差不正定_矩阵的几种分解方式
A = LU 这实际上就是我们解矩阵方程组一般使用的方式,比如方程组是: 我们一般把它写成增广矩阵: 然后化简成阶梯型矩阵的形式,这个时候可以方便的算出 ,然后再往上代回,逐渐得到所有的x. 如果我们 ...
- r语言中正定矩阵由于误差不正定_Rcall:Stata 与 R 的无缝对接
NEW!连享会·推文专辑: Stata资源 | 数据处理 | Stata绘图 | Stata程序 结果输出 | 回归分析 | 时间序列 | 面板数据 | 离散数据 交乘调节 | DID | RDD ...
- r语言中判断属于回纹元素_R语言中的回归诊断-- car包
如何判断我们的线性回归模型是正确的? 1.回归诊断的基本方法 opar fit par(mfrow = c(2, 2)) plot(fit) par(opar) 为理解这些图形,我们来回顾一下OLS回 ...
- c语言中存贮班级学生的变量,C语言----变量教案.docx
C语言----变量教案 课 题 2.2 常量和变量----变量 课型 理实一体化 授课班级 高二计算机(升学班) 课时 2 教学目标 复习巩固C语言中常量的应用: 掌握C语言中变量的命名规则及应用. ...
- r语言中删除向量的某些元素_R中的向量
r语言中删除向量的某些元素 Vectors in R are the fundamental data types. This is because the R compiler treats all ...
- r语言中对向量求条件语句_R中的条件语句
r语言中对向量求条件语句 To advance with programming, we need to be able to control the flow of the program exec ...
- c语言中合法的字符型常量是,C语言习题库(带答案)-排版.doc
一.选择题 1.以下不能定义为用户标识符的是( ). (A) MAIN (B) _HJ (C) 2ong (D) LINE1 2.以下不能定义为用户标识符的是( ) (A) If (B) H_J (C ...
最新文章
- vscode多个光标_21 个VSCode 快捷键,让代码更快,更有趣
- 修改GIT的user.name和user.email
- maven(3)maven3.3.9使用入门
- html5标签的兼容性处理
- html注册跳转php错误500,页面跳转后提示HTTP 异常 500(Internal Server Error):服务器尝试执行请求时遇到了意外情况...
- 解决 No projects are available for deployment to this server!
- css html 字竖,CSS实现文字竖排 DIV CSS文字垂直竖列排版显示如何实现?
- 普元EOS中如何往Session的UserObject中设置自定义属性
- 520表白网页代码html 爱心网页制作
- goole服务框架Android ID,GSF ID KEY(谷歌服務框架ID)作爲Android設備唯一標識符
- android mp4转mp3格式转换,实现快速将MP4转MP3格式的完美攻略
- Leetcode力扣 MySQL数据库 1194 竞标赛优胜者
- 一张图学《计算机组成原理(硬件篇)》 思维导图 计算机组成
- [声纹识别]基于MFCC的声纹识别算法
- Android获取WiFi名称/路由器AP地址总结
- 【转载】如何从win8/8.1中文版(核心版)升级到win8/8.1专业版
- 消费者人群画像 python_一步一步教你分析消费者大数据
- GNU C++ 智能指针6-- 解析_Sp_counted_inplace类
- 连载《国培计划》骨干教师的研修日志之八:米新江教授讲座有感
- 如何高效的使用mac
热门文章
- Google App Engine Java功能和命名空间API
- shu函数php,【函数分享】每日PHP函数分享(2021-3-3)
- mysql 表丢失_Mysql数据库备份 部分数据表丢失 Mysql table doesn't exist 解决
- 通用数据保护条例_欧盟《通用数据保护条例》——2019年的形势
- HH SaaS电商系统的采购功能模块设计
- HH SaaS电商系统的销售订单毛利润模块设计
- JSP的隐含对象/隐藏对象/内置对象介绍
- angular ngoninit 刷新html页面_web前端入门到实战:实现html页面自动刷新
- 计算机无法维修技术鉴定,计算机维修工技能鉴定(初级)剖析..pdf
- microsoftexchange邮箱容量怎样看_企业邮箱申请注册的要求有哪些?_网站建设_创客网络...