【数据挖掘】实验5:数据预处理(1)

news2024/11/19 4:30:08

实验5:数据预处理(1)

一:实验目的与要求

1:熟悉和掌握数据预处理,学习数据清洗、数据集成、数据变换、数据规约、R语言中主要数据预处理函数。

二:实验内容

【缺失值分析】

第一步:构建数据框

score <- data.frame(student = c("A","B","C","D"),

                    gender = c("M","M","F","F"),

                    math = c(90,70,80,60),

                    Eng = c(88,78,69,98),

                    p1 = c(66,59,NA,88))

score

第二步:检测缺失值是否存在

is.na(score)

第三步:判断数据中是否存在缺失值

anyNA(score)


第四步:判断哪行有缺失值

complete.cases(score)

第五步:删除存在缺失值的行

score[complete.cases(score),]

第六步:删除数据框中所有带缺失值的行

na.omit(score)

三:课堂练习

【练习1】PPT-07第13页——缺失值处理(均值替换、回归差补法、多重插值法)

第一步:读取销售数据文件,提取标题行

(inputfile <- read.csv('catering_sale.csv', header = TRUE, fileEncoding="GB2312"))

完整运行结果:

          日期    销量

1     2015/3/1   51.00

2    2015/2/28 2618.20

3    2015/2/27 2608.40

4    2015/2/26 2651.90

5    2015/2/25 3442.10

6    2015/2/24 3393.10

7    2015/2/23 3136.60

8    2015/2/22 3744.10

9    2015/2/21 6607.40

10   2015/2/20 4060.30

11   2015/2/19 3614.70

12   2015/2/18 3295.50

13   2015/2/16 2332.10

14   2015/2/15 2699.30

15   2015/2/14      NA

16   2015/2/13 3036.80

17   2015/2/12  865.00

18   2015/2/11 3014.30

19   2015/2/10 2742.80

20    2015/2/9 2173.50

21    2015/2/8 3161.80

22    2015/2/7 3023.80

23    2015/2/6 2998.10

24    2015/2/5 2805.90

25    2015/2/4 2383.40

26    2015/2/3 2620.20

27    2015/2/2 2600.00

28    2015/2/1 2358.60

29   2015/1/31 2682.20

30   2015/1/30 2766.80

31   2015/1/29 2618.80

32   2015/1/28 2714.30

33   2015/1/27 2280.80

34   2015/1/26 2414.00

35   2015/1/25 3130.60

36   2015/1/24 2716.90

37   2015/1/23 2930.80

38   2015/1/22 2504.90

39   2015/1/21 2559.50

40   2015/1/20 2168.60

41   2015/1/19 2436.40

42   2015/1/18 3234.30

43   2015/1/17 3061.00

44   2015/1/16 2900.10

45   2015/1/15 2646.80

46   2015/1/14 2615.20

47   2015/1/13 2124.40

48   2015/1/12 1958.00

49    2015/1/8 2259.10

50    2015/1/7 2419.80

51    2015/1/6 2775.00

52    2015/1/5 2594.90

53    2015/1/4 2468.30

54    2015/1/3 3004.30

55    2015/1/2 3313.30

56    2015/1/1 3613.60

57  2014/12/31 2655.90

58  2014/12/30 2644.30

59  2014/12/29 2565.30

60  2014/12/27 2525.90

61  2014/12/26 2778.00

62  2014/12/25 2542.10

63  2014/12/24 2473.30

64  2014/12/23 2240.10

65  2014/12/22 2575.00

66  2014/12/21 3802.80

67  2014/12/18 2274.70

68  2014/12/17 2687.20

69  2014/12/16 2577.80

70  2014/12/15 2583.00

71  2014/12/14 3282.60

72  2014/12/13 3113.70

73  2014/12/12 2661.40

74  2014/12/11 2553.20

75  2014/12/10 2511.30

76   2014/12/9 2710.30

77   2014/12/8 2468.10

78   2014/12/7 3041.50

79   2014/12/6 3178.90

80   2014/12/5 2594.40

81   2014/12/4 2381.10

