聚类分析:用于筛选聚类变量的一套方法

聚类分析是常见的数据分析方法之一,主要用于市场细分、用户细分等领域。利用 SPSS 进行聚类分析时,用于参与聚类的变量决定了聚类的结果,无关变量有时会引起严重的错分,因此,筛选有效的聚类变量至关重要。

案例数据源:

在 SPSS 自带数据文件 plastic.sav 中记录了 20 中塑料的三个特征,分别是 tear_res (抗拉力)、 gloss (光滑度)、 opacity (透明度),相关经验表面这 20 中塑料可以分为 3 个种类,如果用这三个变量进行聚类,请判断和筛选有效聚类变量。

一套筛选聚类变量的方法

一、盲选

将根据经验得到的、现有的备选聚类变量全部纳入模型,暂时不考虑某些变量是否不合适。本案例采用 SPSS 系统聚类方法。对话框如下 :

统计量选项卡:聚类成员选择单一方案,聚类数输入数字 3 ;

绘制选项卡:勾选树状图;

方法选项卡:默认选项,不进行标准化;

保存选项卡:聚类成员选择单一方案,聚类数输入数字 3 ;

二、初步聚类

这是盲选得到的初步聚类结果,并且在数据视图我们可以看到已经自动生成了一个聚类结果变量,这个变量非常有用。

三、方差分析

是不是每一个纳入模型的聚类变量都对聚类过程有贡献?利用已经生成的初步聚类结果,我们可以用一个单因素方差分析来判断分类结果在三个变量上的差异是否显著,进而判断哪些变量对聚类是没有贡献的。

分析——比较均值——单因素方差分析:

选项选项卡:勾选均值图

由方差分析我们很明确的得知,纳入模型的三个聚类变量,其中只有“透明度”指标在各个分类上有显著的差异,也就是说分类有 效果,让每个分类的差异很大,而两外两个变量则在三个分类上没有显著差异,没有很好的类别区分度,所以,我们可以认为,这两个变量对聚类无作用或者无贡 献,可考虑踢出模型。

我们还想从可视化的角度来查看和判断,单因素方差分析为我们提供了均值图,可惜,这三个图却最容易误导我们的判断,因为 spss 在自动生产均值图时为每一个变量单独制图,而且分配不同的纵轴坐标,导致每个图看起来都有非常大的差异,从视觉上迷惑我们做出错误的判断。

这里需要改进!

四、均值描述

为改进以上 SPSS 默认选项的不足之处,我们需要自己生成三个变量在不同类别上的均值, means 过程可以帮助到我们。

从数字上来看,抗拉力( 6.8 、 6.7 、 7.1 )、光滑度( 9.3 、 9.4 、 9.2 )两个指标在三个类别上并没有多大的差异,而对聚类有贡献的透明度指标在不同类别上区分度非常明显。

五、多线均值图

克服纵轴刻度的方法是将这三个指标放在同一个坐标轴上进行对比,也就是制作一个多线均值图。

此时,结果已经一目了然了。

综上,我们可以将抗拉力、光滑度两个指标从模型中剔除,只留下透明度一个指标再进行聚类。

我们发现,前后两次聚类的结果一模一样,用一个指标可以代替以前三个指标的进行聚类。

我们这样做的意义何在?如果能将这些整理成为规则,形成经验,那我们就可以不用测量抗拉力和光滑度这两个指标了,你不觉得多测量两个指标成本会增加吗?

时间: 2024-10-18 16:36:26

聚类分析:用于筛选聚类变量的一套方法的相关文章

Winform开窗,筛选数据后返回数据的方法

