数据挖掘实验报告

合集下载

数据挖掘安全实验报告

数据挖掘安全实验报告

一、实验背景随着信息技术的飞速发展,数据挖掘技术在各个领域得到了广泛应用。

然而,数据挖掘过程中涉及的大量个人信息和敏感数据,使得数据挖掘的安全和隐私问题日益突出。

为了提高数据挖掘的安全性,本实验针对数据挖掘过程中的安全风险进行了深入研究,并提出了相应的解决方案。

二、实验目的1. 分析数据挖掘过程中的安全风险;2. 设计数据挖掘安全实验方案;3. 验证实验方案的有效性;4. 提出提高数据挖掘安全性的建议。

三、实验方法1. 文献调研:通过查阅相关文献,了解数据挖掘安全领域的最新研究成果,为实验提供理论基础;2. 实验设计:根据文献调研结果,设计数据挖掘安全实验方案,包括实验环境、实验数据、实验方法等;3. 实验实施:在实验环境中,按照实验方案进行数据挖掘实验,并记录实验数据;4. 数据分析:对实验数据进行分析,评估实验方案的有效性;5. 结果总结:根据实验结果,提出提高数据挖掘安全性的建议。

四、实验内容1. 数据挖掘安全风险分析(1)数据泄露:数据挖掘过程中,未经授权的访问、篡改或泄露个人信息和敏感数据;(2)数据篡改:攻击者通过篡改数据,影响数据挖掘结果的准确性;(3)隐私侵犯:数据挖掘过程中,收集、存储、处理个人隐私信息时,可能侵犯个人隐私;(4)数据质量:数据挖掘过程中,数据质量低下可能导致挖掘结果不准确。

2. 数据挖掘安全实验方案(1)实验环境:搭建一个数据挖掘实验平台,包括数据源、数据挖掘工具、安全防护设备等;(2)实验数据:选取具有代表性的数据集,包括个人隐私信息、敏感数据等;(3)实验方法:采用数据加密、访问控制、数据脱敏等技术,提高数据挖掘安全性。

3. 实验实施(1)数据加密:对实验数据进行加密处理,确保数据在传输和存储过程中的安全性;(2)访问控制:设置访问权限,限制未经授权的访问;(3)数据脱敏:对个人隐私信息进行脱敏处理,降低隐私泄露风险;(4)数据质量检查:对实验数据进行质量检查,确保数据挖掘结果的准确性。

数据挖掘实验报告结论(3篇)

数据挖掘实验报告结论(3篇)

第1篇一、实验概述本次数据挖掘实验以Apriori算法为核心,通过对GutenBerg和DBLP两个数据集进行关联规则挖掘,旨在探讨数据挖掘技术在知识发现中的应用。

实验过程中,我们遵循数据挖掘的一般流程,包括数据预处理、关联规则挖掘、结果分析和可视化等步骤。

二、实验结果分析1. 数据预处理在实验开始之前,我们对GutenBerg和DBLP数据集进行了预处理,包括数据清洗、数据集成和数据变换等。

通过对数据集的分析,我们发现了以下问题:(1)数据缺失:部分数据集存在缺失值,需要通过插补或删除缺失数据的方法进行处理。

(2)数据不一致:数据集中存在不同格式的数据,需要进行统一处理。

(3)数据噪声:数据集中存在一些异常值,需要通过滤波或聚类等方法进行处理。

2. 关联规则挖掘在数据预处理完成后,我们使用Apriori算法对数据集进行关联规则挖掘。

实验中,我们设置了不同的最小支持度和最小置信度阈值,以挖掘出不同粒度的关联规则。

以下是实验结果分析:(1)GutenBerg数据集在GutenBerg数据集中,我们以句子为篮子粒度,挖掘了林肯演讲集的关联规则。

通过分析挖掘结果,我们发现:- 单词“the”和“of”在句子中频繁出现,表明这两个词在林肯演讲中具有较高的出现频率。

- “and”和“to”等连接词也具有较高的出现频率,说明林肯演讲中句子结构较为复杂。

- 部分单词组合具有较高的置信度,如“war”和“soldier”,表明在林肯演讲中提到“war”时,很可能同时提到“soldier”。

