本文代码均已在 MATLAB R2019b 测试通过,如有错误,欢迎指正。

一、分箱平滑的原理

(1)分箱方法

在分箱前,一定要先排序数据,再将它们分到等深(等宽)的箱中。

常见的有两种分箱方法:等深分箱和等宽分箱。

等深分箱:按记录数进行分箱,每箱具有相同的记录数,每箱的记录数称为箱的权重,也称箱子的深度。

等宽分箱:在整个属性值的区间上平均分布,即每个箱的区间范围设定为一个常量,称为箱子的宽度。

(2)数据平滑

将数据划分到不同的箱子之后,可以运用如下三种策略对每个箱子中的数据进行平滑处理:

平均值平滑:箱中的每一个值被箱中数值的平均值替换。

中值平滑:箱中的每一个值被箱中数值的中值替换。

边界平滑:箱中的最大值和最小值称为箱子的边界,箱中的每一个值被最近的边界值替换。

二、Matlab代码实现

首先用rand()函数随机生成20*5的矩阵,其数据范围为[0,1]。

1.等深分箱

输入箱子的深度h(1

clear;clc;

A=rand(20,5); % 随机生成20*5的矩阵,其中每个数取值范围[0,1]

fprintf("当前生成的原数据:"); A

% 排序,参数1表示按列排序,取2为按行排序;'ascend'为升序,'descend'为降序

A=sort(A,1,'ascend');

fprintf("将原数据的每列排序后:"); A

h=input("请输入等深分箱的深度h(1

%% 对每列进行等深分箱,然后求每个箱子的均值

[n,m]=size(A); % n行m列

for j=1:m % 列j

for i=1:h:n % 行i

% 当前箱子第一个数位置为i,最后一个数位置为min(i+h-1,n)

p1=int64(i); % 转换成整数(i默认是double类型,但是索引必须要为整数)

p2=int64(min(i+h-1,n));

B(p1:p2,j)=mean(A(p1:p2,j)); % 当前箱子的均值

end

end

fprintf("\n经过等深分箱,用箱均值平滑处理后的数据:"); B

代码运行结果

输入的深度为3:

当前生成的原数据:

A =

0.4067 0.4504 0.5747 0.5154 0.9969

0.6669 0.2057 0.3260 0.6575 0.5535

0.9337 0.8997 0.4564 0.9509 0.5155

0.8110 0.7626 0.7138 0.7223 0.3307

0.4845 0.8825 0.8844 0.4001 0.4300

0.7567 0.2850 0.7209 0.8319 0.4918

0.4170 0.6732 0.0186 0.1343 0.0710

0.9718 0.6643 0.6748 0.0605 0.8877

0.9880 0.1228 0.4385 0.0842 0.0646

0.8641 0.4073 0.4378 0.1639 0.4362

0.3889 0.2753 0.1170 0.3242 0.8266

0.4547 0.7167 0.8147 0.3017 0.3945

0.2467 0.2834 0.3249 0.0117 0.6135

0.7844 0.8962 0.2462 0.5399 0.8186

0.8828 0.8266 0.3427 0.0954 0.8862

0.9137 0.3900 0.3757 0.1465 0.9311

0.5583 0.4979 0.5466 0.6311 0.1908

0.5989 0.6948 0.5619 0.8593 0.2586

0.1489 0.8344 0.3958 0.9742 0.8979

0.8997 0.6096 0.3981 0.5708 0.5934

将原数据的每列排序后:

A =

0.1489 0.1228 0.0186 0.0117 0.0646

0.2467 0.2057 0.1170 0.0605 0.0710

0.3889 0.2753 0.2462 0.0842 0.1908

0.4067 0.2834 0.3249 0.0954 0.2586

0.4170 0.2850 0.3260 0.1343 0.3307

0.4547 0.3900 0.3427 0.1465 0.3945

0.4845 0.4073 0.3757 0.1639 0.4300

0.5583 0.4504 0.3958 0.3017 0.4362

0.5989 0.4979 0.3981 0.3242 0.4918

0.6669 0.6096 0.4378 0.4001 0.5155

0.7567 0.6643 0.4385 0.5154 0.5535

0.7844 0.6732 0.4564 0.5399 0.5934

0.8110 0.6948 0.5466 0.5708 0.6135

0.8641 0.7167 0.5619 0.6311 0.8186

0.8828 0.7626 0.5747 0.6575 0.8266

0.8997 0.8266 0.6748 0.7223 0.8862

0.9137 0.8344 0.7138 0.8319 0.8877

0.9337 0.8825 0.7209 0.8593 0.8979

0.9718 0.8962 0.8147 0.9509 0.9311

0.9880 0.8997 0.8844 0.9742 0.9969

请输入等深分箱的深度h(1

经过等深分箱,用箱均值平滑处理后的数据:

B =

0.2615 0.2013 0.1273 0.0521 0.1088

0.2615 0.2013 0.1273 0.0521 0.1088

0.2615 0.2013 0.1273 0.0521 0.1088

0.4262 0.3195 0.3312 0.1254 0.3279

0.4262 0.3195 0.3312 0.1254 0.3279

0.4262 0.3195 0.3312 0.1254 0.3279

0.5472 0.4519 0.3899 0.2633 0.4527

0.5472 0.4519 0.3899 0.2633 0.4527

0.5472 0.4519 0.3899 0.2633 0.4527

0.7360 0.6490 0.4443 0.4851 0.5541

0.7360 0.6490 0.4443 0.4851 0.5541

0.7360 0.6490 0.4443 0.4851 0.5541

0.8526 0.7247 0.5611 0.6198 0.7529

0.8526 0.7247 0.5611 0.6198 0.7529

0.8526 0.7247 0.5611 0.6198 0.7529

0.9157 0.8478 0.7031 0.8045 0.8906

0.9157 0.8478 0.7031 0.8045 0.8906

0.9157 0.8478 0.7031 0.8045 0.8906

0.9799 0.8979 0.8495 0.9626 0.9640

0.9799 0.8979 0.8495 0.9626 0.9640

2.等宽分箱

输入箱子的宽度w(0

clear;clc;

A=rand(20,5); % 随机生成20*5的矩阵,其中每个数取值范围[0,1]

fprintf("当前生成的原数据:"); A

% 排序,参数1表示按列排序,取2为按行排序;'ascend'为升序,'descend'为降序

A=sort(A,1,'ascend');

fprintf("将原数据的每列排序后:"); A

w=input("请输入等宽分箱的宽度w(0

%% 对每列进行等宽分箱,然后求每个箱子的均值

[n,m]=size(A); % n行m列

for j=1:m % 列j

pos=1; % 当前箱子第一个数的位置

A(n+1,j)=18e9; % 保证i=n+1时,A(i,j)-A(pos,j)>w一定成立

for i=1:n+1 % 行i

if A(i,j)-A(pos,j)>w % 当前箱子最后一个数的位置为i-1

B(pos:i-1,j)=mean(A(pos:i-1,j)); % 当前箱子的均值

pos=i; % 更新为下一个箱子的第一个数的位置

end

end

end

fprintf("\n经过等宽分箱,用箱均值平滑处理后的数据:"); B

代码运行结果

输入的宽度为0.2:

当前生成的原数据:

A =

0.5038 0.3600 0.6690 0.1432 0.9419

0.6128 0.4542 0.5002 0.5594 0.6559

0.8194 0.3864 0.2180 0.0046 0.4519

0.5319 0.7756 0.5716 0.7667 0.8397

0.2021 0.7343 0.1222 0.8487 0.5326

0.4539 0.4303 0.6712 0.9168 0.5539

0.4279 0.6938 0.5996 0.9870 0.6801

0.9661 0.9452 0.0560 0.5051 0.3672

0.6201 0.7842 0.0563 0.2714 0.2393

0.6954 0.7056 0.1525 0.1008 0.5789

0.7202 0.1093 0.0196 0.5078 0.8669

0.3469 0.3899 0.4352 0.5856 0.4068

0.5170 0.5909 0.8322 0.7629 0.1126

0.5567 0.4594 0.6174 0.0830 0.4438

0.1565 0.0503 0.5201 0.6616 0.3002

0.5621 0.2287 0.8639 0.5170 0.4014

0.6948 0.8342 0.0977 0.1710 0.8334

0.4265 0.0156 0.9081 0.9386 0.4036

0.8363 0.8637 0.1080 0.5905 0.3902

0.7314 0.0781 0.5170 0.4406 0.3604

将原数据的每列排序后:

A =

0.1565 0.0156 0.0196 0.0046 0.1126

0.2021 0.0503 0.0560 0.0830 0.2393

0.3469 0.0781 0.0563 0.1008 0.3002

0.4265 0.1093 0.0977 0.1432 0.3604

0.4279 0.2287 0.1080 0.1710 0.3672

0.4539 0.3600 0.1222 0.2714 0.3902

0.5038 0.3864 0.1525 0.4406 0.4014

0.5170 0.3899 0.2180 0.5051 0.4036

0.5319 0.4303 0.4352 0.5078 0.4068

0.5567 0.4542 0.5002 0.5170 0.4438

0.5621 0.4594 0.5170 0.5594 0.4519

0.6128 0.5909 0.5201 0.5856 0.5326

0.6201 0.6938 0.5716 0.5905 0.5539

0.6948 0.7056 0.5996 0.6616 0.5789

0.6954 0.7343 0.6174 0.7629 0.6559

0.7202 0.7756 0.6690 0.7667 0.6801

0.7314 0.7842 0.6712 0.8487 0.8334

0.8194 0.8342 0.8322 0.9168 0.8397

0.8363 0.8637 0.8639 0.9386 0.8669

0.9661 0.9452 0.9081 0.9870 0.9419

请输入等宽分箱的宽度w(0

经过等宽分箱,用箱均值平滑处理后的数据:

B =

0.2352 0.0633 0.1038 0.1005 0.2174

0.2352 0.0633 0.1038 0.1005 0.2174

0.2352 0.0633 0.1038 0.1005 0.2174

0.5213 0.0633 0.1038 0.1005 0.4312

0.5213 0.3413 0.1038 0.1005 0.4312

0.5213 0.3413 0.1038 0.3560 0.4312

0.5213 0.3413 0.1038 0.3560 0.4312

0.5213 0.3413 0.1038 0.5610 0.4312

0.5213 0.4837 0.5373 0.5610 0.4312

0.5213 0.4837 0.5373 0.5610 0.4312

0.5213 0.4837 0.5373 0.5610 0.4312

0.5213 0.4837 0.5373 0.5610 0.4312

0.5213 0.7702 0.5373 0.5610 0.4312

0.7496 0.7702 0.5373 0.5610 0.6383

0.7496 0.7702 0.5373 0.8467 0.6383

0.7496 0.7702 0.7591 0.8467 0.6383

0.7496 0.7702 0.7591 0.8467 0.8705

0.7496 0.7702 0.7591 0.8467 0.8705

0.7496 0.7702 0.7591 0.8467 0.8705

0.9661 0.9452 0.9081 0.9870 0.8705

等距离分箱matlab代码,数据挖掘实验(二)数据预处理【等深分箱与等宽分箱】...相关推荐

  1. 河北工业大学数据挖掘实验一 数据预处理

    河北工业大学数据挖掘实验一 数据预处理 一.实验目的 二.实验原理 1.数据预处理 2.数据清理 3.数据集成 4.数据变换 5.数据归约 三.实验内容和步骤 1.实验内容 2.实验步骤 3.程序框图 ...

  2. 数据挖掘 | 实验二 数据的可视化

    文章目录 一.目的与要求 二.实验设备与环境.数据 三.实验内容 (1)数据获取 (2)数据的清理 (3)可视化技术 a) 直方图展示各个维度的值分布情况:(20个分箱) b) 箱式图展示三类鸢尾花的 ...

  3. 数据挖掘实验二结果(构建cube的三个维度,即三个txt,然后做各种查询)C++实现(代码调试环境为Windows下的CLion使用WSL的Linux)

    数据挖掘实验二结果(构建cube的三个维度,即三个txt,然后做各种查询)C++实现(代码调试环境为Windows下的CLion使用WSL的Linux) 构建cube的三个维度,查询三家店七天四物的销 ...

  4. 计算机硬件数据统计实验报告,实验二数据统计.docx

    实验二数据统计.docx 南京航空航天大学电工电子实验中心实验报告课程名称计算机硬件技术基础实验名称数据统计姓名学号评定成绩审阅教师实验时间20170502南京航空航天大学南京航空航天大学一.实验目的 ...

  5. 实验二 数据选择器的设计与vivado集成开发环境【Verilog】

    实验二 数据选择器的设计与vivado集成开发环境[Verilog] 前言 实验二 数据选择器的设计与vivado集成开发环境 一.实验目的 二.实验环境 三.实验任务 四.实验原理 五.实验步骤 六 ...

  6. 实验2-Python数据预处理

    实验2-Python数据预处理 文章目录 实验2-Python数据预处理 一.实验目的与要求 二.实验任务及答案 一.实验目的与要求 1.目的: 掌握数据预处理和分析的常用库Pandas的基本用法,学 ...

  7. 广州大学机器学习与数据挖掘实验二

    实验二 逻辑回归与朴素贝叶斯分类 一. 实验目的 本实验课程是计算机.人工智能.软件工程等专业学生的一门专业课程,通过实验,帮助学生更好地掌握数据挖掘与机器学习相关概念.技术.原理.应用等:通过实验提 ...

  8. 用matlab解单纯形法,实验二MATLAB编程单纯形法求解

    <实验二MATLAB编程单纯形法求解>由会员分享,可在线阅读,更多相关<实验二MATLAB编程单纯形法求解(11页珍藏版)>请在人人文库网上搜索. 1.北京联合大学 实验报告 ...

  9. matlab gui 二阶系统,实验二 二阶系统matlab仿真(dg).doc

    利用simulink进行仿真的步骤: 打开Matlab软件: 在Command Window命令行>>后输入simulink并回车或点击窗口上部图标直接进入simulink界面: 点击Fi ...

最新文章

  1. centos7安装mongodb3.4
  2. OpenCv java 颜色空间(9)
  3. NIO详解(七):进程间通信(MappedByteBuffer)
  4. Struts1.x框架基本原理
  5. C#获取SQLServer数据库表名和字段名
  6. c语言如何获取串口列表,如何通过串口来读写数据,请教达人
  7. android电梯程序设计,课内资源 - 基于Android实现的电梯调度模拟
  8. BetterZip使用教程:Mac用户如何提取压缩文件?
  9. Visual Basic快捷教程——Visual Basic 2017 破冰
  10. 冲印常见问题杂锦(网上摘录)
  11. coalesce函数详解--判空三目表达式
  12. Tensorboard启动时面对大量文件存在内存升高问题
  13. 31省市自治区农村居民消费价格指数(2010-2020年)
  14. 信用卡的使用之二——哪些情况下银行降额
  15. 人工智能(A.I.)的几个常见基础定义及发展概述
  16. python hdf5_使用Python将大量数字写入HDF5文件
  17. 高内聚低耦合是什么含义,怎么实现?
  18. 基于java网盘搜索的设计与实现
  19. matlab如何画趋势线,如何画趋势线?看完这10招,轻松掌握!(干货)
  20. amd 显卡 linux驱动程序,AMD Radeon/Mobility/FireGL系列显卡催化剂驱动8.6官方正式版For Linux x86/x64...

热门文章

  1. SAP ABAP三代增强点查找
  2. width和min-width的区别和差异性比较
  3. linux操作系统提示无法挂接u盘,虚拟机linux不能挂接u盘
  4. Ubuntu20.04-更换软件源
  5. Simulink仿真报错奇点(singurlity)问题
  6. Yolov5官方网络改进:增加search模块(基于迁移学习的目标检测+多模态零样本自定义标签分类网络)
  7. win7字体安装_Office2007软件安装教程
  8. 单片机固件下载方式总结
  9. C语言初学者-计算器(不奥深,基础,嘿嘿)
  10. 黑房东!我忍无可忍了,这次一定要你得到法律的制裁