在开发中,经常需要打开另一个窗体(简写为"开窗"),然后在开窗中进行数据筛选,选中需要的数据,最后将值传递给本原来的窗体.而且,这个开窗可以重复用于多个地方,其效果如同日历控件的弹出窗口.如下图所示: 测试环境 vs2008 基本思路 1.创建一个窗体类. (1)为该类添加用于传递值的属性. (2)为该类添加一个事件,用于通知调用方值已经准备好. (3)在窗体类的某个函数中,如单元格双击处理函数中,为属性赋值,并引发这个事件. 2.调用该窗体类. (1)定义一个全局的窗体类对象. (2

<22>【掌握】指针变量概念及定义方法+【理解】两变量值交换的方法+【掌握】总结*使用场合

[掌握]指针变量概念及定义方法 1.指针变量 用来存放地址的变量,就是指针变量 2.指针? 就是地址,地址是个常量 3.指针变量的定义 数据类型 *指针变量名; int *p; //定义了一个指针变量,变量名是p //int表示,p只能存放一个int类型的变量的地址 char *p1; //定义了一个指针变量,变量名是p1 //p1只能存放一个char类型数变量的地址 int num=10; char *p = # //警告 4.指针变量定义的注意事项 1)“*” 必须得有,如果没有就相

JavaSE7基础 类中的成员方法 局部变量和成员变量的变量名相同时,方法将使用局部变量

版本参数:jdk-7u72-windows-i586注意事项:博文内容仅供参考,不可用于其他用途. 代码 class Test{ //成员变量在堆内存中,有默认初始值 int num; String str; double d; public void printNum(){ //在成员方法中,局部变量num和成员变量num的变量名相同时,方法将使用局部变量 int num=1; System.out.println(num); } } class Demo{ public static voi

Mac添加环境变量的三种方法

Mac添加环境变量的三种方法   法一:系统级,修改/etc/paths(每一行是一个环境变量)   法二:系统级,方便管理 1.创建一个文件: sudo touch /etc/paths.d/mysql 2.用 vim 打开这个文件(如果是以 open -t 的方式打开,则不允许编辑): sudo vim /etc/paths.d/mysql 3.编辑该文件,键入路径并保存(关闭该 Terminal 窗口并重新打开一个,就能使用 mysql 命令了) /usr/local/mysql/bin

[Shell&Mac&Environment variables]自己常用的Mac(或者说Linux)Shell命令小结,含Mac使用zsh shell的环境变量的有关配置方法

今天在使用tomcat的配置的时候,我用的mac,要是用到一些命令去配置tomcat. 问题来了: 我每次要去启动tomcat服务特别麻烦,因为我要先进入tomcat所在的文件目录,或者不进入使用~/,但是因为我把tomcat放到了一个比较“深“的文件夹里,所以命令显得又丑又长. 问题解决方案: 1.使用环境变量(修改.bashrc的方法) a.先查看自己的Mac目前正在用的是什么shell echo $SHELL 返回结果类似如下图 这里我是zsh,,也许你是bash,不过没关系,配置环境变量

php smarty模版引擎中变量操作符及使用方法

php smarty模版引擎中变量操作符及使用方法

JavaScript获取后台C#变量以及调用后台方法 && 获取请求的URL参数

一.当然我们可以在后台中获取参数的值,然后在前台js代码中获取变量的值,具体做法请参考下面JavaScript获取后台C#变量以及调用后台方法. 其实我们也可以直接在js中获取请求的参数的值,通过使用window.location.search可以获取到当前URL的?号开始的字符串,如前面的链接获取到的search为?id=001.再对获取的字符串进行处理,就可以获取到参数的值了. 复制代码 代码如下: 1 function getUrlParam(name) { 2 var reg = new

【面向对象】变量的隐藏,方法的重…(转载)

[面向对象]变量的隐藏,方法的重- 1  变量的隐藏和方法的重写(覆盖) 1)变量的隐藏:子类定义的属性的名字跟从父类中继承过来的属性名字一致,子类新定义的属性会覆盖从父类中继承来的属性. eg: class Person{ String name = "关羽"; } class Boss extends Person{ String name = "关羽"; --被子类定义同名的属性给覆盖了 String name = "刘备"; } main

【SAS BASE】定义固定长度的character变量的四种方法

INPUT语句 1 INPUT Food $; /*采用list-style input,字符型变量默认长度为8*/ 2 INPUT Food $1-10; /*采用column input,长度由列的数量决定*/ 3 INPUT Food $15.; /*采用formatted input,长度formatted中的数字决定*/ ASSIGNMENT语句(赋值):用户可通过Assignment语句定义新变量,其程度有第一个出现在该变量中的观测决定. LENGTH语句:在DATA步中使用Leng