82   2014/12/3 2415.00

83   2014/12/2 2236.40

84  2014/11/30 3207.20

85  2014/11/29 3059.50

86  2014/11/28 3039.10

87  2014/11/26 2817.50

88  2014/11/25 2891.80

89  2014/11/24 2470.10

90  2014/11/23 3556.60

91  2014/11/22 3397.70

92  2014/11/20 2761.60

93  2014/11/19 2618.20

94  2014/11/18 2758.30

95  2014/11/17 2614.30

96  2014/11/16 3437.10

97  2014/11/15 3250.00

98  2014/11/14 3063.70

99  2014/11/13 2839.20

100 2014/11/12 2360.90

101 2014/11/11 2158.50

102 2014/11/10 2005.50

103  2014/11/9 3236.40

104  2014/11/8   22.00

105  2014/11/7 2452.60

106  2014/11/6 2265.00

107  2014/11/5 2566.10

108  2014/11/4 2527.20

109  2014/11/3 2326.50

110  2014/11/2 2941.90

111  2014/11/1   60.00

112 2014/10/31 2520.90

113 2014/10/30 2446.20

114 2014/10/29 2549.40

115 2014/10/28 2449.30

116 2014/10/27 2162.50

117 2014/10/26 2781.30

118 2014/10/25 3060.60

119 2014/10/24 2064.00

120 2014/10/22 2439.70

121 2014/10/21 2476.20

122 2014/10/20 2478.30

123 2014/10/19 2826.20

124 2014/10/18 2924.80

125 2014/10/17 2417.50

126 2014/10/16 2450.10

127 2014/10/15 2533.00

128 2014/10/14 2238.70

129 2014/10/13 2388.80

130 2014/10/12 3291.30

131 2014/10/11 2738.80

132 2014/10/10 2344.10

133  2014/10/9 2068.80

134  2014/10/8 3185.30

135  2014/10/7 2778.60

136  2014/10/6 2921.10

137  2014/10/5 2524.30

138  2014/10/4 3057.10

139  2014/10/3 3039.60

140  2014/10/2 3193.40

141  2014/10/1 3075.40

142  2014/9/30 2847.60

143  2014/9/29 2311.40

144  2014/9/28 2327.30

145  2014/9/27 9106.44

146  2014/9/26 2616.60

147  2014/9/25 2620.20

148  2014/9/24 2616.40

149  2014/9/23 2655.80

150  2014/9/22 2310.70

151  2014/9/21 2935.80

152  2014/9/20 3017.90

153  2014/9/19 2625.50

154  2014/9/18 2752.70

155  2014/9/17 2181.50

156  2014/9/16 2440.50

157  2014/9/15 2422.80

158  2014/9/14 2583.60

159  2014/9/13 2728.90

160  2014/9/12 2525.30

161  2014/9/11 2531.70

162  2014/9/10 2300.50

163   2014/9/9 2097.50

164   2014/9/8 4065.20

165   2014/9/7 3555.20

166   2014/9/6 3462.50

167   2014/9/5 3033.10

168   2014/9/4 2926.10

169   2014/9/3 2431.40

170   2014/9/2 2706.00

171   2014/9/1 3049.90

172  2014/8/31 3494.70

173  2014/8/30 3691.90

174  2014/8/29 2929.50

175  2014/8/28 2760.60

176  2014/8/27 2593.70

177  2014/8/26 2884.40

178  2014/8/25 2591.30

179  2014/8/24 3022.60

180  2014/8/23 3052.10

181  2014/8/22 2789.20

182  2014/8/21 2909.80

183  2014/8/20 2326.80

184  2014/8/19 2453.10

185  2014/8/18 2351.20

186  2014/8/17 3279.10

187  2014/8/16 3381.90

188  2014/8/15 2988.10

189  2014/8/14 2577.70

190  2014/8/13 2332.30

191  2014/8/12 2518.60

192  2014/8/11 2697.50

193  2014/8/10 3244.70

194   2014/8/9 3346.70

195   2014/8/8 2900.60

196   2014/8/7 2759.10

