计划的年龄结构看,…。初步对数据和直方图观测,…是黄金客户,而…可能是潜在客户群。
3. 数据清洗
建立“3-数据插补.xlsx”文件,导入“0-bank_data.xlsx”文件,请你用EXCEL对异常值和缺失值进行插补。 【要求】
(1)请对income属性的离群点,用均值法替换修正。 (2)请将current_act属性的空值,用众数法替换补值。 【提示】
(1)income属性的离群点(异常值)
根据实验8-1的第一小题实验可知income属性的离群点(异常值),可以用公式计算去除异常值后的均值,并用均值替换异常点的income属性。如表8-9所示。设置O4单元格为\,P4单元格为whisker下限,O5单元格为\,P5单元格为whisker上限。
表8-9 离群点统计表
离群点统计 样本总数 样本income总和 异常点数量 均值 公式 =COUNT(E2:E601) =SUM(E2:E601) =COUNTIF(E2:E601,O4&P4)+COUNTIF(E2:E601,O5&P5) 值 600 16535521 2 143641.5 异常点income总和 =SUMIF(E2:E601,O4&P4)+SUMIF(E2:E601,O5&P5) =(样本总和-异常点income总和)/(样本总数-异常点数量) 27411.17 (2)众数求解
方法1:建立一个新列,去除空值的current_act列,将新列用if函数转换为1或0后,用mode.sngl函数求解。
11
由于mode.sngl函数参数必须是数值,所以需要将YES转换为1,NO转换0 。在N2单元格输入公式:=IF(M2=\,向下填充。
根据N列的1和0,使用mode.sngl函数。公式为:=MODE.SNGL(N2:N588) 方法2:可以用countif函数,分别求出YES的个数、NO的个数和空值的个数,比较找出众数。
YES个数。公式为:=COUNTIF(J2:J601,\。值为442 NO个数。公式为:=COUNTIF(J2:J601,\。值为145 空值个数。公式为:=COUNTBLANK(J2:J601)。值为13 4. 数据变换 【要求】
(1)将插补后的“3-数据插补.xlsx”文件另存为“4-bank_data.csv”文件。 (2)启动Weka软件,导入“4-bank_data.csv”文件,对待挖掘的数据进行属性规约和数据离散化后,另存为“4-bank_data.arff”文件。
【提示】
(1)现将xlsx文件另存为csv文件,然后再导入到Weka中,如图8-11~13所示。
12
图8-11 Weka登录界面
图8-12 Weka导入CSV文件前
13
图8-13 Weka导入CSV文件后
(2)对数据进行数据变换。
① 首先,数据规约,删除无用的属性,通常对于数据挖掘任务来说,ID这样的属性信息是无用的,故此,我们将之删除。如图14所示。
图8-14 删除ID属性
② 其次,连续属性的离散化。数据集中,age属性、income属性和children属性都是数值型数据,需要将其转换为标称型数据。
离散化age属性和income属性。勾选age属性和income属性?“choose”? discretize,然后,单击”Discretize-B10-M-0.1-R first-last“,在弹出的对话框中,将分组bin改为3,将”first-last”改为1,4,如图15~17所示。
14
图8-15 Discretize-B10-M-0.1-R first-last 图8-16 bin值改为3
图8-17 修改后的属性类型
③ children属性只有4个取值:0,1,2,3。勾选children属性,单击“choose”按钮,再弹出的下拉列表中,展开无监督学习(unsupervised)前的“+”号和属性(attribute)前的“+”号,选择“NumericToNominal”,并将first-last改为6,单击\按钮,将children类型变成Nominal。如图8-18~20所示。
15