第二章 数据描述与统计指标 —— 数据挖掘(主编:吕欣 王梦宁)》读书笔记

第二章 数据描述与统计指标

拿到一堆原始数据,就像面对一堆杂乱的零件——你得先搞清楚每个零件的样子、功能,才能组装出有用的机器。数据描述与统计指标就是这样的“工具”:通过预处理清洗数据、用统计量刻画特征、靠可视化呈现规律,让我们从混沌的数据中找到秩序,读懂数据的"脾气"。

一、数据预处理

原始数据往往带着“瑕疵”——缺失值、错误值、格式混乱……直接用这些数据建模,就像用变质的食材做饭,结果一定糟糕。数据预处理就是给数据“体检”(发现问题)和“整容”(修复问题),让它适合后续分析。

1. 数据预处理的核心目标:提升数据质量

数据质量的好坏,看六个标准:

  • 完整性:没有缺失值,所有必要数据都存在;
  • 一致性:同一指标在不同数据源中定义一致(如“年龄”在A表是“周岁”,在B表也应如此);
  • 准确性:数据真实反映实际情况(如“身高180米”显然错误);
  • 可靠性:多次测量结果稳定(如同一用户的体重数据不应一天内从50kg跳到100kg);
  • 可用性:数据格式适合分析(如日期格式统一为“YYYY-MM-DD”);
  • 时效性:数据能反映当前状态(如用5年前的用户偏好数据做推荐,结果必然不准)。

预处理的所有步骤,都是为了让数据更接近这六个标准。

2. 数据清洗:给数据“挑错”和“改错”

数据清洗是预处理的核心,主要解决两类问题:缺失值和噪声。

缺失值就像拼图少了一块——可能是采集时漏掉了(如用户没填年龄),也可能是数据本身不存在(如未婚者的“配偶年龄”)。处理方法取决于缺失比例和数据特点:

  • 缺失比例低(<5%)

    • 数值型数据:用均值(如“身高”用平均身高)、中位数(如“收入”用中位数,避免异常值影响)填充;
    • 分类型数据:用众数(如“性别”用出现次数最多的“男”)或“未知”标签填充;
    • 进阶方法:用机器学习算法(如KNN)根据相似样本预测缺失值(如用同年龄段、同职业用户的消费数据预测某用户的缺失消费值)。
  • 缺失比例高(>30%)
    直接删除该字段(如某问卷中“月收入”90%用户未填写,这个字段已无分析价值)。

  • 关键原则:不要盲目填充!如果缺失是“有规律的”(如低收入用户不愿填收入),强行填充会引入偏差,此时需单独标记缺失组分析。

(2)噪声处理:数据里的“杂音”怎么消?

噪声是数据中的“异常值”或“错误值”(如“年龄=-5”“体温300℃”),会干扰分析结果,常见处理方法有:

  • 分箱(Binning):把数据分到多个区间(“箱子”),用箱子的均值/中位数替换原始值,平滑噪声。

    • 例:将“年龄”分为[0-18]、[19-30]、[31-50]等箱,用“29”替换[19-30]箱中的异常值“300”,避免极端值影响。
  • 回归:用模型拟合数据,用预测值修正异常值。

    • 例:拟合“体重-身高”线性回归模型,若某人体重10kg但身高180cm(远低于预测值),用模型预测的65kg替换。
  • 离群点检测:主动找出异常值,再决定删除或修正。

    • 统计方法:用Z分数(超过±3视为异常)、IQR(超过四分位距1.5倍视为异常);
    • 算法方法:用K近邻(与邻居差距太大的点)、LOF密度检测(密度远低于周围的点)。
    • 例:电商交易中,某用户单次消费100万(远超平均的1000元),经检测是输入错误(多写了一个零),修正为10万。
  • 主成分分析(PCA):通过降维过滤噪声——保留数据的主要特征(信号),丢弃次要成分(噪声)。

    • 例:图像数据中,PCA能过滤像素噪声,保留主要轮廓。

3. 数据集成:把“零散数据”拼成“完整拼图”

