spssk均值聚类报告_K均值聚类

spssk均值聚类报告_K均值聚类机器学习中的k均值聚类属于无监督学习,所谓k指的是簇类的个数,也即均值向量的个数。算法初始状态下,要根据我们设定的k随机生成k个中心向量,随机生成中心向量的方法既可以随机从样本中抽取k个样本作为中心向量,也可以将中心向量固定在样本的维度范围之内,避免中心向量过偏远离大多数样本点。然后每个样本点需要与k个中心向量分别计算欧氏距离,取欧氏距离最小的中心向量作为该样本点的簇类中心,当第一轮迭代完成之后,…

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全家桶1年46,售后保障稳定

机器学习中的k均值聚类属于无监督学习,所谓k指的是簇类的个数,也即均值向量的个数。算法初始状态下,要根据我们设定的k随机生成k个中心向量,随机生成中心向量的方法既可以随机从样本中抽取k个样本作为中心向量,也可以将中心向量固定在样本的维度范围之内,避免中心向量过偏远离大多数样本点。然后每个样本点需要与k个中心向量分别计算欧氏距离,取欧氏距离最小的中心向量作为该样本点的簇类中心,当第一轮迭代完成之后,中心向量需要更新,更新的方法是每个中心向量取前一次迭代所得到各自簇类样本点的均值,故称之为均值向量。迭代终止的条件是,所有样本点的簇类中心都不在发生变化。
在spss中导入的二维数据如下所示:
在这里插入图片描述
点击菜单栏的“分析”,找到“分类”选中“k-均值聚类”
在这里插入图片描述
将需要进行聚类的变量选入右侧框中
在这里插入图片描述
聚类数由用户设定,方法一般选择“迭代与分类”,“读取初始聚类中心”和“写入最终聚类中心”一般不勾选,除非自定义的聚类中心(自定义聚类中心一般意义不大),如果最后想将最终迭代得到的聚类中心写入指定文件,那么可以勾选第二个复选框。
在这里插入图片描述
设定迭代次数,收敛条件默认为0,即当前均值向量与前一次迭代得到的均值向量之差。
在这里插入图片描述
保存按钮,勾选以上复选框,最终得到的结果会包含以上两个信息。
在这里插入图片描述
选项按钮中,一般勾选以上复选框,spss会统计出初始聚类的中心向量以及每个样本的聚类信息(包括每个样本所属类别,与各自簇类中心向量的欧氏距离)。之后,点击“确定”按钮,完成均值聚类。
得到初始聚类中心和迭代历史记录,我们发现第二次迭代的时候,聚类中心就已经不变了。
在这里插入图片描述
以下是每个样本所属类别以及每个样本与各自簇类中心的欧氏距离。
在这里插入图片描述
在这里插入图片描述
以上是最终得到的聚类中心的横纵坐标,以及聚类中心与中心之间的欧氏距离、每个类别中的样本数量。
以下是通过python编程实现k-均值聚类算法所得结果:

最终得到的聚类中心:
[[ 2.6265299   3.10868015]
 [-2.46154315  2.78737555]
 [-3.53973889 -2.89384326]
 [ 2.65077367 -2.79019029]]

Jetbrains全家桶1年46,售后保障稳定

在这里插入图片描述
显然,与spss得到的聚类结果是一样的。
关于均值聚类的簇类数(即k值),目前并没有方法能确切地确定k的值是多少,但是通常可以通过枚举法和肘方法来大致确定k。
所谓枚举法,即通过取不同的k值来观察最终的聚类结果,选取最优结果所对应的k作为该均值聚类的最终k值。
肘方法是通过绘制不同的k所对应的样本数据点与各自聚类中心的距离平均值来确定k。

import numpy as np
from sklearn.cluster import KMeans
from scipy.spatial.distance import cdist
import matplotlib.pyplot as plt

cluster1 = np.random.uniform(0.5, 2.0, (2, 15))
cluster2 = np.random.uniform(2.5, 4.0, (2, 15))
X = np.hstack((cluster1, cluster2)).T

fig = plt.figure()
ax1 = fig.add_subplot(121)
plt.scatter(X[:, 0], X[:, 1], marker="^", color='m', edgecolors='k', alpha=0.8, s=50)
plt.title("Raw data")

K = range(1, 10)
meandistortions = []
for k in K:
    kmeans = KMeans(n_clusters=k)
    kmeans.fit(X)
    meandistortions.append(sum(np.min(cdist(X, kmeans.cluster_centers_, 'euclidean'), axis=1)) / X.shape[0])

