数据挖掘报告

合集下载

数据挖掘安全实验报告

数据挖掘安全实验报告

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

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

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

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

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

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

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

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

数据挖掘实验报告

数据挖掘实验报告

数据挖掘实验报告一、引言。

数据挖掘作为一种从大量数据中发现隐藏模式和信息的技术,已经被广泛应用于各个领域。

本实验旨在通过对给定数据集的分析和挖掘,探索其中潜在的规律和价值信息,为实际问题的决策提供支持和参考。

二、数据集描述。

本次实验使用的数据集包含了某电商平台上用户的购物记录,其中包括了用户的基本信息、购买商品的种类和数量、购买时间等多个维度的数据。

数据集共包括了10000条记录,涵盖了近一年的购物数据。

三、数据预处理。

在进行数据挖掘之前,我们首先对数据进行了预处理。

具体包括了数据清洗、缺失值处理、异常值处理等步骤。

通过对数据的清洗和处理,保证了后续挖掘分析的准确性和可靠性。

四、数据分析与挖掘。

1. 用户购买行为分析。

我们首先对用户的购买行为进行了分析,包括了用户购买的商品种类偏好、购买频次、购买金额分布等。

通过对用户购买行为的分析,我们发现了用户的购买偏好和消费习惯,为电商平台的商品推荐和营销策略提供了参考。

2. 商品关联规则挖掘。

通过关联规则挖掘,我们发现了一些商品之间的潜在关联关系。

例如,购买商品A的用户80%也会购买商品B,这为商品的搭配推荐和促销活动提供了依据。

3. 用户价值分析。

基于用户的购买金额、购买频次等指标,我们对用户的价值进行了分析和挖掘。

通过对用户价值的评估,可以针对不同价值的用户采取个性化的营销策略,提高用户忠诚度和购买转化率。

五、实验结果。

通过对数据的分析和挖掘,我们得到了一些有价值的实验结果和结论。

例如,发现了用户的购买偏好和消费习惯,发现了商品之间的关联规则,发现了用户的不同价值等。

这些结论为电商平台的运营和管理提供了一定的参考和决策支持。

六、结论与展望。

通过本次实验,我们对数据挖掘技术有了更深入的理解和应用。

同时,也发现了一些问题和不足,例如数据质量对挖掘结果的影响,挖掘算法的选择和优化等。

未来,我们将继续深入研究数据挖掘技术,不断提升数据挖掘的准确性和效率,为更多实际问题的决策提供更有力的支持。

数据挖掘专业实习报告

数据挖掘专业实习报告

一、实习背景随着大数据时代的到来,数据挖掘技术在各行各业的应用日益广泛。

为了更好地将理论知识与实践相结合,提升自己的专业技能,我于今年暑假期间在XX科技有限公司进行了为期一个月的数据挖掘实习。

在此期间,我参与了公司实际项目的开发,对数据挖掘的各个环节有了更深入的了解。

二、实习单位及项目简介XX科技有限公司是一家专注于大数据处理和分析的高新技术企业,致力于为客户提供一站式数据解决方案。

本次实习项目为公司内部的一个客户项目,旨在通过数据挖掘技术分析客户销售数据,为其提供精准营销策略。

三、实习内容及收获1. 数据获取与预处理实习初期,我负责收集和整理客户销售数据。

由于数据量较大,我学习了使用Python语言编写脚本,从不同数据源(如数据库、Excel文件等)获取数据,并进行初步的数据清洗和预处理。

在此过程中,我掌握了以下技能:熟练使用Python进行数据操作,如读取、写入、排序、筛选等;掌握了常用的数据清洗方法,如去除重复值、处理缺失值、数据标准化等;熟悉了常用的数据存储格式,如CSV、JSON等。

2. 特征工程在数据预处理的基础上,我参与了特征工程的工作。

通过对原始数据进行降维、特征提取和特征选择等操作,提高模型的准确性和泛化能力。

