数据挖掘概念与技术(第三版)课后答案——第三章_数据挖掘概念与技术(第三版)课后答案——第三章-程序员宅基地

技术标签: 数据挖掘  大数据  

=============需要原版答案请留言!!==============


3.1 数据质量可以从多方面评估,包括准确性、完整性、一致性问题。 提出其他两个方面的数据质量。

准确性:对于一些需要进行精准营销的商品,比如蛋糕店的生日蛋糕、孕妇必备物品等,以上这些商品则需要数据的准确性。

完整性:如果要对某宝、某东或者某宁的买家信息进行一个数据挖掘,从而用来营销其他东西,比如要对地址进行挖掘,此时详细、完整的地址数据则是一个必备的特性。

一致性问题:由于某些不可抗因素而导致的数据不一致,比如技术问题,在并发量大的情况下,记录数据时出现问题;或者某些数据值是一样的,然而在不同的数据库中其命名却不一样;这些不一致性问题在数据挖掘时则会影响挖掘的结果。

数据质量的其他两个尺度:时效性和可信性。

时效性:数据必须在一定时间范围内可用,以便对决策有用。

可信性:数据值必须在可能结果的范围内,以便对决策有用。

 3.2在实际数据中,某些属性缺少值的元组是常见的情况。 描述解决此问题的各种方法。

处理数据元组中缺少值的问题的各种方法包括:

(a)忽略元组:通常在缺少类标签时执行此操作(假设挖掘任务涉及分类或描述)。除非元组包含缺少值的几个属性,否则此方法不太有效。当每个属性的缺失值的百分比相差很大时,这尤其差劲。

(b)手动填充缺失值:通常,此方法很耗时,对于缺失值很多的大型数据集,这可能不是一个合理的任务,尤其是当填充值不容易确定时。

(c)使用全局常量填充缺失值:用相同的常量替换所有缺失的属性值,例如“ Unknown”或-∞之类的标签。如果将缺失的值替换为“未知”,则挖掘程序可能会错误地认为它们构成了一个有趣的概念,因为它们都具有一个共同的值,即“未知”。因此,尽管此方法很简单,但不建议使用。

(d)将属性均值用于定量(数字)值或将属性模式用于分类(标称)值:例如,假设AllElectronics客户的平均收入为$ 28,000。 使用此值替换任何缺失的收入值。

(e)对于属于与给定元组相同类别的所有样本,使用定量(数值)值的属性均值或分类(名义)值的属性模式:例如,如果根据信用风险对客户进行分类,则替换缺失的 与给定元组处于相同信用风险类别的客户的平均收入值。

(f)使用最可能的值来填补缺失值:这可以通过回归,使用贝叶斯形式主义的基于推理的工具或决策树归纳法来确定。 例如,使用数据集中的其他客户属性,我们可以构建决策树来预测收入的缺失值。

 3.3 在习题2.2中,属性age包括如下值(以递增序) :13、15、16、16、19、20、20、21、22、22、25、25、25、25、30、33、33、35、35 ,35、35、36、40、45、46、52、70。

(a) 使用深度为3的箱,用箱均值光滑以上数据。说明你的步骤,讨论这种技术对给定数据的效果。

(b) 如何确定该数据中的离群点?

(c) 还有什么其他方法可以用来光滑数据

(a) 使用深度为3的箱,用箱均值光滑以上数据。说明你的步骤,讨论这种技术对给定数据的效果:
首先,将以上数据划分为深度为3的箱:(13,15,16),(16,19,20),(20,21,22),(22,25,25),(25,25,30),(33,33,35),(35,35,35),(36,40,45),(46,52,70);

其次,用箱均值光滑:(14.7,14.7,14.7),(18.3,18.3,18.3),(21,21,21), (24,24,24),(26.7,26.7,26.7),(33.7,33.7,33.7), (35,35,35),(40.3,40.3,40.3),(56,56,56)。

对于给定数据,该方法虽然在一定程度上光滑了噪声数据,但是由于箱深度太小,将数据的分布特征也抹去了。
(b) 如何确定该数据中的离群点:
可以通过聚类来检测数据中的异常值,在聚类中,将相似的值组织为组或“集群”。 落在聚类集之外的值可以被认为是离群值。 可替代地,在预定的数据分布被实现以允许计算机识别可能的异常值的情况下,可以使用计算机和人工检查的组合。 然后,可以通过人工检查来验证这些可能的异常值,而所需的误差却比验证整个初始数据集所需的误差小得多。