(2)DBLP数据集在DBLP数据集中,我们以作者为单位,挖掘了作者之间的合作关系。

实验结果表明:- 部分作者之间存在较强的合作关系,如同一研究领域内的作者。

- 部分作者在多个研究领域均有合作关系,表明他们在不同领域具有一定的学术影响力。

3. 结果分析和可视化为了更好地展示实验结果,我们对挖掘出的关联规则进行了可视化处理。

通过可视化,我们可以直观地看出以下信息:(1)频繁项集的分布情况:通过柱状图展示频繁项集的分布情况,便于分析不同项集的出现频率。

(完整word版)数据挖掘实验报告-关联规则挖掘(word文档良心出品)

(完整word版)数据挖掘实验报告-关联规则挖掘(word文档良心出品)

数据挖掘实验报告(二)关联规则挖掘**: ***班级: 计算机1304学号: **********一、实验目的1. 1.掌握关联规则挖掘的Apriori算法;2.将Apriori算法用具体的编程语言实现。

二、实验设备PC一台, dev-c++5.11三、实验内容根据下列的Apriori算法进行编程:四、实验步骤1.编制程序。

2.调试程序。

可采用下面的数据库D作为原始数据调试程序, 得到的候选1项集、2项集、3项集分别为C1.C2.C3, 得到的频繁1项集、2项集、3项集分别为L1.L2.L3。

代码#include <stdio.h>#include<string.h>#define D 4 //事务的个数#define MinSupCount 2 //最小事务支持度数void main(){char a[4][5]={{'A','C','D'},{'B','C','E'},{'A','B','C','E'},{'B','E'}};charb[20],d[100],t,b2[100][10],b21[100 ][10];inti,j,k,x=0,flag=1,c[20]={0},x1=0,i1 =0,j1,counter=0,c1[100]={0},flag1= 1,j2,u=0,c2[100]={0},n[20],v=1;int count[100],temp;for(i=0;i<D;i++){for(j=0;a[i][j]!='\0';j++) {//用来判断之前保存的是否和a[i][j]一样, 不一样就保存, 一样就不保存for(k=0;k<x;k++){if(b[k]!=a[i][j]) ; else{flag=0;break;}}//用来判断是否相等 if(flag==1){b[x]=a[i][j];x++;}else flag=1;}}//计算筛选出的元素的支持度计数for(i=0;i<D;i++){for(j=0;a[i][j]!='\0';j++) {for(k=0;k<x;k++){if(a[i][j]==b[k]) {c[k]++;break; }}}}//对选出的项集进行筛选, 选出支持度计数大于等于2的, 并且保存到d[x1]数组中for(k=0;k<x;k++){if(c[k]>=MinSupCount){d[x1]=b[k];count[x1]=c[k];x1++;}}//对选出的项集中的元素进行排序for(i=0;i<x1-1;i++){for(j=0;j<x1-i-1;j++){if(d[j]>d[j+1]){t=d[j];d[j]=d[j+1];d[j+1]=t;temp=count[j];count[j]=count[j+1];count[j+1]=temp;}}}//打印出L1printf("L1 elements are:\n");for(i=0;i<x1;i++){printf("{%c} = %d \n",d[i],count[i]);}//计算每一行的元素个数, 并且保存到n[]数组中for(i=0;i<D;i++){for(j=0;a[i][j]!='\0';j++);n[i]=j;}//对a[][]数组的每一行进行排序for(i=0;i<D;i++){for(j=0;j<n[i]-1;j++){for(k=0;k<n[i]-j-1;k++) {if(a[i][k]>a[i][k+1]){t=a[i][k];a[i][k]=a[i][k+1]; a[i][k+1]=t;}}}}//把L1中的每一个元素都放在b2[i][0]中j1=x1;for(i=0;i<j1;i++){b2[i][0]=d[i];}//把L1中的元素进行组合, K=2开始, 表示x1个元素选K个元素的组合for(k=2;b2[0][0]!='\0';k++){ //u是用来计数组合总数的u=0;v=1;//v 是用来在进行输出各种组合的标识数 v=1 说明正在进行输出 for(i=0;i<100;i++){c2[i]=0;}for(i=0;i<j1;i++){for(i1=i+1;i1<j1;i1++) {for(j=0;j<k-2;j++) {if(b2[i][j]!=b2[i1][j]){flag1=0;break;}}//进行组合的部分if(flag1==1&&b2[i][k-2]!=b2[i1][k-2]){for(j2=0;j2<k-1;j2++){b21[u][j2]=b2[i][j2];}b21[u][k-1]=b2[i1][k-2];u++;}flag1=1;}}counter=0;for(i=0;i<D;i++) //a数组有5行元素{for(i1=0;i1<u;i1++) // 代表x1个元素选K个元素的所有组合总数 {for(j1=0;j1<k;j1++) //K 代表一个组合中的元素个数{for(j=0;a[i][j]!='\0';j++) //逐个比较每一行的元素{if(a[i][j]==b21[i1][j1])counter++;}}if(counter==k)c2[i1]++; //把每种组合数记录在c2数组中counter=0;} }j1=0;temp=0;//这里的temp 是用来分行//对u种情况进行选择, 选出支持度计数大于2的*/for(i=0;i<u;i++){if(c2[i]>=MinSupCount) {if(v==1){printf("L%d elements are:\n",k);v=0;}printf("{");for(j=0;j<k;j++)//输出每种组合k 个元素{b2[j1][j]=b21[i][j];printf("%c,",b2[j1][j]);}j1++;printf("\b}");printf(" = %d \n",c2[i]);temp++;}}b2[j1][0]='\0';}}五、结果截图。