具体内容包括:使用统计方法(如方差、相关系数等)识别和选择重要特征;使用机器学习算法(如主成分分析、LDA等)进行特征降维;结合业务知识,对特征进行适当的转换和组合。

3. 模型选择与优化在特征工程完成后,我参与了模型的选择和优化工作。

根据业务需求,我尝试了多种机器学习算法,如逻辑回归、决策树、随机森林、支持向量机等,并对模型参数进行调优。

通过对比不同模型的性能,最终选择了最适合该项目的模型。

4. 模型评估与部署在模型训练完成后,我使用交叉验证等方法对模型进行评估,确保其具有良好的泛化能力。

随后,我将模型部署到公司内部的服务器上,为客户提供实时预测服务。

四、实习总结与反思通过本次实习,我收获颇丰:1. 专业知识与实践能力的提升:在实习过程中,我不仅巩固了数据挖掘的相关理论知识,还学会了如何将理论知识应用于实际项目中,提高了自己的实践能力。

数据挖掘实验报告结论(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)频繁项集的分布情况:通过柱状图展示频繁项集的分布情况,便于分析不同项集的出现频率。

数据挖掘实验报告

数据挖掘实验报告

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

数据挖掘实验报告(一)数据预处理姓名:李圣杰班级:计算机1304学号:02一、实验目的1.学习均值平滑,中值平滑,边界值平滑的基本原理2.掌握链表的使用方法3.掌握文件读取的方法二、实验设备PC一台,dev-c++三、实验内容数据平滑假定用于分析的数据包含属性age。

数据元组中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) 使用按箱中值平滑法对以上数据进行平滑,箱的深度为3。

(c) 使用按箱边界值平滑法对以上数据进行平滑,箱的深度为3。

四、实验原理使用c语言,对数据文件进行读取,存入带头节点的指针链表中,同时计数,均值求三个数的平均值,中值求中间的一个数的值,边界值将中间的数转换为离边界较近的边界值五、实验步骤代码#include <>#include <>#include <>#define DEEP 3#define DATAFILE ""#define VPT 10//定义结构体typedef struct chain{int num;struct chain *next;}* data;//定义全局变量data head,p,q;FILE *fp;int num,sum,count=0;int i,j;int *box;void mean();void medain();void boundary();int main (){//定义头指针head=(data)malloc(sizeof(struct chain));head->next=NULL;/*打开文件*/fp=fopen(DATAFILE,"r");if(!fp)exit(0);p=head;while(!feof(fp)){q=(data)malloc(sizeof(struct chain));q->next=NULL;fscanf(fp,"%d",&q->num); /*读一个数据*/p->next=q;p=q;count++;}/* 关闭文件*/fclose(fp);//输出printf("源数据为:\n");printf("共%d箱%d个数据\n",count/DEEP,count);p=head->next;count=1;num=1;while(p!=NULL){if(count==1)printf("箱%d:",num);if(count==DEEP){printf("%d\n",p->num);num++;count=1;}else{printf("%d ",p->num);count++;}p=p->next;}mean();medain();boundary();scanf("%d",&i);return 0;}//均值void mean(){printf("均值平滑后为:");box=(int *)malloc(sizeof(int)*num);p=head->next;count=1;num=0;sum=0;while(p!=NULL){if(count==DEEP){count=1;sum=sum+p->num;box[num]=sum/DEEP;sum=0;num++;}else{sum=sum+p->num;count++;}p=p->next;}for (i=0;i<num;i++){printf("\n箱%d:",i+1);for (j=0;j<DEEP;j++)printf("%d ",box[i]);}p=head->next;printf("\n离群值为:");while(p!=NULL){for(i=0;i<num;i++){for (j=0;j<DEEP;j++){if(abs(p->num-box[i])>(int)VPT){printf("\n箱%d:",i+1);printf("%d ",p->num);}p=p->next;}}}}//中值void medain(){printf("\n中值平滑后为:");p=head->next;count=1;num=0;int mid;while(p!=NULL){if(count==DEEP){box[num]=sum;count=1;num++;}else {if(count==DEEP/2||count==DEEP/2+1) if(DEEP%2){if(count==DEEP/2+1)sum=p->num;}else{if(count==DEEP/2+1)sum=(p->num+mid)/2;elsemid=p->num;}count++;}p=p->next;}for (i=0;i<num;i++){printf("\n箱%d:",i+1);for (j=0;j<DEEP;j++)printf("%d ",box[i]);}}//边界值void boundary(){printf("\n边界值平滑后为:\n");p=head->next;count=1;box=(int *)malloc(sizeof(int)*num*2); num=0;while(p!=NULL){if(count==DEEP){box[2*num+1]=p->num;count=1;num++;}else{if(count==1) {box[2*num]=p->num;}count++;}p=p->next;}p=head->next;count=1;num=0;while(p!=NULL){if(count==1)printf("箱%d:",num);if((p->num-box[2*num])>(box[2*num+1] -p->num)){printf("%d ",box[2*num+1]);}elseprintf("%d ",box[2*num]);if(count==DEEP){printf("\n");count=0;num++;}count++;p=p->next;}}实验数据文件:用空格分开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六、结果截图。

