数据探索之数据预处理
来源:互联网 发布:软件开发招聘广告 编辑:程序博客网 时间:2024/06/05 04:43
数据探索步骤
- 查看单个变量的分布情况,了解每一个变量值的分布情况并找出缺失值和离群点,以确定变量是否需要进行转换或者是否应该用于建模;
- 查看目标变量(因变量)与预测变量(自变量)之间的关系,用于特征选择;
- 查看预测变量之间的关系,删除冗余变量
重命名及数据重组
重命名
重命名可以采用 names()/rename()–reshape包/colnames(),rownames()
- names(),系统自带函数,使用后会直接修改原数据;另外通过此函数还可以得到向量/数据框/list等数据结构的名字,重命名变量格式* names(data)[index]=’新名字’,其中index只能是数字,不能用旧名字*
names()函数得到list数据结构的名字 - reshape包中的rename()函数,使用后不会改变原数据结构的名字,可以新增一个变量接住这个改完名字的数据结构,同时接受更改多个变量,rename(dataframe,c(oldname = ‘newname’, oldname2 = ‘newname2’))
- colnames()/rownames(),可以获取数据框的名字又可以对数据框进行命名,当然重命名也可以
数据组合(增加数据列)
增加数据框的变量within()/transform()/dplyr包-mutate()/直接用$符号增加一列
- within(data frame,操作1,操作2…),中间新加的列需要进行命名,加个名字,否则新加入的变量将不进入新的数据框中;within函数可以改变数据框结构,with作用是定位当前数据框,不能对数据框进行改变,with之间的不同的操作之间是可以没有分号,但最后要有分号。此函数不改变原数据框
- transform()函数,transform(dataframe,操作1,操作2),此函数的操作也要给新列加上名字(其实很正常,要给这一列命名,这一列才存在滴)
要给新加的列加名字的,给两列进行离差标准化 - dplyr包中的mutate(dataframe,操作1,操作2),不改变原数据框,同时也可以自动起名字,就这一点感觉就比transform与within实用
- 使用$符号直接加入一列,经常作为变量初始化。
数据组合
- paste()拼接函数,直接对向量进行操作,向量化运算合并的内容有一个是向量就会是向量化运算
- rbind(),按照行合并;cbind(),按列合并
- merge(x,y,by.x=’colname’,by.y=’colname’,all.x=T/F,all.y=T/F,all=T/f)
当连接按键不一样时候用by.x,by.y
当要保留df1全部元素时,df2只保留与df1相匹配的数据其余排除,没有的用NA呈现,此时就要用到了all.x(all.y)参数
df1与df2的数据全部保留,无法匹配的用NA代替,用到merge()的all=TRUE 参数.发现因子变量的缺失值外面还有个尖括号。。
缺失值
脏数据包括:缺失值,异常值(问卷调查,录入),不一致的值,重复数据,含有特殊符号(如#,¥)的数据
缺失值
缺失值产生的原因
- 有些信息暂时无法获取,或者获取信息的代价太大;
- 有些信息是被遗漏的,可能是人为忘记/认为不重要/忘记填/数据理解错误,机械原因/如数据采集设备故障/存储介质故障/传输媒体故障;
- 属性值不存在,某些情况下,缺失值并不意味着有错误,对于某些对象来说属性是不存在的,如未婚人配偶名,未激活行用卡客户的激活日期
缺失值影响
- 数据挖掘模型所表现出的不确定性更加显著,模型中蕴涵的确定性成分更难把握
- 数据挖掘建模将丢失大量的有用信息
- 包含空值的数据会使挖掘建模过程陷入混乱,导致不可靠的输出
对缺失值做简单统计分析
- 统计缺失值的变量个数
- 统计每个变量的未缺失数
- 统计变量的缺失数及缺失率
缺失值处理步骤
- 1)识别缺失数据;2)检查导致数据缺失的原因;3)对于不合理的值定义为缺失值;4)删除包含缺失值的实例或合理的数值代替(插补缺失值),有些函数自带na.rm参数会过滤掉缺失值
替换缺失值,发现有缺失值的不能是整个数据框拉出来处理,只能拿出一列来~ - 识别缺失值:NA(不可得)代表缺失值 is.na();NaN(不是一个数)代表不可能的值 is.nan();Inf和-Inf分别代表正无穷和负无穷 is.infinite(), 返回逻辑值
- is.na()为向量化操作,判断向量中每一个元素是否为缺失值
- 函数complete.cases() 可用来识别矩阵或数据框中没有缺失值的行。若每行都包含完整的实例,则返回TRUE的逻辑向量;若每行有一个或多个缺失值,则返回FALSE;此函数仅将NA和NaN识别为缺失值,无穷值(Inf和-Inf)被当作有效值, 返回的是vector形式
- 利用complete.cases() 可以用来删除含有缺失值的行,并计算完整个案的比例;因为逻辑变量为0-1数,有个特色就是mean就等于1的百分比,可以用mean(complete.cases())来计算完整个案的比例
探索缺失值模式
- 列表显示缺失值:complete.cases()/mice包中的md.pattern()函数可生成一个以矩阵或数据框形式展示缺失值模式的表格
1代表没有缺失值,0代表有缺失值;第一行代表9个特征都没有缺失的个例,共有42个;倒数第二行代表span,Dream,NonD有缺失其他特征没有缺失的个例共有1个;最后一行给出每个变量中缺失值的数目。请自己用心体会。。。懒得写,下次有时间补上
- 图形探究缺失数据:VIM包中提供了大量能可视化数据集中缺失值模式的函数,aggr(),matrixplot(),scattMiss()
aggr(sleep,prop=FALSE,numbers = TRUE)
aggr(sleep,prop=TRUE,numbers = TRUE)
matrixplot(sleep)函数可生成展示每个实例数据的图形
library(VIM)matrixplot(sleep) ##数值型数据被重新转换到[0,1]区间,并用灰度来表示大小:浅色表示值小,深色表示值大;默认缺失值为红色;所画出的图红色被阴影化处理,因此相对显眼;按照BodyWgt将序排列。
图形鼠标放在图片上变成加号时候,有可能有惊喜,有惊喜。matrixplot()在R中画的图,是可以交互的,可以点击按照不同的特征进行排序
跟matrixplot(sleep,sortby=)使用参数一样
有交互的例子(直接用R来编辑),可以查看不同种类的图,socool~
marginplot()函数:可生成一幅散点图,在图形边界展示两个变量的缺失值信息,以Gest(哺乳动物妊娠期时长)与Dream(做梦时长)关系为例
marginplot(sleep[c("Gest","Dream")],pch=c(20),col=c("darkgray","red","blue")) ##灰色箱形图,为除去空值后的箱形图,红色点为空值及个数统计
R数据结构
数据结构及元素在内存中的组织形式,R语言支持的数据类型有haracter(字符型),numeric(数值型),integer(整型),complex(复数型),logical(逻辑型)其中复数大部分编程语言不支持的,R支持。R语言的六大数据结构:
- 一维数据结构:向量(数值变量)/因子(分类变量)
- 二维数据结构:矩阵(所有数据元素为同型)/数据框(由向量组成,不要求所有元素同型)
- 高维数据结构:数组/列表
数据采样
子集选区
subset()函数更好用,因为可以过滤行也可以选择列,相比filter,个人感觉
直接过滤,对小型数据挺方便的
subset()函数,相当于,相当于查询或按照条件过滤,subset(dataframe,行的筛选条件,选择展示的列)
- dplyr()包中的filter()函数,只能对数据框的行进行过滤,filter函数中行筛选的并条件用逗号可以了,虽然我并没觉得有啥用目前。。。filter(dataferame,条件1,条件2)
采样
增加删除特征
数据标准化
一维数据结构
R中没有标量的概念,一个数字是看做一个向量的;在R中因子使用整型数值进行存储。
一维数据构建方法:
- c函数
- :操作符,得到连续的数
- seq(from, to,by,length.out,along.with),along.with的参数为一个向量名,表示新生成的向量的长度与along.with是一样滴
- 因子构造,factor()及gl()函数
- 如果不指定数字(level)和标签(labels)的对应关系,则按照标签字母顺序与数字进行对应,如果想人为指定两者对应关系,使用factor函数中levels参数
- gl(n, k, length = n*k, labels = seq_len(n), ordered = FALSE),n表示因子个数,k表示重复次数,labels表示标签
- 数据探索之数据预处理
- Python笔记-数据探索和预处理
- 数据挖掘之数据预处理
- 数据预处理之数据描述
- 数据挖掘之数据预处理
- 数据挖掘之数据预处理
- 数据挖掘之数据预处理
- 数据预处理之数据归一化
- 数据分析之数据预处理
- 数据预处理之数据标准化
- 数据预处理之归一化
- 数据预处理之归一化
- 数据预处理之归一化
- 数据预处理之标准化
- 数据预处理之Normalize
- 数据预处理之归一化
- 数据预处理之scaling
- 数据挖掘之数据探索
- 多条件查询分页页面JSP
- JBOSS引入外部jar包报错
- Permission denied (publickey). fatal: Could not read from remote repository. Pleasemake sure you h
- Linux上安装jdk
- ajax使用,前端与后端交互
- 数据探索之数据预处理
- CSS3 Flex布局(容器)
- 基本数据类型和引用数据类型
- Codeforces626F-Group Projects-神奇状态之DP
- Java实现文件上传
- MCU编译与运行浅谈
- 2017
- 变色的DNA-Dijkstra模板
- Python列表的常用方法