基于weka的数据聚类分析实验.pdf

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

基于Weka的数据聚类分析实验
姓名:覃丽萍专业:计算机应用技术学号:2061002047
1.实验基本原理及目的
聚类分析中的“类”(cluster)和前面分类的“类”(class)是不同的,对cluster更加准确的翻译应该是“簇”。

聚类的任务是把所有的实例分配到若干的簇,使得同一个簇的实例聚集在一个簇中心的周围,它们之间距离的比较近;而不同簇实例之间的距离比较远。

对于由数值型属性刻画的实例来说,这个距离通常指欧氏距离。

在本实验中,我们对前面的“bank-data”作聚类分析,使用最常见的K均值(K-means)算法。

下面我们简单描述一下K均值聚类的步骤。

K均值算法首先随机的指定K个簇中心。

然后:
(1)将每个实例分配到距它最近的簇中心,得到K个簇;
(2)计分别计算各簇中所有实例的均值,把它们作为各簇新的簇中心。

重复(1)和(2),直到K个簇中心的位置都固定,簇的分配也固定。

本次实验的目的,是通过利用Weka中提供的simpleKmeans方法对“bank-data”进行聚类分析,更深刻的理解k均值算法,并通过对实验结果进行观察分析,找出实验中所存在的问题。

2.数据的准备及预处理
原始数据“bank-data.xls”是excel文件格式的数据,需要转换成Weka支持的ARFF文件格式的。

转换方法:在excel中打开“bank-data.xls”,选择菜单文件—>另存为,在弹出的对话框中,文件名输入“bank-data”,保存类型选择“CSV(逗号分隔)”,保存,我们便可得到“bank-data.csv”文件;然后,打开Weka的Exporler,点击Open file按钮,打开刚才得到的“bank-data.csv”文件,点击“save”按钮,在弹出的对话框中,文件名输入“bank-data.arff”,文件类型选择“Arff data files(*.arff)”,这样得到的数据文件为“bank-data.arff”。

K均值算法只能处理数值型的属性,遇到分类型的属性时要把它变为若干个取值0和1的属性。

WEKA将自动实施这个分类型到数值型的变换,而且WEKA会自动对数值型的数据作标准化。

因此,对于ARFF格式的原始数据“bank-data.arff”,我们所做的预处理只是删去属性“id”,修改属性“children”为分类型。

修改过程如下:在Ultredit中打开“bank-data.arff”,将@attribute children numeric改成如下:
图1修改children为分类型
这样我们最终得到的数据文件为“bank-data.arff”,含600条实例。

3.实验过程及结果截图
用“Explorer”打开刚才得到的“bank-data.arff”,并切换到“Cluster”。

点“Choose”按钮选择“SimpleKMeans”,这是WEKA中实现K均值的算法。

点击旁边的文本框,修改“numClusters”为6,说明我们希望把这600条实例聚成6类,即K=6。

下面的“seed”参数是要设置一个随机种子,依此产生一个随机数,用来得到K均值算法中第一次给出的K 个簇中心的位置。

我们不妨暂时让它就为10。

选中“Cluster Mode”的“Use training set”,点击“Start”按钮,观察右边“Clusterer output”给出的聚类结果如下:
图2实验结果
也可以在左下角“Result list”中这次产生的结果上点右键,“View in separate window”在新窗口中浏览结果。

4.实验结果分析
4.1实验结果
下面对实验结果进行解释。

观察图1,首先我们注意到结果中有这么一行:
Within cluster sum of squared errors:1604.7416693522332
这是评价聚类好坏的标准,数值越小说明同一簇实例之间的距离越小。

也许你得到的数值会不一样;实际上如果把“seed”参数改一下,得到的这个数值就可能会不一样。

我们应该多尝试几个“seed”,并采纳这个数值最小的那个结果。

例如我让“seed”取100,就得到:Within cluster sum of squared errors:1555.6241507629218
我们该取后面这个。

当然再尝试几个“seed”,这个数值可能会更小。

接下来“Cluster centroids:”之后列出了各个簇中心的位置。

对于数值型的属性,簇中心就是它的均值(Mean),如cluster0的数值型变量age的均值37.1299;分类型的就是它的众数(Mode),如cluster0的分类型变量children的众数为3,也就是说这个属性上取值为众数值3(有3个孩子)的实例最多。

对于数值型的属性,还给出了它在各个簇里的标准差(Std Devs)。