数据挖掘实验报告

数据挖掘实验报告

数据挖掘实验报告数据挖掘是一门涉及发现、提取和分析大量数据的技术和过程,它可以揭示出隐藏在数据背后的模式、关系和趋势,对决策和预测具有重要的价值。

本文将介绍我在数据挖掘实验中的一些主要收获和心得体会。

实验一:数据预处理在数据挖掘的整个过程中,最重要的一环就是数据预处理。

数据预处理包括数据清洗、数据集成、数据转换和数据规约等步骤,目的是为了提高数据的质量和可用性。

首先,我对所使用的数据集进行了初步的观察和探索。

发现数据集中存在着一些缺失值和异常值。

为此,我使用了一些常见的缺失值处理方法,如均值替代、中值替代和删除等。

对于异常值,我采用了离群值检测和修正等方法,使得数据在后续的分析过程中更加真实可信。

其次,我进行了数据集成的工作。

数据集合并是为了整合多个来源的数据,从而得到更全面和综合的信息。

在这个过程中,我需要考虑数据的一致性和冗余情况。

通过采用数据压缩和去重等技术,我成功地完成了数据集成的工作。

接着,我进行了数据转换的处理。

数据转换是为了将原始的数据转换成适合数据挖掘算法处理的形式。

在这个实验中,我采用了数据标准化和归一化等方法,使得不同属性之间具备了可比性和可计算性,从而便于后续的分析过程。

最后,我进行了数据规约的操作。

数据规约的目的在于减少数据的维数和复杂度,以提高数据挖掘的效果。

在这个阶段,我采用了主成分分析和属性筛选等方法,通过压缩数据集的维度和减少冗余属性,成功地简化了数据结构,提高了挖掘效率。

实验二:关联规则挖掘关联规则挖掘是数据挖掘中常用的一种方法,它用于发现数据集中项集之间的关联关系。

在这个实验中,我使用了Apriori算法来进行关联规则的挖掘。

首先,我对数据进行了预处理,包括数据清洗和转换。

然后,我选择了适当的最小支持度和最小置信度阈值,通过对数据集的扫描和频繁项集生成,找出了数据集中的频繁项集。

接着,我使用了关联规则挖掘算法,从频繁项集中挖掘出了具有一定置信度的关联规则。

在实验过程中,我发现挖掘出的关联规则具有一定的实用性和可行性。

数据挖掘实验报告-数据预处理

数据挖掘实验报告-数据预处理

数据挖掘实验报告-数据预处理数据挖掘实验报告数据预处理一、实验目的本次实验的主要目的是深入了解和掌握数据预处理在数据挖掘过程中的重要性及相关技术,通过对实际数据集的处理,提高数据质量,为后续的数据挖掘和分析工作奠定良好的基础。

