【原创】WEKA聚类算法wine数据集分析研究报告(附代码数据) 下载本文

【原创】R语言案例数据分析报告论文(附代码数据)

有问题到淘宝找“大数据部落”就可以了

WEKA聚类算法wine数据集分析研究

1 实验目的

希望通过实验研究葡萄酒的差异化,并分析造成这种差异化的原因,可以更深刻的掌握聚类分析的原理;进一步熟悉聚类分析问题的提出、解决问题的思路、方法和技能;达到能综合运用所学基本理论和专业知识;锻炼收集、整理、运用资料的能力的目的;希望能会调用WEKA软件聚类分析有关过程命令,并且可以对数据处理结果进行正确判断分析,作出综合评价。

2 实验数据

Wine这份数据集包含来自3种不同起源的葡萄酒的共178条记录。13个属性是葡萄酒的13种化学成分。通过化学分析可以来推断葡萄酒的起源。值得一提的是所有属性变量都是连续变量。 数据集特征: 属性特征: 相关应用: 多变量 记录数: 178 领域: 捐赠日期 物理 1991-07-01 整数,实数 属性数目: 13 分类 缺失值? 无 网站点击数: 337319 该实验的数据集是MostPopular Data Sets(hits since 2007)中的wine数据集,这是是对在意大利同一地区生产的三种不同品种的酒,做大量分析所得出的数据。这些数据包括了三种酒中13种不同成分的数量。 经过几天对数据集以及分类算法的研究,详细研究了朴素贝叶斯分类器和其他学习算法,包括决策树和神经网络等等。同时由于这个数据集有13个属性,用决策树实现起来会很复杂。我最终选择了用贝叶斯分类算法来实现。我将178个样本分成118个训练样本和60个测试样本,采用朴素贝叶斯分类算法,计算出先验概率和后验概率,通过比较概率的最大值,判别出测试样本所属于的酒的类型,同时输出测试样本计算的正确率和错误率。

这些数据包括了三种酒中13种不同成分的数量。13种成分分别为:Alcohol,Malicacid,Ash,Alcalinity of ash,Magnesium,Total phenols,Flavanoids,Nonflavanoid phenols,Proanthocyanins,Color intensity,Hue,OD280/OD315 of diluted wines,Proline。在 “wine.data”文件中,每行代表一种酒的样本,共有178个样本;一共有14列,其中,第一列为类标志属性,共有三类,分别记为“1”,“2”,“3”;后面的13列为每个样本的对应属性的样本值。其中第1类有59个样本,第2类有71个样本,第3类有48个样本。

3 实验方法

聚类是对数据对象进行划分的一种过程,与分类不同的是,它所划分的类是

1

【原创】R语言案例数据分析报告论文(附代码数据)

有问题到淘宝找“大数据部落”就可以了

未知的,故此,这是一个“无指导的学习” 过程,它倾向于数据的自然划分。其中聚类算法常见的有基于层次方法、基于划分方法、基于密度以及网格等方法。本文中对近年来聚类算法的研究现状与新进展进行归纳总结。一方面对近年来提出的较有代表性的聚类算法,从算法思想。关键技术和优缺点等方面进行分析概括;另一方面选择一些典型的聚类算法和一些知名的数据集,主要从正确率和运行效率两个方面进行模拟实验,并分别就同一种聚类算法、不同的数据集以及同一个数据集、不同的聚类算法的聚类情况进行对比分析。最后通过综合上述两方面信息给出聚类分析的研究热点、难点、不足和有待解决的一些问题等。

实验中主要选择了K均值聚类算法、FCM模糊聚类算法并以UCI Machine Learning Repository网站下载的WINE数据集为基础,然后以WINE数据集在学习了解Weka软件接口方面的基础后作聚类分析,使用最常见的K均值(即K-means)聚类算法和FCM模糊聚类算法。下面简单描述一下K均值聚类的步骤。

K均值算法首先随机的指定K个类中心。然后:

(1)将每个实例分配到距它最近的类中心,得到K个类;

(2)计分别计算各类中所有实例的均值,把它们作为各类新的类中心。 重复(1)和(2),直到K个类中心的位置都固定,类的分配也固定。 在实验过程中通过利用Weka软件中提供的simpleKmeans(也就是K均值聚类算法对WINE数据集进行聚类分析,更深刻的理解k均值算法,并通过对实验结果进行观察分析,找出实验中所存在的问题。然后再在学习了解Weka软件接口方面的基础上对Weka软件进行一定的扩展以加入新的聚类算法来实现基于Weka平台的聚类分析。

3.1 K均值聚类算法

3.1.1 K均值聚类算法理论

K均值算法是一种硬划分方法,简单流行但其也存在一些问题诸如其划分结果并不一定完全可信。K均值算法的划分理论基础是

min??k?Axk?vii?1ic2 (1)

其中c是划分的聚类数,Ai是已经属于第i类的数据集vi是相应的点到第i类的平均距离,即

vi??Nik?1xkNi,xk?Ai

(2)

其中Ni表示在数据集Ai中的对象数。 3.1.2 算法的基本过程

step1:任意选择K个对象作为初始的类的中心; step2:repeat;

step3:根据类中的平均值,将每个数据点 (重新)赋给最相近的类;

2

【原创】R语言案例数据分析报告论文(附代码数据)

有问题到淘宝找“大数据部落”就可以了

step4:更新

类的平均值;

step5:until不再发生变化,即没有对象进行被重新分配时过程结束。

3.2 FCM模糊聚类算法

FCM算法也是一种基于划分的聚类算法,它的思想就是使得被划分到同一类的对象之间相似度最大,而不同类之间的相似度最小。模糊C均值算法是普通C均值算法的改进,普通C均值算法对于数据的划分是硬性的,而FCM则是一种柔性的模糊划分。在介绍FCM具体算法之前我们先介绍一些模糊集合的基本知识。

3.2.1 FCM模糊聚类算法的理论 1) 理论基础-模糊集基本知识