现实中的数据往往来自多个源头(如电商的用户表、订单表、商品表),数据集成就是把这些零散数据“拼”起来,形成完整的数据集。

  • 核心挑战

    • 实体识别:不同表中的“同一事物”可能有不同名称(如A表“用户ID”和B表“客户编号”指同一用户);
    • 冗余处理:不同表中的重复字段(如A表和B表都有“用户手机号”)需去重,避免信息重复。
  • 操作方法

    • 用“主键”关联表(如用“用户ID”将用户表和订单表连接);
    • 统一字段格式(如将“性别”的“男/女”“1/0”统一为“男/女”)。

4. 数据归约:给数据“减肥”,保留精华

数据太多(如100万条记录、1000个特征)会拖慢分析速度,数据归约就是在不损失关键信息的前提下“瘦身”:

  • 维度归约:减少特征数量(如从1000个特征减到100个)。

    • 主成分分析(PCA):将相关特征合并为少数“主成分”(如用“综合成绩”代替“语文、数学、英语”成绩);
    • 属性选择:删除无关特征(如用“相关性分析”删除与目标无关的字段)。
  • 数值归约:用更简洁的形式表示数据。

    • 抽样:用部分数据代表整体(如从100万用户中抽1万样本分析);
    • 直方图:用区间频数代替原始数据(如用“20-30岁:500人”代替500个具体年龄)。

5. 数据变换:让数据“标准化”,便于比较

不同特征的“单位”和“范围”可能差异很大(如“年龄”是0-120,“收入”是0-100万),直接分析会被“大数值”带偏(如KNN算法中,收入的权重会远大于年龄)。数据变换就是消除这种差异:

  • 规范化(归一化):将数据映射到固定区间(如[0,1])。

    • 最小-最大规范化:xnorm=x−xminxmax−xminx_{norm} = \frac{x - x_{min}}{x_{max} - x_{min}}xnorm=xmaxxminxxmin
      例:将“收入”从[1万, 10万]映射到[0,1],则5万对应(5−1)/(10−1)=0.44(5-1)/(10-1)=0.44(51)/(101)=0.44
  • 标准化(Z分数):将数据转化为“均值为0,标准差为1”的分布。

    • 公式:xstd=x−xˉsx_{std} = \frac{x - \bar{x}}{s}xstd=sxxˉxˉ\bar{x}xˉ是均值,sss是标准差)
    • 例:某班成绩均值80,标准差10,則90分的Z分数为(90−80)/10=1(90-80)/10=1(9080)/10=1(比均值高1个标准差)。
  • 离散化:将连续数据分成离散类别(如“年龄”→“少年/青年/中年/老年”)。

    • 分箱离散化:将“收入”分为[0-5万)、[5-10万)等区间;
    • 聚类离散化:用K-means将数据自动分成若干簇(如将用户消费行为分为“低/中/高”三类)。

二、数据属性

数据属性是数据的“基本特征”——就像人有“性别”“年龄”,数据也有不同类型,了解类型才能选对分析方法。

1. 按数据类型分:标称、序数、数值

(1)标称属性:“分类但无顺序”

值是符号或类别,之间没有大小关系。

  • 例:颜色(红/绿/蓝)、性别(男/女)、职业(教师/医生)。
  • 分析方式:统计频数(如“男性占比60%”),不能做加减乘除。
(2)序数属性:“有顺序但无距离”

值有先后顺序,但差值无实际意义。

  • 例:成绩等级(优/良/中/差)、满意度(1星-5星)、学历(小学/初中/高中)。
  • 特点:“优>良”成立,但“优-良=1”无意义(不能说优比良好1个单位)。
(3)数值属性:“可量化,有数学意义”

可分为“区间标度”和“比率标度”:

  • 区间标度:有单位,零点是人为规定的,不能做比率运算。
    • 例:温度(℃)——0℃不代表“没有温度”,20℃也不是10℃的2倍;年份(2020年不是2010年的2倍)。
  • 比率标度:有自然零点(表示“没有”),可做比率运算。
    • 例:身高(0cm表示没有高度,180cm是90cm的2倍);体重、收入、时间(10小时是5小时的2倍)。