数据挖掘实验报告

数据挖掘实验报告

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

哈尔滨工业大学
数据挖掘理论与算法实验报告(2016年度秋季学期)
课程编码S1300019C
授课教师邹兆年
学生姓名汪瑞
学号 16S003011
学院计算机学院
一、实验内容
决策树算法是一种有监督学习的分类算法;kmeans是一种无监督的聚类算法。

本次实验实现了以上两种算法。

在决策树算法中采用了不同的样本划分方式、不同的分支属性的选择标准。

在kmeans算法中,比较了不同初始质心产生的差异。

本实验主要使用python语言实现,使用了sklearn包作为实验工具。

二、实验设计
1.决策树算法
1.1读取数据集
本次实验主要使用的数据集是汽车价值数据。

有6个属性,命名和属性值分别如下:
buying: vhigh, high, med, low.
maint: vhigh, high, med, low.
doors: 2, 3, 4, 5more.
persons: 2, 4, more.
lug_boot: small, med, big.
safety: low, med, high.
分类属性是汽车价值,共4类,如下:
class values:unacc, acc, good, vgood
该数据集不存在空缺值。

由于sklearn.tree只能使用数值数据,因此需要对数据进行预处理,将所有标签类属性值转换为整形。

1.2数据集划分
数据集预处理完毕后,对该数据进行数据集划分。

数据集划分方法有hold-out法、k-fold交叉验证法以及有放回抽样法(boottrap)。

Hold—out法在pthon中的实现是使用如下语句:
其中,cv是sklearn中cross_validation包,train_test_split 方法的参数分别是数据集、数据集大小、测试集所占比、随机生成方法的可
选项。

该方法分别返回,训练集、测试集在原数据集中的序号以及对应的所属类别的序号。

K-flod法实现较为简单。

如下:
xl为数据集大小,n_folds为划分若干折,一般可用10-fold验证。

返回值loo中是包含两个元组的列表,这两个元组分别是train_index和test_index的列表。

Bootstrap法实现如下,其与k-fold方法类似。

1.3创建和训练决策树及评价
数据集划分完毕后,就需要建立决策树并结合训练集来训练决策树。

建立决策树只需要调用tree.DecisionTreeClassifier()方法即可。

它有一些参数可以根据需求进行设置。

Criterion选项,默认是“Gini”,表示决策树非叶节点划分依据是根据Gini指数表示划分的纯度。

可选值有“entropy”,用信息增益来衡量划分的优劣。

Sklearn.tree中没有支持用错分类误差法来衡量节点划分的优劣。

min_samples_split选项,是指一个非叶节点继续划分所需要的最小样本数,如果该节点下的待分样本小于该值,则终止该节点划分,节点被标记为占多少的类,形成叶节点。