197   2014/8/6 2915.80

198   2014/8/5 2618.10

199   2014/8/4 2993.00

200   2014/8/3 3436.40

201   2014/8/2 2261.70

 


第二步:变换变量名

inputfile <- data.frame(sales = inputfile$'销量', date = inputfile$'日期')

inputfile

第三步:数据截取

inputfile <- inputfile[5:16, ]

inputfile

第四步:缺失数据的识别

is.na(inputfile)  # 判断是否存在缺失

n <- sum(is.na(inputfile))  # 输出缺失值个数

n

第五步:异常值识别

par(mfrow = c(1, 2))  # 将绘图窗口划为1行两列,同时显示两图

dotchart(inputfile$sales)  # 绘制单变量散点图

boxplot(inputfile$sales, horizontal = TRUE)  # 绘制水平箱形图

第六步:异常数据处理

inputfile$sales[5] = NA  # 将异常值处理成缺失值

fix(inputfile)  # 表格形式呈现数据

 

第七步:缺失值的处理

inputfile$date <- as.numeric(inputfile$date)  # 将日期转换成数值型变量

sub <- which(is.na(inputfile$sales))  # 识别缺失值所在行数

inputfile1 <- inputfile[-sub, ]  # 将数据集分成完整数据和缺失数据两部分

inputfile2 <- inputfile[sub, ]

sub

inputfile1

inputfile2

 

第八步:行删除法处理缺失,结果转存

result1 <- inputfile1

result1

第九步:均值替换法处理缺失,结果转存

avg_sales <- mean(inputfile1$sales)  # 求变量未缺失部分的均值

inputfile2$sales <- rep(avg_sales,n)  # 用均值替换缺失

result2 <- rbind(inputfile1, inputfile2)  # 并入完成插补的数据

result2

第十步:回归插补法处理缺失,结果转存

model <- lm(sales ~ date, data = inputfile1)  # 回归模型拟合

inputfile2$sales <- predict(model, inputfile2)  # 模型预测

result3 <- rbind(inputfile1, inputfile2)

result3

第十一步:多重插补法处理缺失,结果转存

install.packages("lattice")

install.packages("MASS")

install.packages("nnet")

install.packages("mice")

install.packages("tidyr")

install.packages("foreach")

install.packages("shape")

install.packages("mitml")

install.packages("lme4")

library(lattice)

library(MASS)

library(nnet)

library(mice)

imp <- mice(inputfile, m = 4)  # 4重插补,即生成4个无缺失数据集

fit <- with(imp,lm(sales ~ date, data = inputfile))  # 选择插补模型

pooled <- pool(fit)

summary(pooled)

result4 <- complete(imp, action = 3)  # 选择第三个插补数据集作为结果

result4

四:实验知识点总结

1:处理缺失值的方法可分为三类:删除记录、数据插补和不处理。

2:插值方法有Hermite插值、分段插值、样条插值法,而最主要的有拉格朗日插值法、牛顿插值法。

五:遇到的问题和解决方法

问题1:PPT中第6页开始的练习内容,没有给出具体的数据。

解决1:在CSDN中查询到有博客存有该练习的数据框。链接如下:R语言 清洗数据_1.创建数据框数据,自定义数据,检查数据是否有缺失值、异常值,对数据进行清洗 r语-CSDN博客


问题2:练习1中的【回归插补法处理缺失,结果转存】,无法正确运行,会出现以下报错。

 


解决2:重新运行一遍之前的代码,发现问题出在第一次将日期转换成数值型变量,如下图所示。

如果采用上面的代码,运行得到的inputfile1和inputfile2如下图所示,date处全为NA。


此时需要在这段代码之前加上【inputfile$date <- as.Date(inputfile$date, format = "%Y/%m/%d")】,并且重新运行一遍之前的所有代码,再进行之后的操作。得到的新的inputfile1和inputfile2如下图所示。

问题3:练习1中利用多重插补法处理缺失时,mice依赖包加载时不断报错,如下图所示。