2. 按取值范围分:离散与连续

  • 离散属性:取值有限且可枚举(通常是整数)。
    • 例:学生人数(1班30人)、骰子点数(1-6)。
  • 连续属性:取值无限且连续(理论上可取任意值)。
    • 例:时间(1.5小时)、速度(60.5km/h)。

三、数据描述性统计:用“数字”给数据“画像”

拿到清洗好的数据,下一步是用统计量“刻画”它的特征——就像用身高、体重描述人的体型,我们用集中趋势、离散程度、分布形态描述数据的“长相”。

1. 集中趋势:数据“扎堆”在哪里?

集中趋势反映数据的“中心位置”,常用三个指标:

  • 均值(Mean):所有数据的平均值,xˉ=1n∑i=1nxi\bar{x} = \frac{1}{n}\sum_{i=1}^n x_ixˉ=n1i=1nxi

    • 例:5个学生成绩80,85,90,95,100,均值=90。
    • 优点:利用所有数据信息,反应灵敏;
    • 缺点:受异常值影响大(如加入一个成绩200,均值变为110,不再代表多数人水平)。
  • 中位数(Median):排序后中间的数(奇数个取中间,偶数个取中间两数平均)。

    • 例:成绩80,85,90,95,100的中位数=90;80,85,90,95的中位数=(85+90)/2=87.5。
    • 优点:不受异常值影响,稳健性好;
    • 适用场景:描述偏态分布数据(如收入,多数人低,少数人极高,中位数更能代表“普遍水平”)。
  • 众数(Mode):出现次数最多的值。

    • 例:数据80,85,85,90,95的众数=85。
    • 优点:可用于分类型数据(如“性别”的众数是“男”);
    • 缺点:可能不存在(所有值出现次数相同)或有多个(如85和90都出现2次)。

2. 离散程度:数据“ spread”得有多开?

离散程度反映数据的“分散度”——同样是均值90的两个班级,一个班成绩集中在85-95,一个班在60-120,差异很大。

  • 极差(Range):最大值-最小值,R=xmax−xminR = x_{max} - x_{min}R=xmaxxmin

    • 例:成绩80,85,90,95,100的极差=20。
    • 优点:计算简单;
    • 缺点:只看两端,忽略中间数据分布(如80,90,90,90,100和80,85,90,95,100的极差相同,但分散度不同)。
  • 方差(Variance):各数据与均值差的平方的平均值,s2=1n−1∑i=1n(xi−xˉ)2s^2 = \frac{1}{n-1}\sum_{i=1}^n (x_i - \bar{x})^2s2=n11i=1n(xixˉ)2

    • 例:成绩80,85,90,95,100的方差=((80-90)²+…+(100-90)²)/(5-1)=125。
    • 意义:方差越大,数据越分散。
  • 标准差(Standard Deviation):方差的平方根,s=s2s = \sqrt{s^2}s=s2

    • 例:上述成绩的标准差=√125≈11.18。
    • 优点:单位与原始数据一致(成绩的标准差单位是“分”),更直观。

3. 分布形态:数据“长”得对称吗?陡峭吗?

(1)缺失值处理:数据“缺了一块”怎么办? 在这里插入图片描述
  • 偏度(Skewness):衡量分布是否对称。

    • 偏度=0:对称分布(如正态分布,左右对称);
    • 偏度>0:右偏(正偏)——右侧尾巴长,多数数据集中在左侧(如收入,多数人低,少数人极高);
    • 偏度<0:左偏(负偏)——左侧尾巴长,多数数据集中在右侧(如考试成绩,多数人高分,少数人极低)。

    在这里插入图片描述

  • 峰度(Kurtosis):衡量分布的陡峭程度。

    • 峰度=3:正态分布(中等陡峭);
    • 峰度>3:尖峰分布——数据集中在均值附近,尾部较厚(如股票收益率,多数小波动,少数极端涨跌);
    • 峰度<3:平峰分布——数据分散,峰部平缓(如均匀分布)。

四、数据可视化:让数据“说话”的图像语言

数字太抽象,图像更直观——可视化就是把统计量转化为图形,让数据的规律“一眼可见”。

1. 常用可视化图表:各有擅长,按需选择

在这里插入图片描述