二、实验背景在当今数字化时代,数据的规模和复杂性不断增加,而原始数据往往存在着各种问题,如缺失值、噪声、异常值、不一致性等。

这些问题如果不加以处理,将会严重影响数据挖掘算法的性能和结果的准确性。

因此,数据预处理成为了数据挖掘过程中不可或缺的重要环节。

三、实验数据集本次实验使用了一个名为“销售数据”的数据集,该数据集包含了某公司在过去一年中不同产品的销售记录,包括产品名称、销售日期、销售数量、销售价格、客户信息等字段。

四、数据预处理技术(一)数据清洗1、处理缺失值首先,对数据集中的缺失值进行了识别和分析。

通过观察发现,“客户信息”字段存在部分缺失。

对于这些缺失值,采用了两种处理方法:一是如果缺失比例较小(小于5%),直接删除含有缺失值的记录;二是如果缺失比例较大,采用均值填充的方法进行补充。

2、处理噪声数据数据中的噪声通常表现为数据中的错误或异常值。

通过对销售数量和销售价格的观察,发现了一些明显不合理的数值,如销售数量为负数或销售价格过高或过低的情况。

对于这些噪声数据,采用了基于统计的方法进行识别和处理,将超出合理范围的数据视为噪声并进行删除。

(二)数据集成由于原始数据集可能来自多个数据源,存在着重复和不一致的问题。

在本次实验中,对“销售数据”进行了集成处理,通过对关键字段(如产品名称、销售日期)的比较和合并,消除了重复的记录,并确保了数据的一致性。

(三)数据变换1、数据标准化为了消除不同字段之间量纲的影响,对销售数量和销售价格进行了标准化处理,使其具有可比性。

2、数据离散化对于连续型的数据字段,如销售价格,采用了等宽离散化的方法将其转换为离散型数据,以便于后续的数据挖掘算法处理。

数据挖掘实习报告

数据挖掘实习报告

数据挖掘实习报告一段充实而忙碌的实习生活结束了,相信大家这段时间来的收获肯定不少吧,这时候最关键的一步就是写实习报告了。

你想好怎么写实习报告了吗?下面是店铺帮大家整理的数据挖掘实习报告,希望对大家有所帮助。

数据挖掘实习报告1一、实习目的认识实习是本科教学计划中非常重要的实践性教学环节,其目的是使学生了解和掌握电力生产知识、印证、巩固和丰富已学过的计算机专业课程内容,培养学生理论联系实际,提高其在生产实践中调查研究、观察问题、分析问题以及解决问题的能力和方法,为后续专业课程的学习打下基础。

通过认识实习,还应使学生了解现电力生产方式,培养热爱软件工程专业思想。

二、实习内容为了达到上述实习目的,实习主要内容应包括:1.参观浦东软件园2.上海市高新技术产业展3.四场高水平的技术讲座三、实习过程1.参观浦东软件园进入主体大楼后,上海浦东软件园和它的图标赫然放置在最显眼的门口处,我们跟随着老师的步伐,一路向内层走去。

在路上我们注意到了墙上贴出来的优秀学员的照片,以及关于软件园的人才和研制软件对于国家信息技术的贡献,可以称之为一条荣誉回廊。

迈过这条回廊,我们走到了一个广阔的教室,里面整整齐齐摆放了数十台计算机,看其规模,我猜想这应该是一个大型的计算机学习教室,供里面的学员进行专业方面的开发和探索。

之后我们便各自找好座位,等待浦东软件园的老师给我们做一下关于软件园的介绍并阐述对我们未来工作的需求。

我们坐好后,一场对未来的探索之旅马上就开始了,浦软的老师非常厚道的给我们观看了两场激动人心的宣传视频,详细的介绍了浦软的来由,发展和辉煌以及对整个软件业的展望。

首先,上海浦东软件园做为第一批国家软件产业基地和第一批国家软件出口基地是与北京中关村,大连和西安这四个软件园是齐名的,并且是全国第一家软件园区,这三个一,奠定了浦东软件园在全国软件开发中无论是人才量还是创作量都处于不可动摇的位置。

之后她给我们介绍了浦东软件园是由满庭芳的郭守敬园和浣溪沙的祖冲之园联合组成的。