解决3:此时需要根据提示自己再进行依赖包的安装,直至加载mice包时不会出错,如下图所示。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1540230.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Python工具-清理Unity(批量深度)清理U3D项目工程保留关键工程文件

前沿 1. Unity工程越来越多&#xff0c;很久不用的工程里存在了很多无用的大文件夹&#xff0c;极大的影响电脑容量。 2. 我电脑里面U3D工程只有17个&#xff0c;但容量就高达60GB&#xff0c;使用自己编写的工具清理后&#xff0c;减到了30GB多。清理了不是很重要的文件和文件…

2024-03-22 问AI: 介绍一下深度学习中的 sigmoid函数

文心一言 Sigmoid函数是深度学习中常用的一种激活函数&#xff0c;主要用于将神经元的输出值压缩到0和1之间。这种特性使得sigmoid函数在二分类问题中特别有用&#xff0c;因为输出值可以被解释为属于某个类别的概率。 sigmoid函数的数学表达式为&#xff1a; σ(x) 1 / (1…

Notepad++ 如何调整显示字面大小

在 Notepad 上&#xff0c;可以使用 ctrl 加上鼠标的左键来滚动来进行调整。 如何恢复默 可以使用 Ctrl 加数字键盘上的 / 键 来恢复默认设置。 当然也可以通过菜单栏上 view 菜单下的 Zoom 选项。 上面的界面中可以看到我们的在 Notepad 中使用的选项。 Notepad 如何调整显示…

llvm后端

SelectionDAGBuilder是LLVM&#xff08;Low Level Virtual Machine&#xff09;编译器中的一个重要组件&#xff0c;它负责将LLVM中间表示&#xff08;Intermediate Representation&#xff0c;IR&#xff09;转换为SelectionDAG&#xff08;选择有向无环图&#xff09;的形式。…

RabbitMq高可用

消息队列高级 服务异步通信-高级篇1.消息可靠性1.1.生产者消息确认1.2.消息持久化1.3.消费者消息确认1.4.消费失败重试机制1.5.总结 2.死信交换机2.1.初识死信交换机2.2.TTL2.3.延迟队列 3.惰性队列3.1.消息堆积问题3.2.惰性队列 4.MQ集群4.1.集群分类4.2.普通集群4.3.镜像集群…

C#,图论与图算法,计算图(Graph)的岛(Island)数量的算法与源程序

1 孤岛数 给定一个布尔矩阵,求孤岛数。一组相连的1形成一个岛。例如,下面的矩阵包含5个岛: 在讨论问题之前,让我们先了解什么是连接组件。无向图的连通分量是一个子图,其中每两个顶点通过一条路径相互连接,并且不与子图外的其他顶点连接。 所有顶点相互连接的图只有一个…

Spring05 SpringIOC DI

名词解释 今天我们来介绍Spring框架的最重要的part之一 SpringIOC 和 DI 这里的SpringIOC 其实是容器的意思,Spring是一个包含了很多工具方法的IOC容器 什么是IOC呢? IOC其实是Spring的核心思想 Inversion of Control (控制反转) 可能这里你还是不理解这个是啥意思 其实就…

xilinx的高速接口构成原理和连接结构

本文来源&#xff1a; V3学院 尤老师的培训班笔记【高速收发器】xilinx高速收发器学习记录Xilinx-7Series-FPGA高速收发器使用学习—概述与参考时钟GT Transceiver的总体架构梳理 文章目录 一、概述&#xff1a;二、高速收发器结构&#xff1a;2.1 QUAD2.1.1 时钟2.1.2 CHANNEL…

【SysBench】OLTP 基准测试示例

前言 本文采用 MySQL 沙盒实例作为测试目标&#xff0c;使用 sysbench-1.20 对其做 OLTP 基准测试。 有关 MySQL 沙盒的更多信息&#xff0c;请参阅 玩转 MySQL Shell 沙盒实例&#xff0c;【MySQL Shell】6.8 AdminAPI MySQL 沙盒 。 1、部署一个 MySQL 沙盒实例 使用 mysq…

【ESP32S3 Sense接入百度在线语音识别】

