栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

spss--K

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

spss--K

聚类分析原理简介:
聚类分析是对样品或变量进行分类的一种多元统计方法,目的在于将相似的实物归类。
聚类分析并不是一种纯粹的统计技术,在方法基础上与分布理论和显著性无关,一般不用于从样本推断总体的研究。在市场研究中,聚类分析主要用于市场细分、研究消费者行为,寻找新的潜在市场和左尾其他统计分析的预处理等。

聚类分析的基本概念
聚类(clustering)是将某个对象集划分为若干组(class或cluster)的过程,使得同一个组内的数据对象是具有较高的相似度,而不同的组中间的数据对象是不相似的,相似或者不相似的定义基于属性变量的取值确定,一般采用个对象间的距离(欧几里得距离)来表示。
聚类分析属于无监督的学习方法,它不依赖事先已知的数据分类,也不依赖标有数据类别的训练样本集合。正因为如此,聚类分析是一种通过观察的学习方法,而不是通过示例取学习规则。

思想:
聚类算法就是用K_Means聚类实现的,用欧几里得距离为依据判别点之间的相似性。

  1. 如果二维平面上的一堆点要分成三类,那么首先会随机选择三个点,然后平面中所有的点都会和这三个选择的中心点求距离,离哪个点近,就划分到哪个中心点类别中,初步的标记好三个分类。

  2. 然后这三个分类再对每个分类求其质心,得出三个中心点。这个求质心的过程,是找出一个点,使得这个点到所有的点的距离最小化。因为存在无数个点使得距离最大,单总有一个点,会得到最小的距离。求出中心点后,在重新计算所有点到这三个中心点的距离,重新划分类别。

  3. 以此重复循环,最终得到划分后的类别与求得中心点后计算得到的类别没有差别,或者是距离在一定的误差范围类,即结束分类器。

用spss进行快速聚类,K_均值聚类。表格如下,删除了几个用不到的信息。

我们对以上表格按照salary薪资,和salbegin起始工资,划分类别。
先看一下他们的散点图分布:

我们把这些点分成三个类别。

选择保存按钮点击保存分类后的类别。
最终结果会在spss表格中保存分类的结果类别。
spss分析输出:

初始的聚类中心选择的三个点。


最终的聚类中心点,和每个类别中的数量。一类别工资高的有12个,中等工资的75人,一般工资占比最多。

最终我们绘图看一下分类的结果:

三角形标注的4,5,6三个点是中心点的位置。
然后我又做了另外一件事,用Python中的K_Means方法给这组数据进行分类

km2 = KMeans(n_clusters=3)
km2.fit(df1[["salary","salbegin"]])
plt.figure(figsize=(12,9))
plt.scatter(df1["salbegin"],df1["salary"],c=km2.labels_)
plt.scatter(km2.cluster_centers_[:,1],km2.cluster_centers_[:,0],c='r')
plt.grid(True)
plt.show()


最终得到的三个中心点也不一样。

Python中分得每个类别比较均匀,我执行了很多次,虽然每一次在边缘处有一两个点会摇摆,但基本差别不会太大。而且Python中选择的初始化中心点的方法是K_means++,初始化优化算法。
但是spss中的具体方法我没有查到,希望补充。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/326089.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号