最后的“Clustered Instances”是各个簇中实例的数目及百分比。

为了观察可视化的聚类结果,我们在左下方“Result list”列出的结果上右击,点“Visualize cluster assignments”。

弹出的窗口给出了各实例的散点图。

最上方的两个框是选择横坐标和纵坐标,第二行的”color”是散点图着色的依据,默认是根据不同的簇“Cluster”给实例标上不同的颜色。

图3实验结果可视化
可以在这里点“Save”把聚类结果保存成ARFF文件。

在这个新的ARFF文件中,“instance_number”属性表示某实例的编号,“Cluster”属性表示聚类算法给出的该实例所在的簇,如下图4。

图4结果的arff文件
4.2存在的问题
在本次实验中,我用了不同的“seed”值对数据进行了三阶段的实验分析:第一阶段不断增大seed值,直到为实例数目600;通过观察第一阶段的实验结果,找到两个最小值点,在第二阶段和第三阶段中,在最小值点seed附近不断改变seed值,以逼近可能最小的“Within cluster sum of squared errors”值。

我把部分实验结果整理如下表:
表1实验结果分析
我们知道,“Within cluster sum of squared errors”值越小说明同一簇实例之间的距离越小,聚类的结果也就越好。

从表中我们可以看出“Within cluster sum of squared errors”的最小值有两个,即seed去200时的1551.72650865326,和seed取400时的1535.19232923634,这也是本次实验中最好的一个方案结果。

我所遇到的问题是,如何迅速的找到是“Within
cluster sum of squared errors”值最小的聚类方案?如果数据实例的数目非常的大,通过不但的改变seed值去尝试寻找是很不现实的,而且,还可能出现局部的最小值。

如何以最快的速度找出最好的聚类方案,这是值得我们去考虑的一个问题。

5.预置问题的回答
在Weka中实现K均值聚类的数据预处理中:
(1)为什么要将children属性变成分类型?
因为K均值算法只能处理数值型的属性,遇到分类型的属性时要把它变为若干个取值0和1的属性。

而Weka能自动实施这个分类型到数值型的变换,而且Weka会自动对数值型的数据作标准化。

而且,children属性不能直接处理为数值性属性,因为孩子的数量不能出现有小数的情况。

因此,我们为了使Weka能自动地,正确的处理children属性,要将children 属性变成分类型。

(2)Weka将自动实施这个分类型到数值型的变换是指将这个分类型的属性变为若干个取值0和1的属性,将这个变化结果截图,并进行解释。

我们以children属性为例加以说明。

之前,我们将children属性变成了分类型,在Weka 中我们点击它,便可在右下方看到如下的结果:
图5children属性变为分类型
从图中我们可以看出,children属性变成了只有0,1,2,3四种取值的分类型。

在Weka 自动实施将children分类型到数值型的变换后,便将children分类型的属性变为四个取值0和1的属性,我们不妨设为children0,children1,children2,children3。

于是,原来实例中孩子为0,1,2或3的实例,转变后其取值方法如下表:
表2变换为数值型后的children属性取值方法
Children0Children1Children2Children3
1000
0100
0010
0001
其中,children0取值1,说明这个实例原children属性的值为0,而且,每个实例在children*(*为0,1,2或3)四个属性上只能有唯一的一个属性取值为1,其余三个为0。

这只是我自己的分析,由于在Weka还是保持的arff文件中没有找到相关的分类型变换为数值型后的结果,因此没有相关的截图。

6.实验总结
本次实验进行比较顺利,使我对如何在Weka中进行聚类分析有了更深刻的了解,对Weka中进行聚类分析的simpleKmeans算法也有了进一步的理解,但是实验中所遇到的,如何以最快的速度找出最好的聚类方案的问题,还没有得到更好的解决。

我将继续阅读相关的文献,希望可以找到这个问题的解决方案。

已有实践证明电信目标市场营销客户分群的解决方案是极为成功且有效的。

聚类分析的数据挖掘技术能够很好地应用于电信目标市场营销,为电信部门解决客户分群的难题。

通过对客户消费模式进行聚类分析,得到客户分群,使得客户按照行为差异被分成若干个群落,同一群体中的客户具有相近的行为特征,不同群体间的客户具有相差很远的行为特征。

对消费行为特征相对近似的若干种客户分群,向其推荐最适合的一类产品,以提高客户的购买率,增加销售收入。

相关文档
最新文档