首先说明隶属度函数的概念。隶属度函数是表示一个对象x隶属于集合A的程度的函数,通常记做?A?x?,其自变量范围是所有可能属于集合A的对象(即集合A所在空间中的所有点),取值范围是?0,1?,即0??A?x??1。?A?x??1表示x完全隶属于集合A,相当于传统集合概念上的x?A。一个定义在空间或者叫定义在论域X??x?上X??x?上的隶属度函数就定义了一个模糊集合A,

的模糊子集。在聚类的问题中,可以把聚类生成的类看成模糊集合,因此每个样本点隶属于每个类的隶属度就是?0,1?区间里面的值。

2) FCM的算法理论

1973年,Bezdek提出了该算法,并作为早期硬C均值聚类(HCM)方法的一种改进,命名为模糊C均值聚类简称FCM是一种目标函数法。假设将样本空间X要分为k个类,则类中心集C?(c1,c2,c3,nk,ck)使下式的目标函数值最小

2

mminJm????ijxi?cji?1j?1 (3)

且有 其中

??j?1kij?1 (4)

?ij?[0,1]i?1,2,,n;j?1,2,,k

U?(?ij)

被称为模糊隶属度矩阵。?ij表示的是数据xi隶属于类中心cj的隶属度。m是模

3

【原创】R语言案例数据分析报告论文(附代码数据)

有问题到淘宝找“大数据部落”就可以了

糊加权参数,用于控制在模糊类间的程度依据参考的文献中一般取值为15。 应用拉格朗日乘法并基于上述约束可得到如下式

1?ij? (5) 2c?D?m?1ij?????t?1?Dtj?且

1?i?c,1?j?N

??

Nmijxj1?i?c

(6)

Ci?j?1N??j?1mij其中Dij是Xi到第j类中心Cj的欧氏距离,即

Xi?Cj。

3.2.2 FCM模糊聚类算法的过程

step1:置初始化参数值,包含模糊加权参数值m和聚类数k,以及迭代的次

数s和算法终止误差?。

step2:随机化置初始化聚类的中心C0,t?0。

step3:计算隶属度矩阵U可通过(5)式计算Us得来。 step4:依据(6)式迭代计算聚类的中心Cs?1。

step5:检验Us?1?Us??是否成立,成立则算法结束否则gotostep3。

3.2.3 实验配置

实验配置过程与K均值算法的实验配置过程基本相同,只是在FCM模糊聚类算法实验中要用到模糊隶属度参数,一般将其设置在1~5之间在实验中设置如下param.m=2。也可以根据需要对其进行修改。

3.2.4 FCM模糊聚类算法特点

FCM算法需要两个参数一个是聚类数目c,另一个是参数m。一般来讲c要远远小于聚类样本的总个数,同时要保证c?1。对于m,它是一个控制算法的柔性的参数,如果m过大,则聚类效果会很次,而如果m过小则算法会接近K均值聚类算法。算法的输出是c个聚类中心点向量和c*N的一个模糊划分矩阵,这个矩阵表示的是每个样本点属于每个类的隶属度。根据这个划分矩阵按照模糊集合中的最大隶属原则就能够确定每个样本点归为哪个类。聚类中心表示的是每个类的平均特征,可以认为是这个类的中心代表。

FCM算法是图像分割使用最多的方法之一,它的成功主要归功于为解决每

4

【原创】R语言案例数据分析报告论文(附代码数据)

有问题到淘宝找“大数据部落”就可以了

个图像像素的隶属需要引入了模糊性。与K均值聚类相比较来说FCM能够保留初始图像的更多信息。FCM对孤立点和其他人造图像非常敏感。

3.3 基于weka的聚类分析

3.4.1 数据的预处理

从网站下载的WINE原始数据集wine.data文件,而Weka软件需要的是ARFF文件格式的数据。因此需要将数据转换成Weka支持的ARFF文件格式的。

转换过程如下

首先用记事本方式打开文件发现文件中的数据之间是以逗号来划分的,因此可以将数据文件的名称改为wine.csv。然后,打开Weka选择Tools选项下的ArffViewer如下图

打开ArffViewer后选择File选项下的Open弹出如下图的打开窗口,在文件类型一栏选择CSV data files(*.csv)项。

然后找到相应的文件后单击打开后如下图

5