(c) 还有什么其他方法可以用来光滑数据:
可以用于数据平滑的其他方法包括分箱的其他形式,例如通过箱中值进行平滑或通过箱边界进行平滑。 可替代地,等宽度的箱可用于实现任何形式的分级,其中每个箱中的值的间隔范围是恒定的。 除装仓外,其他方法还包括使用回归技术通过将数据拟合到函数(例如通过线性回归或多元回归)来平滑数据。 分类技术可用于实现概念层次结构,这些概念层次结构可通过将较低级别的概念汇总到较高级别的概念来平滑数据。

3.4 讨论数据集成需要考虑的问题。 

数据集成涉及将来自多个源的数据组合到一个一致的数据存储中。 在这种集成过程中必须考虑的问题包括:

  • 模式集成:必须集成来自不同数据源的元数据,以匹配等效的实际实体。 这称为实体识别问题。
  • 处理冗余数据:派生的属性可能是冗余的,不一致的属性命名也可能导致结果数据集中的冗余。 在元组级别可能出现重复,因此需要检测和解决。
  • 数据值冲突的检测和解决:表示,缩放或编码上的差异可能导致相同的现实世界实体属性值在要集成的数据源中有所不同。

 3.5 如下规范化方法的值域是什么?

(a)最小-最大规范化。

(b)z分数规范化。

(c)z分数规范化,使用绝对偏差而不是标准差。

(d)小数定标规范化

  • 最小最大规范化:[new_min, new_max]
  • z分数规范化:
  • z分数规范化,使用绝对偏差而不是标准差:
  • 小数定标规范化: (−1.0,1.0)

3.6 使用如下方法规范化如下数据组:200,300,400,600,1000

(a)令min=0,max=1min=0,max=1,最小最大规范化。

(b)z分数规范化。

(c)z分数规范化,使用均值绝对值偏差而不是标准差。

(d)小数定标规范化。

(a)令min=0,max=1min=0,max=1,最小最大规范化:

(b)z分数规范化:

,其中

(c)z分数规范化,使用均值绝对值偏差而不是标准差

规范化后为−1.25,−0.83,−0.42,0.42,2.08。

(d)小数定标规范化:

,规范化后为0.2,0.3,0.4,0.6,0.1。

3.7 使用习题3.3中给出的age数据,回答以下问题:

(a)使用最小最大规范化将age值35变换到[0.0,1.0]区间。

(b)使用z分数规范化,变换age,其中标准差为12.94。

(c)使用小数定标规范化变换35。

(d)指出给定数据,你愿意使用哪种方法。陈述你的理由。

(a)使用最小最大规范化将age值35变换到[0.0,1.0]区间

为了便于阅读,将A设为属性年龄。 使用公式,其中minA = 13,maxA = 70,new_minA = 0,,new_maxA = 1.0,然后将v = 35转换为v` = 0.39。

(b)使用z分数规范化,变换age,其中标准差为12.94

使用公式(其中 = 809/27 = 29.96和= 12.94),然后将v = 35转换为v` = 0.39。

(c)使用小数定标规范化变换35

