当前位置: 首页 > news >正文

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

实验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包时不会出错,如下图所示。

相关文章:

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

实验5&#xff1a;数据预处理&#xff08;1&#xff09; 一&#xff1a;实验目的与要求 1&#xff1a;熟悉和掌握数据预处理&#xff0c;学习数据清洗、数据集成、数据变换、数据规约、R语言中主要数据预处理函数。 二&#xff1a;实验内容 【缺失值分析】 第一步&#xff1…...

383.赎金信

给你两个字符串&#xff1a;ransomNote 和 magazine &#xff0c;判断 ransomNote 能不能由 magazine 里面的字符构成。 如果可以&#xff0c;返回 true &#xff1b;否则返回 false 。 magazine 中的每个字符只能在 ransomNote 中使用一次。 思路&#xff1a;将magazine 中字…...

Python 3 教程(8)

heisenbug601 601***902@qq.com 参考地址 311 tuple和list非常类似,但是tuple一旦初始化就不能修改,比如同样是列出同学的名字: 代码如下: >>> classmates = (Michael, Bob, Tracy) 现在,classmates这个tuple不能变了,它也没有append(),insert()这样的方法…...

Mysql数据库深入理解

目录 一、什么是数据库 二、Mysql基本架构图 1.Mysql客户端/服务器架构 2.客户端与服务器的连接过程 3.服务器处理客户端请求 4.一条查询SQL执行顺序 4.1连接器 4.2查询缓存 4.3解析器 4.4执行器 4.4.1预处理阶段 4.4.2优化阶段 4.4.3执行阶段 5.一条记录如何存…...

android 音频焦点,音频策略梳理

音频焦点和音频策略两个不同的概念&#xff0c;容易搞混 先来看下音频焦点和音频策略直接的区别和联系 音频策略的主要功能是为该音频找到合适的硬件设备播放 1 音频策略流程&#xff1a; (从usage->device) attributesBuilder.setUsage--->audioservice.mCarAudioCont…...

go语言-基础元素与结构的使用

go基础元素与结构的使用&#xff0c;快速上手 编译go文件 编译为可执行文件 go build 文件名.go运行文件 ./文件名输入/输出 引用fmt库&#xff08;关于输入输出的库&#xff09; 输入 scanf按照给定的格式依次读取数据&#xff08;包括非法数据&#xff09;&#xff0c;不…...

【leetcode热题】 二叉树的右视图

给定一个二叉树的 根节点 root&#xff0c;想象自己站在它的右侧&#xff0c;按照从顶部到底部的顺序&#xff0c;返回从右侧所能看到的节点值。 示例 1: 输入: [1,2,3,null,5,null,4] 输出: [1,3,4]示例 2: 输入: [1,null,3] 输出: [1,3]示例 3: 输入: [] 输出: []解法一 题…...

康奋威科技邀您到场参观2024长三角快递物流展

参展企业介绍 杭州康奋威科技股份有限公司创立于2005年&#xff0c;由国家“万人计划”专家任天挺先生创立并担任法人&#xff0c;是一家专业从事智能装备研发与制造的国家级高新技术企业。专注于自动化控制、机械设计、信息化方面的技术研究&#xff0c;主要为太阳能光伏、智…...

linux centos 安装jenkins,并构建spring boot项目

首先安装jenkins&#xff0c;使用war包安装&#xff0c;比较简单&#xff0c;注意看下载的版本需要的JDK版本&#xff0c;官网下载https://www.jenkins.io/download/ 把下载好的war包放到服务器上&#xff0c;然后运行&#xff0c;注意8080端口的放行 # 前台运行并指定端口 ja…...

是德科技keysight DSOX3024T示波器

181/2461/8938产品概述&#xff1a; DSOX3024T 示波器 要特性与技术指标 使用电容触摸屏进行简洁的触控操作&#xff1a; •提高调试效率 •触控设计可以简化文档记录 •使用起来就像您喜欢的智能手机或平板电脑一样简单 使用 MegaZoom IV 技术揭示偶发异常&#xff1a; •超快…...

