【数据挖掘】实验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:数据预处理(1) 一:实验目的与要求 1:熟悉和掌握数据预处理,学习数据清洗、数据集成、数据变换、数据规约、R语言中主要数据预处理函数。 二:实验内容 【缺失值分析】 第一步࿱…...
383.赎金信
给你两个字符串:ransomNote 和 magazine ,判断 ransomNote 能不能由 magazine 里面的字符构成。 如果可以,返回 true ;否则返回 false 。 magazine 中的每个字符只能在 ransomNote 中使用一次。 思路:将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 音频焦点,音频策略梳理
音频焦点和音频策略两个不同的概念,容易搞混 先来看下音频焦点和音频策略直接的区别和联系 音频策略的主要功能是为该音频找到合适的硬件设备播放 1 音频策略流程: (从usage->device) attributesBuilder.setUsage--->audioservice.mCarAudioCont…...
go语言-基础元素与结构的使用
go基础元素与结构的使用,快速上手 编译go文件 编译为可执行文件 go build 文件名.go运行文件 ./文件名输入/输出 引用fmt库(关于输入输出的库) 输入 scanf按照给定的格式依次读取数据(包括非法数据),不…...

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

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

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

是德科技keysight DSOX3024T示波器
181/2461/8938产品概述: DSOX3024T 示波器 要特性与技术指标 使用电容触摸屏进行简洁的触控操作: •提高调试效率 •触控设计可以简化文档记录 •使用起来就像您喜欢的智能手机或平板电脑一样简单 使用 MegaZoom IV 技术揭示偶发异常: •超快…...
C#获取HTML源码
C#获取HTML源码 2024年03月23日记录 以前的那个从网上找到的方法, 在一些网站上用不了,如17K,取出来的是乱码,要么就是一坨JS,好像是用JS又重新加载了什么的 using System; using System.Collections.Generic; using System.We…...

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

JavaEE--小Demo--数据库建立
目录 实验准备 本次所要新建的文件 实验步骤 step1-demo.sql 1.在resources文件夹下新建demo.sql文件 2.打开此目录,并运行命令提示符 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 数据库中有两个非常重要的参数,一个是innodb_flush_log_at_trx_commit,另外一个是sync_binlog,这两个参数称之为双一参数,前者控制了redo log 的刷盘机制,后者控制了binlog 的刷盘机制 这两个参…...

CodeSys创建自定义的html5控件
文章目录 背景创建html5control.xml文件控件界面以及逻辑的实现使用的资源安装自定义的html5控件库 背景 查看官方的资料:https://content.helpme-codesys.com/en/CODESYS%20Visualization/_visu_html5_dev.html 官方的例子: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的用户行为
在当今数字化时代,社交媒体平台已经成为人们生活中不可或缺的一部分,而Facebook作为全球最大的社交网络之一,其背后隐藏着许多数据之谜。本文将深入探讨Facebook的用户行为,并试图解读其中的奥秘。 用户行为数据的收集 Facebook作…...

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

【Oracle APEX开发小技巧12】
有如下需求: 有一个问题反馈页面,要实现在apex页面展示能直观看到反馈时间超过7天未处理的数据,方便管理员及时处理反馈。 我的方法:直接将逻辑写在SQL中,这样可以直接在页面展示 完整代码: SELECTSF.FE…...

【入坑系列】TiDB 强制索引在不同库下不生效问题
文章目录 背景SQL 优化情况线上SQL运行情况分析怀疑1:执行计划绑定问题?尝试:SHOW WARNINGS 查看警告探索 TiDB 的 USE_INDEX 写法Hint 不生效问题排查解决参考背景 项目中使用 TiDB 数据库,并对 SQL 进行优化了,添加了强制索引。 UAT 环境已经生效,但 PROD 环境强制索…...
基于Uniapp开发HarmonyOS 5.0旅游应用技术实践
一、技术选型背景 1.跨平台优势 Uniapp采用Vue.js框架,支持"一次开发,多端部署",可同步生成HarmonyOS、iOS、Android等多平台应用。 2.鸿蒙特性融合 HarmonyOS 5.0的分布式能力与原子化服务,为旅游应用带来…...
多模态商品数据接口:融合图像、语音与文字的下一代商品详情体验
一、多模态商品数据接口的技术架构 (一)多模态数据融合引擎 跨模态语义对齐 通过Transformer架构实现图像、语音、文字的语义关联。例如,当用户上传一张“蓝色连衣裙”的图片时,接口可自动提取图像中的颜色(RGB值&…...
如何为服务器生成TLS证书
TLS(Transport Layer Security)证书是确保网络通信安全的重要手段,它通过加密技术保护传输的数据不被窃听和篡改。在服务器上配置TLS证书,可以使用户通过HTTPS协议安全地访问您的网站。本文将详细介绍如何在服务器上生成一个TLS证…...
Neo4j 集群管理:原理、技术与最佳实践深度解析
Neo4j 的集群技术是其企业级高可用性、可扩展性和容错能力的核心。通过深入分析官方文档,本文将系统阐述其集群管理的核心原理、关键技术、实用技巧和行业最佳实践。 Neo4j 的 Causal Clustering 架构提供了一个强大而灵活的基石,用于构建高可用、可扩展且一致的图数据库服务…...

04-初识css
一、css样式引入 1.1.内部样式 <div style"width: 100px;"></div>1.2.外部样式 1.2.1.外部样式1 <style>.aa {width: 100px;} </style> <div class"aa"></div>1.2.2.外部样式2 <!-- rel内表面引入的是style样…...
全面解析各类VPN技术:GRE、IPsec、L2TP、SSL与MPLS VPN对比
目录 引言 VPN技术概述 GRE VPN 3.1 GRE封装结构 3.2 GRE的应用场景 GRE over IPsec 4.1 GRE over IPsec封装结构 4.2 为什么使用GRE over IPsec? IPsec VPN 5.1 IPsec传输模式(Transport Mode) 5.2 IPsec隧道模式(Tunne…...

Maven 概述、安装、配置、仓库、私服详解
目录 1、Maven 概述 1.1 Maven 的定义 1.2 Maven 解决的问题 1.3 Maven 的核心特性与优势 2、Maven 安装 2.1 下载 Maven 2.2 安装配置 Maven 2.3 测试安装 2.4 修改 Maven 本地仓库的默认路径 3、Maven 配置 3.1 配置本地仓库 3.2 配置 JDK 3.3 IDEA 配置本地 Ma…...

Linux --进程控制
本文从以下五个方面来初步认识进程控制: 目录 进程创建 进程终止 进程等待 进程替换 模拟实现一个微型shell 进程创建 在Linux系统中我们可以在一个进程使用系统调用fork()来创建子进程,创建出来的进程就是子进程,原来的进程为父进程。…...