(1)条形图:比大小,看类别差异
  • 适用场景:比较不同类别的数值(如不同品牌销量、不同部门人数)。
  • 优点:直观对比大小,类别清晰;
  • 注意:类别过多时(如50个品牌),条形会挤在一起,建议合并或用其他图表。
  • 例:对比A、B、C三个品牌的月销量,A柱高3000,B柱高2000,C柱高1500,一眼看出A销量最高。

在这里插入图片描述

(2)饼图:看占比,晓全局
  • 适用场景:展示各部分占总体的比例(如市场份额、部门人数占比)。

  • 优点:直观呈现“部分与整体”关系;

  • 缺点:类别超过5个时,扇形太小难以区分,且无法比较不同总体的比例(如“甲公司A产品占比30%”和“乙公司A产品占比30%”,无法比较实际销量)。

  • 例:某公司利润来源中,国内业务占60%,海外占30%,其他占10%,饼图中国内业务的扇形最大。

在这里插入图片描述

(3)箱型图:展分布,抓异常
  • 适用场景:展示数据的分布特征(中位数、四分位数、异常值),尤其适合比较多组数据。
  • 图表构成:
    • 箱子:中间线是中位数,上下边是上/下四分位数(包含50%数据);
    • 须线:延伸至1.5倍四分位距内的最大值/最小值;
    • 圆点:超出须线的异常值。
  • 例:比较两个班级的成绩箱型图,班A的箱子更窄(成绩集中),无异常值;班B的箱子宽(成绩分散),有3个异常低分。

在这里插入图片描述

(4)直方图:看分布,找规律
  • 适用场景:展示连续数据的分布形态(如身高、成绩、时间)。
  • 做法:将数据分成若干区间( bins),用柱子高度表示区间内的频数。
  • 例:学生成绩直方图中,50-60分的柱子矮,80-90分的柱子最高,说明多数人成绩集中在80-90分。

在这里插入图片描述

(5)折线图:追趋势,看变化
  • 适用场景:展示数据随时间或连续变量的变化趋势(如销售额随月份变化、温度随海拔变化)。

  • 优点:清晰呈现增减趋势、拐点(如销量在6月突然上升)。

  • 例:某产品全年销量折线图,1-2月下降,3-6月上升,7-12月平稳,可直观发现旺季在3-6月。

在这里插入图片描述

(6)散点图:探关联,找关系
  • 适用场景:观察两个变量的相关性(如身高与体重、广告投入与销量)。

  • 模式解读:

    • 点呈从左下到右上的趋势:正相关(如广告投入越多,销量越高);
    • 点呈从左上到右下的趋势:负相关(如价格越高,销量越低);
    • 点无规律:无明显相关。
  • 例:广告投入(x轴)与销量(y轴)的散点图呈正相关,可初步判断“多投广告可能提升销量”。

在这里插入图片描述

(7)气泡图:加维度,展更多信息
  • 适用场景:在散点图基础上,用气泡大小表示第三个变量(如城市的人口、GDP、面积)。
  • 例:x轴是城市人口,y轴是GDP,气泡大小是面积——能同时展示三个指标的关系,如“人口多、GDP高的城市,面积也较大”。

2. 可视化工具:Python的“三板斧”

  • Matplotlib:Python可视化的“基石”,支持绘制各种基础图表(条形图、折线图等),灵活性高,但代码稍繁琐;
  • Seaborn:基于Matplotlib的“升级版”,默认样式更美观,支持复杂图表(如热力图、小提琴图),一行代码就能画出专业图表;
  • Pandas:数据处理库,内置简单可视化功能(如df.plot()),适合快速预览数据分布。

总结:数据描述是“分析的起点”,不是“终点”

数据预处理让数据“可用”,描述性统计让数据“可懂”,可视化让数据“可见”——这三步是数据分析的“基本功”。但要记住:描述不是目的,而是为了后续的深入分析(如建模、预测)打基础。

就像医生先测体温、血压(描述性统计),再结合症状诊断病因(深入分析),我们也需要通过这些工具,从数据中找到问题、提出假设,最终解决实际问题。