C#获取HTML源码

C#获取HTML源码 2024年03月23日记录 以前的那个从网上找到的方法, 在一些网站上用不了&#xff0c;如17K&#xff0c;取出来的是乱码&#xff0c;要么就是一坨JS&#xff0c;好像是用JS又重新加载了什么的 using System; using System.Collections.Generic; using System.We…...

element-ui checkbox 组件源码分享

简单分享 checkbox 组件&#xff0c;主要从以下三个方面来分享&#xff1a; 1、组件的页面结构 2、组件的属性 3、组件的方法 一、组件的页面结构 二、组件的属性 2.1 value / v-model 属性&#xff0c;绑定的值&#xff0c;类型 string / number / boolean&#xff0c;无…...

JavaEE--小Demo--数据库建立

目录 实验准备 本次所要新建的文件 实验步骤 step1-demo.sql 1.在resources文件夹下新建demo.sql文件 2.打开此目录&#xff0c;并运行命令提示符 3.打开数据库mysql -uroot -p 4.创建数据库create database demo; 5.使用数据库use demo; 6.导入数据source demo.sql;…...

读算法的陷阱:超级平台、算法垄断与场景欺骗笔记19_前方的路

1. 技术与财富分配不均 1.1. 当前的财富分配不均早已成为世界难题 1.1.1. 世界上有一半的人口——相当于35亿人——拥有的财富却不敌在一辆双层巴士上的商业精英的个人财富总和 1.2. 部分线上市场仍受到竞争机制支配的事实并不能为其他市场的反竞争策略开脱 1.3. 企业的市场…...

MySQL双一参数性能测试

MySQL双一参数 MySQL 数据库中有两个非常重要的参数&#xff0c;一个是innodb_flush_log_at_trx_commit&#xff0c;另外一个是sync_binlog&#xff0c;这两个参数称之为双一参数&#xff0c;前者控制了redo log 的刷盘机制&#xff0c;后者控制了binlog 的刷盘机制 这两个参…...

CodeSys创建自定义的html5控件

文章目录 背景创建html5control.xml文件控件界面以及逻辑的实现使用的资源安装自定义的html5控件库 背景 查看官方的资料&#xff1a;https://content.helpme-codesys.com/en/CODESYS%20Visualization/_visu_html5_dev.html 官方的例子&#xff1a;https://forge.codesys.com/…...

Xcode15报错: SDK does not contain ‘libarclite‘

pod lib lint *** 报错 clang: error: SDK does not contain libarclite at the path /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/arc/libarclite_iphonesimulator.a; try increasing the minimum deployment target 或者xcode…...

矩阵快速幂

快速幂 #include<iostream> using namespace std;int main(){int a, b, p;cin>>a>>b>>p;int res 1 % p;while(b){if(b & 1) res 1ll * res * a % p;a 1ll * a * a % p;b >> 1;}cout<<res;return 0; }斐波那契数列 #include <ios…...

数据之谜:解读Facebook的用户行为

在当今数字化时代&#xff0c;社交媒体平台已经成为人们生活中不可或缺的一部分&#xff0c;而Facebook作为全球最大的社交网络之一&#xff0c;其背后隐藏着许多数据之谜。本文将深入探讨Facebook的用户行为&#xff0c;并试图解读其中的奥秘。 用户行为数据的收集 Facebook作…...

学习 考证 帆软 FCP-FineBI V6.0 考试经验

学习背景&#xff1a; 自2024年1月起&#xff0c;大部分时间就在家里度过了&#xff0c;想着还是需要充实一下自己&#xff0c;我是一个充满热情的个体。由于之前公司也和帆软结缘&#xff0c;无论是 Fine-Report 和 Fine-BI 都有接触3年之久&#xff0c;但是主要做为管理者并…...

[特殊字符] 智能合约中的数据是如何在区块链中保持一致的?