数据挖掘实验报告

数据挖掘实验报告

数据挖掘实验报告一、实验目的本次数据挖掘实验的主要目的是深入了解数据挖掘的基本概念和方法,并通过实际操作来探索数据中潜在的有价值信息。

二、实验环境本次实验使用了以下软件和工具:1、 Python 编程语言,及其相关的数据挖掘库,如 Pandas、NumPy、Scikitlearn 等。

2、 Jupyter Notebook 作为开发环境,方便进行代码编写和结果展示。

三、实验数据实验所使用的数据来源于一个公开的数据集,该数据集包含了关于_____的相关信息。

具体包括_____、_____、_____等多个字段,数据量约为_____条记录。

四、实验步骤1、数据预处理首先,对原始数据进行了清洗,处理了缺失值和异常值。

对于缺失值,根据数据的特点和分布,采用了平均值、中位数或删除等方法进行处理。

对于异常值,通过箱线图等方法进行识别,并根据具体情况进行了修正或删除。

接着,对数据进行了标准化和归一化处理,使得不同特征之间具有可比性。

2、特征工程从原始数据中提取了有意义的特征。

例如,通过计算某些字段的均值、方差等统计量,以及构建新的特征组合,来增强数据的表达能力。

对特征进行了筛选和降维,使用了主成分分析(PCA)等方法,减少了特征的数量,同时保留了主要的信息。

3、模型选择与训练尝试了多种数据挖掘模型,包括决策树、随机森林、支持向量机(SVM)等。

使用交叉验证等技术对模型进行了评估和调优,选择了性能最优的模型。

4、模型评估使用测试集对训练好的模型进行了评估,计算了准确率、召回率、F1 值等指标,以评估模型的性能。

五、实验结果与分析1、不同模型的性能比较决策树模型在准确率上表现较好,但在处理复杂数据时容易出现过拟合现象。

随机森林模型在稳定性和泛化能力方面表现出色,准确率和召回率都比较高。

SVM 模型对于线性可分的数据表现良好,但对于非线性数据的处理能力相对较弱。

2、特征工程的影响经过合理的特征工程处理,模型的性能得到了显著提升,表明有效的特征提取和选择对于数据挖掘任务至关重要。

数据挖掘 实验报告

数据挖掘 实验报告

数据挖掘实验报告数据挖掘实验报告引言:数据挖掘是一门涉及从大量数据中提取有用信息的技术和方法。

在当今信息爆炸的时代,数据挖掘在各个领域中扮演着重要的角色。

本实验旨在通过应用数据挖掘技术,探索数据中的隐藏模式和规律,以提高决策和预测的准确性。

一、数据收集与预处理在数据挖掘的过程中,数据的质量和完整性对结果的影响至关重要。

在本次实验中,我们选择了某电商平台的销售数据作为研究对象。

通过与数据提供方合作,我们获得了一份包含订单信息、用户信息和商品信息的数据集。

在数据预处理阶段,我们对数据进行了清洗、去重和缺失值处理。

清洗数据的目的是去除噪声和异常值,以确保数据的准确性。

去重操作是为了避免重复数据对结果的干扰。

而缺失值处理则是填补或删除缺失的数据,以保证数据的完整性。

二、数据探索与可视化数据探索是数据挖掘的重要环节,通过对数据的分析和可视化,我们可以发现数据中的潜在关系和规律。

在本次实验中,我们使用了数据可视化工具来展示数据的分布、相关性和趋势。

首先,我们对销售数据进行了时间序列的可视化。

通过绘制折线图,我们可以观察到销售额随时间的变化趋势,从而判断销售业绩的季节性和趋势性。

其次,我们对用户的购买行为进行了可视化分析。

通过绘制柱状图和饼图,我们可以了解用户的购买偏好和消费习惯。

三、数据挖掘建模在数据挖掘建模阶段,我们选择了关联规则和聚类分析两种常用的数据挖掘技术。

关联规则分析用于发现数据集中的频繁项集和关联规则。

通过关联规则分析,我们可以了解到哪些商品经常被一起购买,从而为销售策略的制定提供参考。

在本次实验中,我们使用了Apriori算法来挖掘频繁项集和关联规则。