它属于提前抑制决策树增长的方法。

max_depth选项,是指该训练决策树时允许达到的最大深度。

默认深度是一直划分到节点纯净或者达到min_samples_split的要求。

因此该选项是实验中有必要进行设置的项,以控制决策树过拟合,它属于前剪枝的操作。

min_impurity_split选项,是指划分某节点时所需要的最低不纯度阈值,如果某一节点划分的不纯度低于该值,表明该节点已经可以被接受成为叶节点,无须继续划分。

它也是一种提前停止增长的策略。

决策树建立和训练的具体实例如下(用10-fold做例子):
由于实验采用的是10-fold交叉验证,因此最终准确率应该是每一折准确率的平均值。

上述代码也包含了训练决策树和使用测试集验证决策树的代码,即:
该实验的最终准确率约是:test right rate: 0.8165
1.4基于树桩的Adaboost算法
在python中同样也实现了adaboost算法,需要使用AdaBoostClassifier()方法构造它。

它有若干可选项:base_estimator是设置adaboost算法使用的弱分类器,默认是一层决策树,即树桩。

n_estimators是设置迭代次数,每一次迭代时该算法选择数据集中的某一特征作为树桩的分类节点,训练集中被错误分类的记录将被增加权重,正确分类的记录将被降低权重,权重更新后的数据集将用于下一次迭代。

初始时各个记录权重均为1/n,n为记录数目。

主要的实现语句如下:
……
最终在测试集上,由adaboost生成的强分类器的准确率为:
2.kmeans算法
2.1读取数据集
Kmeans算法的数据集是酒的品种数据。

有13个属性,一个分类属性。

共分成3类,数据集前58号为第一类,59-129号为第二类,130-177号为第三类。

2.2初始化kmeans参数
Python中通过调用sklearn.cluster包中的kmeans类来创建方法实例。

需要设置的主要参数是n_clusters,即聚簇数量。

具体代码如下:
当然可以设置init参数为random,表示随机生成初始质心。

默认值的kmeans++,智能选择数据中的若干项作为质心。

还有max_iter可选项,表示kmeans方法迭代次数。

2.3聚类划分
聚簇划分代码如下:
2.4错误率
计算聚簇划分的错误率,代码
结果:
[1 1 1 1 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 2 2 2 1 1 2 2 1 1 2 1 1 1 1 1 1 2 2
1 1
2 2 1 1 2 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 2 0 2 0 0 2 0 0 2 2 2 0 0 1
2 0 0 0 2 0 0 2 2 0 0 0 0 0 2 2 0 0 0 0 0 2 2 0 2 0 2 0 0 0 2 0 0 0 0 2 0
0 2 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 2 0 0 2 2 2 2 0 0 2 2 2 0 0 2 2 0 2
2 0 0 0 0 2 2 2 0 2 2 2 0 2 0 2 2 0 2 2 2 2 0 0 2 2 2 2 2 0 0]
[58, 129, 177]
0.29608938547486036
由于数据集较小而且比较规整,经过测试发现该次实验在第二次迭代就已经收敛,错误率在29.6%左右。

当然,对于没有标签的数据,在衡量聚类结果时可以使用总SSE 来评价。

在不同的k值情况下,选择具有最小总SSE的模型最为合适。

三、遇到的困难及解决方法、心得体会
1. 问题
实现本程序时,由于数据与算法格式不匹配,在数据预处理阶段碰到了各种问题,比如怎样拆分数据中的类别标签、划分数据集的采用何种方式等。

2. 心得
实现本程序之后,深刻认识了决策树算法和kmeans算法的神奇之处,对这些算法的形成、改进、注意点以及优缺点都有了比较详尽的了解,重新认识了数据挖掘这门课。

但由于时间有限,未能自己动手去实现算法的每一个细节,只是调用了相应的工具,我对此略感遗憾。

(注:可编辑下载,若有不当之处,请指正,谢谢!)。

相关文档
最新文档