课程设计报告:总体方案设计说明 一、软件开发环境配置 本系统采用C++作为核心编程语言,结合Qt 5.12.7框架进行图形用户界面开发。数据库管理系统选用MySQL,用于存储用户数据小精灵信息。集成开发环境为Qt Creator,操作系统平台为Windows 10。 二、窗口界面架构设计 系统界面由多个功能模块构成,各模块职责明确,具体如下: 1. 起始界面模块(Widget) 作为应用程序的入口界面,提供初始导航功能。 2. 身份验证模块(Login) 负责处理用户登录账户注册流程,实现身份认证机制。 3. 游戏主大厅模块(Lobby) 作为用户登录后的核心交互区域,集成各项功能入口。 4. 资源管理模块(BagWidget) 展示用户持有的全部小精灵资产,提供可视化资源管理界面。 5. 精灵详情模块(SpiritInfo) 呈现选定小精灵的完整属性数据状态信息。 6. 用户名录模块(UserList) 系统内所有注册用户的基本信息列表展示界面。 7. 个人资料模块(UserInfo) 显示当前用户的详细账户资料历史数据统计。 8. 服务器精灵选择模块(Choose) 对战准备阶段,从服务器可用精灵池中选取参战单位的专用界面。 9. 玩家精灵选择模块(Choose2) 对战准备阶段,从玩家自有精灵库中筛选参战单位的操作界面。 10. 对战演算模块(FightWidget) 实时模拟精灵对战过程,动态呈现战斗动画状态变化。 11. 对战结算模块(ResultWidget) 对战结束后,系统生成并展示战斗结果报告数据统计。 各模块通过统一的事件驱动机制实现数据通信状态同步,确保系统功能的连贯性数据一致性。界面布局遵循模块化设计原则,采用响应式视觉方案适配不同显示环境。 资源来源于网络分享,仅用于学习交流使用,请勿用于商业,如有侵权请联系我删除!
D3.js作为一种基于JavaScript的数据可视化框架,通过数据驱动的方式实现对网页元素的动态控制,广泛应用于网络结构的图形化呈现。在交互式网络拓扑可视化应用中,该框架展现出卓越的适应性功能性,能够有效处理各类复杂网络数据的视觉表达需求。 网络拓扑可视化工具借助D3.js展示节点间的关联结构。其中,节点对应于网络实体,连线则表征实体间的交互关系。这种视觉呈现模式有助于用户迅速把握网络整体架构。当数据发生变化时,D3.js支持采用动态布局策略重新计算节点分布,从而保持信息呈现的清晰度逻辑性。 网络状态监测界面是该工具的另一个关键组成部分,能够持续反映各连接通道的运行指标,包括传输速度、响应时间及带宽利用率等参数。通过对这些指标的持续追踪,用户可以及时评估网络性能状况并采取相应优化措施。 实时数据流处理机制是提升可视化动态效果的核心技术。D3.js凭借其高效的数据绑定特性,将连续更新的数据流同步映射至图形界面。这种即时渲染方式不仅提升了数据处理效率,同时改善了用户交互体验,确保用户始终获取最新的网络状态信息。 分层拓扑展示功能通过多级视图呈现网络的层次化特征。用户既可纵览全局网络架构,也能聚焦特定层级进行细致观察。各层级视图支持展开或收起操作,便于用户开展针对性的结构分析。 可视化样式定制系统使用户能够根据实际需求调整拓扑图的视觉表现。从色彩搭配、节点造型到整体布局,所有视觉元素均可进行个性化设置,以实现最优的信息传达效果。 支持拖拽缩放操作的交互设计显著提升了工具的使用便利性。用户通过简单的视图操控即可快速浏览不同尺度的网络结构,这一功能降低了复杂网络系统的认知门槛,使可视化工具更具实用价值。 综上所述,基于D3.js开发的交互式网络拓扑可视化系统,整合了结构展示、动态布局、状态监控、实时数据处理、分层呈现及个性化配置等多重功能,形成了一套完整的网络管理解决方案。该系统不仅协助用户高效管理网络资源,还能提供持续的状态监测深度分析能力,在网络运维领域具有重要应用价值。 资源来源于网络分享,仅用于学习交流使用,请勿用于商业,如有侵权请联系我删除!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值