视频地址&#xff1a; 1. 前言 使用Seeed XIAO ESP32S3 Sense开发板接入百度智能云实现在线语音识别。自带麦克风模块用做语音输入&#xff0c;通过串口发送字符“1”来控制数据的采集和上传。 步骤概括    (1) 在百度云控制端选择“语音识别”并创建应用获取API Key和Secr…

MapReduce学习问题记录

1、如何跳过对某行数据的处理 第一行数据是字段名不需要处理&#xff0c;我们知道第一行偏移量是0&#xff08;行记录的时候是从数组首地址开始&#xff0c;到了行标识符进行一次计数&#xff0c;这个计数就是行偏移量&#xff0c;从0开始&#xff09;&#xff0c;我们根据偏移…

银行5G短消息应用架构设计

&#xff08;一&#xff09;RCS简介 1.1 RCS的提出与标准制定 RCS(Rich Communication Services & Suite&#xff0c;富媒体通信)是GSMA(Groupe Speciale Mobile Association&#xff0c;全球移动通信系统协会)在2008年提出的一种通讯方式&#xff0c;RCS融合了语音、消息…

【算法每日一练]-图论(保姆级教程篇16 树的重心 树的直径)#树的直径 #会议 #医院设置

目录 树的直径 题目&#xff1a;树的直径 &#xff08;两种解法&#xff09; 做法一&#xff1a; 做法二&#xff1a; 树的重心&#xff1a; 题目&#xff1a; 会议 思路&#xff1a; 题目&#xff1a;医院设置 思路&#xff1a; 树的直径 定义&#xff1a;树中距离最…

android.os.TransactionTooLargeException解决方案,Kotlin

android.os.TransactionTooLargeException解决方案&#xff0c;Kotlin 首先&#xff0c;特意制造一个让Android发生TransactionTooLargeException的场景&#xff0c;一个Activity启动另外一个Activity&#xff0c;在Intent的Bundle里面塞入一个大的ArrayList: import android.…

阿里云OSS存储的视频如何加水印

OSS是不能进行视频添加水印的&#xff0c;可以图片添加水印。 您可以在视频点播中进行配置&#xff1a; https://help.aliyun.com/zh/vod/user-guide/video-watermarks?spma2c4g.11186623.0.i2 原来的业务代码都是使用python 对oss的 视频进行上传 的,上传的视频路径已经保存到…

设计数据库之外部模式:数据库的应用

Chapter5&#xff1a;设计数据库之外部模式&#xff1a;数据库的应用 笔记来源&#xff1a;《漫画数据库》—科学出版社 设计数据库的步骤&#xff1a; 概念模式 概念模式(conceptual schema)是指将现实世界模型化的阶段进而&#xff0c;是确定数据库理论结构的阶段。 概念模…

系统架构设计-构建系统应用

1. 系统架构目标与设计原则 在设计系统架构时&#xff0c;我们的目标是确保系统具有以下特点&#xff1a; 可靠性&#xff1a;系统能够持续稳定运行&#xff0c;保证业务可用性。可伸缩性&#xff1a;系统能够根据负载变化自动扩展或收缩&#xff0c;以应对不同的流量需求。容…

【Java高级】利用反射机制获取类的所有信息

文章目录 1.相关准备2.导航图3. 相关的方法----------------------------------------------类------------------------------------------------------1 类的修饰符2 类名 -----------------------------------------------属性--------------------------------------------…

FileZilla 链接服务器提示 20 秒连接超时

FileZilla 有个默认设置是如果 20 秒没有数据的话会自动中断链接。 Command: Pass: **************** Error: Connection timed out after 20 seconds of inactivity Error: Could not connect to server修改配置 这个配置是可以修改的&#xff0c;修改的步骤为&#xff1a; …

保研复习概率论1

1.什么是随机试验&#xff08;random trial&#xff09;&#xff1f; 如果一个试验满足试验可以在相同的条件下重复进行、试验所有可能结果明确可知&#xff08;或者是可知这个范围&#xff09;、每一次试验前会出现哪个结果事先并不确定&#xff0c;那么试验称为随机试验。 …