使用公式(其中j = 2),将v = 35转换为v` = 0.35。

(d)指出给定数据,你愿意使用哪种方法。陈述你的理由

在给定数据的情况下,人们可能更喜欢使用十进制缩放进行规范化,因为这样的转换将保持数据的分布并直观地解释,同时仍允许在特定年龄段进行挖掘。最小最大规范化具有不希望的结果,即不允许任何将来的值落在当前的最小值和最大值之外,而不会遇到“超出范围的误差”。 由于此类值可能会出现在将来的数据中,因此此方法不太合适。最小最大规范化z分数规范化都极大地改变了原始数据。z分数规范化将值转换为表示它们与标准差之间的距离的度量。 与十进制缩放相比,这种类型的转换对用户而言可能不那么直观。

 3.8 使用习题2.4中给出的age和%fat数据数据,回答如下问题:

(a) 基于z分数规范化,规范化这两个属性。
(b) 计算相关系数(Pearson积矩系数)。这两个变量是正相关还是负相关?计算他们的协方差。

直接套公式即可:

z分数规范化:

相关系数:

协方差:

协方差与相关系数的关系:

3.9 假设12个销售价格记录已经排序,如下所示:5,10,11,13,15,35,50,55,55,72,92,204,215
(a) 等频划分。

(b) 等宽划分

(c) 聚类

(a) 等频划分。

(a) 等频划分。

bin1     5, 10, 11, 13
bin2     15, 35, 50, 55
bin3   72, 92, 204, 215

(b) 等宽划分

等宽分箱:将变量的取值范围分为k个等宽的区间,每个区间当做一个分箱;(215−5)/3=70(215−5)/3=70, 所以区间的距离为70,又需要将其划分为3个箱。

bin1     5, 10, 11, 13, 15, 35, 50, 55, 72
bin2     92
bin3   204, 215

(c) 聚类

这里以数字间的最大间隔来进行一个简单的聚类;

bin1     5, 10, 11, 13,15
bin2     35, 50, 55,72,92
bin3    204, 215

3.10 使用流程图概述如下属性子集选择过程。

(a) 逐步向前选择

(b)逐步向后删除

(c)逐步向前选择和逐步向后删除的组合 

 (a) 逐步向前选择

(b)逐步向后删除

(c)逐步向前选择和逐步向后删除的组合 

3.11使用练习3.3中给出的age数据,

(a) 绘制宽度为10的等宽直方图。

(b) 简要描述如下每种抽样技术的例子:SRSWOR,SRSWR,簇采样,分层抽样。 使用大小为5的样本以及层“youth”, “middle-aged”,和“senior”。

(a)绘制宽度为10的等宽直方图:

(b)简要描述如下每种抽样技术的例子:SRSWOR,SRSWR,簇采样,分层抽样。 使用大小为5的样本以及层“youth”, “middle-aged”,和“senior”:

 元组:

 无放回简单随机抽样 VS 有放回简单随机抽样

 簇抽样:初始簇

 簇抽样

 

分层抽样:

3.12  ChiMerge [Ker92]是一种有监督的,自底向上的(即基于合并的)数据离散化方法。 它依靠χ2分析:将具有最小χ2值的相邻区间合并在一起,直到满足所选的停止标准为止。

(a)简要描述ChiMerge如何工作。

(a)简要描述ChiMerge如何工作。

chiMerge的基本算法是:

begin 
    sort values in ascending order
    assign a separate interval to each distinct value while stopping criteria not met 
    begin 
        compute χ2 of every pair of adjacent intervals 
        merge the two intervals with smallest χ2 value 
    end
end

(b)。。。

3.13 使用伪代码或您喜欢的编程语言提出以下算法:

(a)对于标称数据,基于给定模式中属性的不同值的个数,自动产生概念分层。

(b)对于数值数据,基于等宽划分规则,自动产生概念分层。

(c)对于数值数据,基于等额划分规则,自动产生概念分层。

(a)对于标称数据,基于给定模式中属性的不同值的个数,自动产生概念分层。

用于根据给定架构中属性的不同值的数量自动生成分类数据的概念层次结构的伪代码:

begin 
// 数组以保存名称和属性的不同值计数
// 用于生成概念层次结构
array count_ary[];  // 属性值计数
string count_ary[].name; // 属性名称
int count_ary[].count; //唯一值计数
// 表示概念层次结构的数组(作为值的有序列表)
array concept_hierarchy[];
for each attribute ’A’ in schema { 
    distinct_count = count distinct ’A’; 
    insert (’A’, ’distinct_count’) into count_ary[]; 
} 
//按count升序对ary []进行排序;
sort count_ary[] ascending by count;
for (i = 0; i < count_ary[].length; i++) { 
// 生成概念层次结构节点
    concept_hierarchy[i] = count_ary[i].name; 
} 
end

注:为了指示在概念层次结构中生成另一个级别所需的最小计数阈值,用户可以指定一个附加参数。 

(b)对于数值数据,基于等宽划分规则,自动产生概念分层。

用于根据等额划分规则自动生成数字数据的概念层次结构的伪代码:

begin 
// 用于生成概念层次结构的数值属性 
string concept_attb;

// //表示概念层次结构(作为值的有序列表)
array concept_hierarchy[];

string concept_hierarchy[].name; // 属性名称 
int concept_hierarchy[].max; // 箱的最大值 
int concept_hierarchy[].min; // 箱的最小值 
int concept_hierarchy[].mean; // 箱的平均值 
int concept_hierarchy[].sum; // 箱的总和 
int concept_hierarchy[].count; // 箱的元组计数 

int range_min; // 用户指定的最小数据值 
int range_max; // 用户指定的最大数据值 
int step; // 用户指定的箱的宽度
int j=0;

// 初始化概念层次结构数组 
for (i=0; i < range_max; i+=step) { 
    concept_hierarchy[j].name = ’level_’ + j; 
    concept_hierarchy[j].min = i; 
    concept_hierarchy[j].max = i + step − 1; 
    j++; 
} 

// 必要时初始化最终最大值
if (i >=range_max) { 
    concept_hierarchy[j].max = i + step − 1; 
} 

// 通过增加适当的总和和计数值,将每个值分配给箱 
for each tuple T in task relevant data set { //遍历目标数组
    int k=0; 
    while (T.concept_attb > concept_hierarchy[k].max) { 
        k++; 
    } 
    concept_hierarchy[k].sum += T.concept_attb; //每个箱的总和
    concept_hierarchy[k].count++; //每个箱的计数值
} 

// 计算用于表示每个级别值的箱度量
// 在概念层次结构中 
for (i=0; i < concept_hierarchy[].length; i++) {
    //计算每个箱的平均值
    concept_hierarchy[i].mean = concept_hierarchy[i].sum / concept_hierarchy[i].count; 
} end

 用户可以针对有关数据的背景知识(即,将标签年轻人,中年人和老人分配给三级层次结构),为通过查看垃圾箱的最大值和最小值而生成的概念层次结构级别指定更有意义的名称 此外,可以实现一种替代的合并方法,例如通过合并模式进行平滑。

(c)对于数值数据,基于等额划分规则,自动产生概念分层。

用于根据等频划分规则自动生成数字数据的概念层次结构的伪代码:

begin 
// 用于生成概念层次结构的数值属性 
string concept_attb;

// //表示概念层次结构(作为值的有序列表) 
array concept_hierarchy[];

string concept_hierarchy[].name; // 属性名称 
int concept_hierarchy[].max; // 箱的最大值 
int concept_hierarchy[].min; // 箱的最小值 
int concept_hierarchy[].mean; // 箱的平均值 
int concept_hierarchy[].sum; // 箱的总和 
int concept_hierarchy[].count; // 箱的元组计数 

int bin_depth; // 用户指定的箱深度 
int range_max; // 用户指定的最大数据值 
int step; // 用户指定的箱的宽度

// 初始化概念层次结构数组 
for (i=0; i < (range max/bin depth); i++) { 
    concept_hierarchy[j].name = ’level_’ + j; 
    concept_hierarchy[j].min = 0; 
    concept_hierarchy[j].max = 0; 
} 

//对与任务相关的数据集进行排序,对按概念attb升序排列的数据集进行排序;
int j=1; 
int k=0;

// 通过增加适当的总和和计数值,将每个值分配给箱 
//必要时的最小值和最大值
for each tuple T in task relevant data set { 
    concept_hierarchy[k].sum += T.concept_attb; //每个箱的总和
    concept_hierarchy[k].count++; //每个箱的计数值
    //判断每个箱的最小值
    if (T.concept_attb <= concept_hierarchy[k].min) { 
        concept_hierarchy[k].min = T.concept_attb; 
    }
    //判断每个箱的最大值
    if (T.concept_attb >= concept_hierarchy[k].max) { 
        concept_hierarchy[k].max = T.concept_attb; 
    };  
    j++; 
    if (j > bin_depth) { 
        k++; 
        j=1; 
    }
}

// 计算用于表示每个级别值的箱度量
// 在概念层次结构中 
for (i=0; i < concept_hierarchy[].length; i++) {
    //计算每个箱的平均值
    concept_hierarchy[i].mean = concept_hierarchy[i].sum / concept_hierarchy[i].count; 
} 
end

该算法不会尝试在多个分箱中分配数据值,以消除最终分箱的实际深度与要实现的所需深度之间的任何差异。 用户可以再次为概念层次结构级别指定更有意义的名称,这些概念层次结构级别是通过查看有关数据背景知识的箱的最大值和最小值来生成的。

 3.14 数据库系统中鲁棒的数据加载时提出了一个挑战,因为输入数据常常是脏的。 在许多情况下,输入记录可能缺少几个值,并且某些记录可能会被污染(即某些数据值不在期望的值域内或具有不同的类型)。 设计一种自动的数据清理和加载算法,使得有错误的数据被标记,被受污染的数据加载时不会错误地插入数据库中。

begin 
    for each record r 
        begin 
            check r for missing values 
                If possible, fill in missing values according to domain knowledge 
                (e.g. mean, mode, most likely value, etc.). 
            check r for out of range values 
                If possible, correct out of range values according to domain knowledge 
                (e.g. min or max value for the attribute). 
            check r for erroneous data types 
                If possible, correct data type using domain knowledge 
            If r could not be corrected, mark it as bad and output it to a log, otherwise load r into the database. 
        end
end

领域知识可以是手动工作和自动工作的组合。 例如,我们可以使用数据库中的数据来构建决策树,以诱导给定属性的缺失值,并且同时具有关于如何纠正错误数据类型的人工输入规则。

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/qq_43060870/article/details/107099163

智能推荐

攻防世界_难度8_happy_puzzle_攻防世界困难模式攻略图文-程序员宅基地

文章浏览阅读645次。这个肯定是末尾的IDAT了,因为IDAT必须要满了才会开始一下个IDAT,这个明显就是末尾的IDAT了。,对应下面的create_head()代码。,对应下面的create_tail()代码。不要考虑爆破,我已经试了一下,太多情况了。题目来源:UNCTF。_攻防世界困难模式攻略图文

达梦数据库的导出(备份)、导入_达梦数据库导入导出-程序员宅基地

文章浏览阅读2.9k次,点赞3次,收藏10次。偶尔会用到,记录、分享。1. 数据库导出1.1 切换到dmdba用户su - dmdba1.2 进入达梦数据库安装路径的bin目录,执行导库操作  导出语句:./dexp cwy_init/[email protected]:5236 file=cwy_init.dmp log=cwy_init_exp.log 注释:   cwy_init/init_123..._达梦数据库导入导出

js引入kindeditor富文本编辑器的使用_kindeditor.js-程序员宅基地

文章浏览阅读1.9k次。1. 在官网上下载KindEditor文件,可以删掉不需要要到的jsp,asp,asp.net和php文件夹。接着把文件夹放到项目文件目录下。2. 修改html文件,在页面引入js文件:<script type="text/javascript" src="./kindeditor/kindeditor-all.js"></script><script type="text/javascript" src="./kindeditor/lang/zh-CN.js"_kindeditor.js

STM32学习过程记录11——基于STM32G431CBU6硬件SPI+DMA的高效WS2812B控制方法-程序员宅基地

文章浏览阅读2.3k次,点赞6次,收藏14次。SPI的详情简介不必赘述。假设我们通过SPI发送0xAA,我们的数据线就会变为10101010,通过修改不同的内容,即可修改SPI中0和1的持续时间。比如0xF0即为前半周期为高电平,后半周期为低电平的状态。在SPI的通信模式中,CPHA配置会影响该实验,下图展示了不同采样位置的SPI时序图[1]。CPOL = 0,CPHA = 1:CLK空闲状态 = 低电平,数据在下降沿采样,并在上升沿移出CPOL = 0,CPHA = 0:CLK空闲状态 = 低电平,数据在上升沿采样,并在下降沿移出。_stm32g431cbu6

计算机网络-数据链路层_接收方收到链路层数据后,使用crc检验后,余数为0,说明链路层的传输时可靠传输-程序员宅基地

文章浏览阅读1.2k次,点赞2次,收藏8次。数据链路层习题自测问题1.数据链路(即逻辑链路)与链路(即物理链路)有何区别?“电路接通了”与”数据链路接通了”的区别何在?2.数据链路层中的链路控制包括哪些功能?试讨论数据链路层做成可靠的链路层有哪些优点和缺点。3.网络适配器的作用是什么?网络适配器工作在哪一层?4.数据链路层的三个基本问题(帧定界、透明传输和差错检测)为什么都必须加以解决?5.如果在数据链路层不进行帧定界,会发生什么问题?6.PPP协议的主要特点是什么?为什么PPP不使用帧的编号?PPP适用于什么情况?为什么PPP协议不_接收方收到链路层数据后,使用crc检验后,余数为0,说明链路层的传输时可靠传输

软件测试工程师移民加拿大_无证移民,未受过软件工程师的教育(第1部分)-程序员宅基地

文章浏览阅读587次。软件测试工程师移民加拿大 无证移民,未受过软件工程师的教育(第1部分) (Undocumented Immigrant With No Education to Software Engineer(Part 1))Before I start, I want you to please bear with me on the way I write, I have very little gen...

随便推点

Thinkpad X250 secure boot failed 启动失败问题解决_安装完系统提示secureboot failure-程序员宅基地

文章浏览阅读304次。Thinkpad X250笔记本电脑,装的是FreeBSD,进入BIOS修改虚拟化配置(其后可能是误设置了安全开机),保存退出后系统无法启动,显示:secure boot failed ,把自己惊出一身冷汗,因为这台笔记本刚好还没开始做备份.....根据错误提示,到bios里面去找相关配置,在Security里面找到了Secure Boot选项,发现果然被设置为Enabled,将其修改为Disabled ,再开机,终于正常启动了。_安装完系统提示secureboot failure

C++如何做字符串分割(5种方法)_c++ 字符串分割-程序员宅基地

文章浏览阅读10w+次,点赞93次,收藏352次。1、用strtok函数进行字符串分割原型: char *strtok(char *str, const char *delim);功能:分解字符串为一组字符串。参数说明:str为要分解的字符串,delim为分隔符字符串。返回值:从str开头开始的一个个被分割的串。当没有被分割的串时则返回NULL。其它:strtok函数线程不安全,可以使用strtok_r替代。示例://借助strtok实现split#include <string.h>#include <stdio.h&_c++ 字符串分割

2013第四届蓝桥杯 C/C++本科A组 真题答案解析_2013年第四届c a组蓝桥杯省赛真题解答-程序员宅基地

文章浏览阅读2.3k次。1 .高斯日记 大数学家高斯有个好习惯:无论如何都要记日记。他的日记有个与众不同的地方,他从不注明年月日,而是用一个整数代替,比如:4210后来人们知道,那个整数就是日期,它表示那一天是高斯出生后的第几天。这或许也是个好习惯,它时时刻刻提醒着主人:日子又过去一天,还有多少时光可以用于浪费呢?高斯出生于:1777年4月30日。在高斯发现的一个重要定理的日记_2013年第四届c a组蓝桥杯省赛真题解答

基于供需算法优化的核极限学习机(KELM)分类算法-程序员宅基地

文章浏览阅读851次,点赞17次,收藏22次。摘要:本文利用供需算法对核极限学习机(KELM)进行优化,并用于分类。

metasploitable2渗透测试_metasploitable2怎么进入-程序员宅基地

文章浏览阅读1.1k次。一、系统弱密码登录1、在kali上执行命令行telnet 192.168.26.1292、Login和password都输入msfadmin3、登录成功,进入系统4、测试如下:二、MySQL弱密码登录:1、在kali上执行mysql –h 192.168.26.129 –u root2、登录成功,进入MySQL系统3、测试效果:三、PostgreSQL弱密码登录1、在Kali上执行psql -h 192.168.26.129 –U post..._metasploitable2怎么进入

Python学习之路:从入门到精通的指南_python人工智能开发从入门到精通pdf-程序员宅基地

文章浏览阅读257次。本文将为初学者提供Python学习的详细指南,从Python的历史、基础语法和数据类型到面向对象编程、模块和库的使用。通过本文,您将能够掌握Python编程的核心概念,为今后的编程学习和实践打下坚实基础。_python人工智能开发从入门到精通pdf

推荐文章

热门文章

相关标签