ax2 = fig.add_subplot(122)
plt.plot(K, meandistortions, 'bx-')
plt.xlabel('number of clusters K', fontsize=15)
plt.ylabel('Average distance to centroid', fontsize=15)
plt.title('Elbow for KMeans clustering');
plt.show()

在这里插入图片描述
通过左图我们发现该样本数据集明显应该分为两个簇类,即k=2,当然如果在复杂数据集的情况下我们可能无法用右眼直接看出簇类数,此时就要借助右图的肘方法,即选取某一点该点的前一点至该点下降最快,而该点至该点的后一个点缓慢下降的点所对应的横轴作为均值聚类的k值。 右图由于曲线长得像人的手臂,而且寻找的点又恰好在“肘部”,故称为肘方法。但是有些情况下的曲线不一定是上述所说的手臂形状,此时无法寻找到“肘部”,所以肘方法不一定对所有数据集都适用。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/219249.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • windows10添加开机启动项怎么设置_注册表添加开机启动项

    windows10添加开机启动项怎么设置_注册表添加开机启动项在日常生活中,偶尔要求其中的软件在开机时便能自动启动,比如MySQL一般被设置为自启动项。今天将为大家介绍window10中如何添加开机启动项。操作过程:1、按下win+R调出运行窗口,并输入“shell:startup”即可进入开机启动文件夹。2、开机启动文件夹如图所示,此时文件夹中内容为空。3、如果想要添加启动项,可以将软件快捷方式移入开机启动文件夹中,比如移入“福昕阅读器”。4、我们可以在任务管理器中查看是否成功添加开机启动项…

    2025年7月22日
    1
  • 软件测试基础理论知识「建议收藏」

    今年九月初找工作才开始走上软件测试的道路,下面的是我找软件测试这份工作之前通过阅读软件测评师教程做的笔记。因为是为找工作中的笔试和面试准备的,所以都是一些重点的罗列,希望能帮到正在找软件测试工作的应届生们。  1、软件测试的目的是发现软件中存在的错误,提高软件质量,降低软件项目的风险。2、软件测试只能证明软件存在错误,而不能证明软件没有错误。测试的目的只是把软件的错误控制在一个可以…

    2022年4月7日
    44
  • VS 2013 所有产品密钥

    VS 2013 所有产品密钥转载自:https://blog.csdn.net/my1989night/article/details/44916079VS2013产品密钥–所有版本VisualStudioUltimate2013KEY(密钥):BWG7X-J98B3-W34RT-33B3R-JVYW9VisualStudioPremium2013KEY(密钥):FBJVC-3CMTX-D8DVP…

    2022年5月12日
    53
  • JAVA静态内部类_java静态内部类实例化

    JAVA静态内部类_java静态内部类实例化写在前面  不知不觉,我正式入职到部门实习也有一周多的时间了,这段时间确实学到了不少东西。从大公司的办公、办事的流程准则,到程序员的日常研发工作和其中的注意事项,导师和同事们都很乐于帮助我融入这个新环境。  因为实习生不用加班,业余时间也比较多。便想着利用空闲时间来深入学习、总结一些平时工作中遇到的知识点和代码细节,把之前因为准备期末都快要荒废掉的写博客总结的习惯重新拾回来。fighting~!

    2022年10月10日
    0
  • J2ME开发平台的搭建「建议收藏」

    J2ME开发平台的搭建「建议收藏」 在本文主要介绍J2ME开发平台的搭建,这一步骤在网上已经存在许多了,在此仅仅提供一个简单的参考就可以了! 1下载安装工具:   JDK1.6  http://java.sun.com/javase/downloads/index.jsp    SunJavaWirelessToolkit2.5.2_01forCLDC   http://java.sun.com/

    2022年7月16日
    13
  • GitHub 热榜:轻量级无 Agent 的自动化运维平台!「建议收藏」

    GitHub 热榜:轻量级无 Agent 的自动化运维平台!「建议收藏」大家好,我是JackTian。作为一名运维工程师,大家都知道。早在几年前,偏传统运维,以cacti、nagios为主流,到后来的zabbix、Prometheus、Open-Falcon等,也是现在大多数企业用的偏多的运维监控平台。甚至有些企业,都是自主研发。不管是自主研发还是用开源的,其最终目的都是为了提高日常运维工作效率。那么,今天杰哥给大家推荐一款GitHub热榜开源运维平台——spug。这款开源运维平台是:面向中小型企业设计的轻量级无Agent的自动化运维平台,其主要功能

    2022年5月13日
    56

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号