通过设置支持度和置信度的阈值,我们筛选出了一些有意义的关联规则,并对其进行了解释和分析。

聚类分析用于将数据集中的对象划分为不同的组,使得同一组内的对象相似度较高,而不同组之间的相似度较低。

在本次实验中,我们选择了K-means算法进行聚类分析。

通过调整聚类的簇数和距离度量方式,我们得到了一些具有实际意义的聚类结果,并对不同簇的特征进行了解读和解释。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

数据挖掘实验报告——加权K-近邻法一、 数据源说明1. 数据理解数据来自于天猫对顾客的BuyOrNot(买与不买),BuyDNactDN(消费活跃度),ActDNTotalDN(活跃度),BuyBBrand(成交有效度),BuyHit(活动有效度)这五个变量的统计。

数据分成两类数据,一类作为训练数据集,一类为测试数据集。

2.数据清理现实世界的数据一般是不完整的、有噪声的和不一致的。

数据清理例程试图填充缺失的值,光滑噪声并识别离群点,并纠正数据中的不一致。

a) 缺失值:当数据中存在缺失值是,忽略该元组 b) 噪声数据:本文暂没考虑。

二、 基于变量重要性的加权K-近邻法[1]由于我们计算K-近邻法默认输入变量在距离测度中有“同等重要”的贡献,但情况并不总是如此。

我们知道不同的变量对我们所要预测的变量的作用是不一定一样的,所以找出对输出变量分类预测有意义的重要变量对数据预测具有重要作用。

同时也可以减少那些对输出变量分类预测无意义的输入变量,减少模型的变量。

为此,采用基于变量重要性的K-近邻法,计算加权距离,给重要的变量赋予较高的权重,不重要的变量赋予较低的权重是必要的。