&#x1f9e0; 智能合约中的数据是如何在区块链中保持一致的&#xff1f; 为什么所有区块链节点都能得出相同结果&#xff1f;合约调用这么复杂&#xff0c;状态真能保持一致吗&#xff1f;本篇带你从底层视角理解“状态一致性”的真相。 一、智能合约的数据存储在哪里&#xf…...

C++_核心编程_多态案例二-制作饮品

#include <iostream> #include <string> using namespace std;/*制作饮品的大致流程为&#xff1a;煮水 - 冲泡 - 倒入杯中 - 加入辅料 利用多态技术实现本案例&#xff0c;提供抽象制作饮品基类&#xff0c;提供子类制作咖啡和茶叶*//*基类*/ class AbstractDr…...

椭圆曲线密码学(ECC)

一、ECC算法概述 椭圆曲线密码学&#xff08;Elliptic Curve Cryptography&#xff09;是基于椭圆曲线数学理论的公钥密码系统&#xff0c;由Neal Koblitz和Victor Miller在1985年独立提出。相比RSA&#xff0c;ECC在相同安全强度下密钥更短&#xff08;256位ECC ≈ 3072位RSA…...

前端倒计时误差!

提示:记录工作中遇到的需求及解决办法 文章目录 前言一、误差从何而来?二、五大解决方案1. 动态校准法(基础版)2. Web Worker 计时3. 服务器时间同步4. Performance API 高精度计时5. 页面可见性API优化三、生产环境最佳实践四、终极解决方案架构前言 前几天听说公司某个项…...

[ICLR 2022]How Much Can CLIP Benefit Vision-and-Language Tasks?

论文网址&#xff1a;pdf 英文是纯手打的&#xff01;论文原文的summarizing and paraphrasing。可能会出现难以避免的拼写错误和语法错误&#xff0c;若有发现欢迎评论指正&#xff01;文章偏向于笔记&#xff0c;谨慎食用 目录 1. 心得 2. 论文逐段精读 2.1. Abstract 2…...

React19源码系列之 事件插件系统

事件类别 事件类型 定义 文档 Event Event 接口表示在 EventTarget 上出现的事件。 Event - Web API | MDN UIEvent UIEvent 接口表示简单的用户界面事件。 UIEvent - Web API | MDN KeyboardEvent KeyboardEvent 对象描述了用户与键盘的交互。 KeyboardEvent - Web…...

论文解读:交大港大上海AI Lab开源论文 | 宇树机器人多姿态起立控制强化学习框架(一)

宇树机器人多姿态起立控制强化学习框架论文解析 论文解读&#xff1a;交大&港大&上海AI Lab开源论文 | 宇树机器人多姿态起立控制强化学习框架&#xff08;一&#xff09; 论文解读&#xff1a;交大&港大&上海AI Lab开源论文 | 宇树机器人多姿态起立控制强化…...

【python异步多线程】异步多线程爬虫代码示例

claude生成的python多线程、异步代码示例&#xff0c;模拟20个网页的爬取&#xff0c;每个网页假设要0.5-2秒完成。 代码 Python多线程爬虫教程 核心概念 多线程&#xff1a;允许程序同时执行多个任务&#xff0c;提高IO密集型任务&#xff08;如网络请求&#xff09;的效率…...

关于 WASM:1. WASM 基础原理

一、WASM 简介 1.1 WebAssembly 是什么&#xff1f; WebAssembly&#xff08;WASM&#xff09; 是一种能在现代浏览器中高效运行的二进制指令格式&#xff0c;它不是传统的编程语言&#xff0c;而是一种 低级字节码格式&#xff0c;可由高级语言&#xff08;如 C、C、Rust&am…...

JVM暂停(Stop-The-World,STW)的原因分类及对应排查方案

JVM暂停(Stop-The-World,STW)的完整原因分类及对应排查方案,结合JVM运行机制和常见故障场景整理而成: 一、GC相关暂停​​ 1. ​​安全点(Safepoint)阻塞​​ ​​现象​​:JVM暂停但无GC日志,日志显示No GCs detected。​​原因​​:JVM等待所有线程进入安全点(如…...