(1)算法思路:我们引进1w 为第i 个输入变量的权重,是输入变量重要性(也称特征重要性),FI 函数,定义为:∑==pji FI FI 1)i ()((i)w 。

其中(i)FI 为第i 个输入变量的特征重要性,∑=<1,1w )((i)i w 这里,(i)FI 依第i 个输入变量对预测误差的影响定义。

设输入变量集合包含p 个变量:p x x x x ,...,,,321。

剔除第i 个变量后计算输入变量p i i x x x x x x ,...,,,...,,,11321+-的误判率,记为)(i e 。

若第i 个变量对预测有重要作用,剔除变量后的预测误差)(i e 应较大。

于是,第i 个变量的重要性定义为:pe FI i 1)i (+=。

可见,变量越重要,在计算距离时的权重越高。

(2)算法步骤:step.1---求解出错判率最低的K 值 step.2---求解出第i 个变量的(i)FI(3)算法源代码library("class")Tmall_train<-read.csv("D:\\Documents\\Rword\\第一章\\Train_tmall.csv") Tmall_test<-read.csv("D:\\Documents\\Rword\\第一章\\天猫_Test_1.csv") par(mfrow=c(2,2)) set.seed(123456) errRatio<-vector() for(i in 1:30){KnnFit<-knn(train=Tmall_train[,-1],test=Tmall_test[,-1],cl=Tmall_train[,1],k=i,prob=FALSE) CT<-table(Tmall_test[,1],KnnFit)errRatio<-c(errRatio,(1-sum(diag(CT))/sum(CT))*100) }plot(errRatio,type="l",xlab="近邻个数k",ylab="错判率(%)",main="近邻数K 与错判率")从右边近邻数K 与错判率的图可明显看出,近邻个数为7时,误判率和稳健性最好errDelteX<-errRatio[7] for(i in -2:-5){fit<-knn(train=Tmall_train[,c(-1,i)],test=Tmall_test[,c(-1,i)],cl=Tmall_train[,1],k=7)CT<-table(Tmall_test[,1],fit)errDelteX<-c(errDelteX,(1-sum(diag(CT))/sum(CT))*100) }plot(errDelteX,type ="l",xlab="剔除变量",ylab="剔除错判率(%)",main="剔除变量与剔除错判率",cex.main=0.8)xTitle=c("1:全体变量","2:消费活跃度","3:活跃度","4:成交有效度","5:活动有效度") legend("topright",legend=xTitle,title="变量说明",lty=1,cex=0.6) FI<-errDelteX[-1]+1/4 wi<-FI/sum(FI)Glabs<-paste(c("度","活跃度","成交有效度","活动有效度"),round(wi,2),sep=":") pie(wi,labels = Glabs,clockwise = T,main="输入变量权重",cex.main=0.8)从上面两个图我们可以明显得出,消费活跃度、成交有效度及活动有效度在预测消费者买与不买中占的权重比较大,其中消费者消费活跃度在预测消费者买与不买的重要性最大,达到45%,是预测消费者消费的一个关键变量。

三、基于观测相似性的加权K-近邻法[2](1)核心思想:K-近邻法预测时,默认K 个近邻对观测结果又“同等力度“的影响。

事实上,据0X 的远近观测对预测贡献的大小是有影响的,距离越近对预测的贡献大于距离较远的预测贡献。

将相似性定义为各观测与0X 距离的某种非线性函数,且距离越近,相似性越强,权重越高,预测时的重要性越大。

设观测X 与0X 的距离为),0(∂∈≥d d d 。

若采用函数)(⋅K 将距离d 转换成X 与0X 的相似性,则函数K(d)应有如下特性:越远,相似性越小。

的单调减函数,即距离是)(近时相似性最大。

获得最大值,即距离最)(时,0。

,0)(d d K d K d d d K •=•∂∈≥• 通常,核函数是符合上述特征的函数。

若函数I 为示例函数,⎪⎩⎪⎨⎧≥<=1,01,1)(d d d I 通常核函数有:...。

)1().2exp(π21)():高斯核(。

)1()1()(:)(三角形核。

)1(.21)(:)均匀核(2<-=•<⋅-=•<=•d I dd K Kernel Gauss d I d d K Kernel Triangular d I d K Kernel Uniform(2)步骤第一步:求解误判率最低的k 值;第二步:加权K-近邻法与K-近邻法比较;(3)代码:○1求解误判率最低的k 值; Tmall_train<-read.csv("Train_tmall.csv")Tmall_train$BuyOrNot<-factor(Tmall_train$BuyOrNot)fit<-train.kknn(BuyOrNot~.,data=Tmall_train,kmax=11,distance=2,kernel=c("triangular","rectang ular","epanechnikov"),na.action=na.omit())plot(fit$MISCLASS[,1]*100,type="l",main="不同核函数和近邻个数K 下的错判率曲线图",cex.main=0.8,xlab = "近邻个数",ylab="误判率(%)") lines(fit$MISCLASS[,2]*100,lty=2,col=1) lines(fit$MISCLASS[,3]*100,lty=3,col=2) legend("topleft",legend = c("triangular","rectangular","epanechnikov"),lty=c(1,2,3),col=c(1,1,2),cex=0.7)基于稳健性我们选择了K=7时的误判率○2加权K-近邻法Tmall_test<-read.csv("天猫_Test_1.csv")Tmall_test$BuyOrNot<-as.factor(Tmall_test$BuyOrNot)fit<-kknn(BuyOrNot~.,train=Tmall_train,test=Tmall_test,k=7,distance=2,kernel="gaussian",na.ac tion=na.omit())CT<-table(Tmall_test[,1],fit$fitted.values)errRatio<-(1-sum(diag(CT))/sum(CT))*100K-近邻法Tmall_test<-read.csv("天猫_Test_1.csv")Tmall_test$BuyOrNot<-factor(Tmall_test$BuyOrNot)fit<-knn(train=Tmall_train[,-1],test=Tmall_test[,-1],cl=Tmall_train$BuyOrNot,k=7)CT<-table(Tmall_test[,1],fit)errRatio<-c(errRatio,(1-sum(diag(CT))/sum(CT))*100)errGraph<-barplot(errRatio,main=("加权K-近邻法与K-近邻法错判率对比图"),cex.main=0.8,xlab="分类方法",ylab="错判率(%)",axes=FALSE)axis(side=1,at=c(0,errGraph,3),labels=c("","加权K-近邻法","K-近邻法",""),tcl=0.25)axis(side=2,tcl=0.25)由上图可知,加权K-近邻法错判率比K-近邻法的错判率低,对数据的预测更准确。

相关文档
最新文档