机器学习——Kmeans算法

news2024/11/16 8:19:24

一、实验目的

学习sklearn模块中的KMeans算法

二、实验内容

学习KMeans算法,了解模型创建、使用模型及模型评价等操作

三、实验原理或流程

实验原理:

K-means算法是将样本聚类成k个簇(cluster),具体算法描述如下:

1、随机选取k个聚类质心点(cluster centroids)

2、重复下面过程直到收敛{
对于每一个样例i,计算其应该属于的类

对于每一个类j,重新计算该类的质心

K是我们事先给定的聚类数,c(i)代表样例ik个类中距离最近的那个类,c(i)的值是1k中的一个。质心uj代表我们对属于同一个类的样本中心点的猜测,拿星团模型来解释就是要将所有的星星聚成k个星团,首先随机选取k个宇宙中的点(或者k个星星)作为k个星团的质心,然后第一步对于每一个星星计算其到k个质心中每一个的距离,然后选取距离最近的那个星团作为c(i),这样经过第一步每一个星星都有了所属的星团;第二步对于每一个星团,重新计算它的质心uj (对里面所有的星星坐标求平均)。重复迭代第一步和第二步直到质心不变或者变化很小。求点群中心的算法:
一般来说,求点群中心点的算法你可以使用各个点的X/Y坐标的平均值。

四、实验过程及源代码

1.打开终端模拟器,切换到/data目录下,使用wget命令下载实验数据

2.开启jupyter notebook

3.创建一个.ipynb文件

4.使用pandasread_table方法读取protein.txt文件,以\t分隔并传入protein

5.查看protein的描述性统计

​6.查看protein的列名
 

7.用.shape方法可以读取矩阵的形状

​8.导入sklearn模块中的preprocessing函数
 

9.导入sklearn模块中的KMeans方法

​10.导入Matplotlib模块
 

11.使用KMeans算法生成实例myKmeans

12.利用.fit(方法对sprotein_scaled进行模型拟合

13.打印输出myKmeans模型

14.使用.predict方法,用训练好的模型进行预测

​15.编写print_kmcluster函数并输出结果

五、实验结论及心得

结论:

kmean算法的特点是不能保证该算法收敛域全局最优解,并且它常常终止于一个局部最优解。结果可能依赖于初始簇中心的随机选择,所以为了尽可能的得到好的结果,我们通常会选择不同的初始簇中心,来多疑运行K-均值算法。

算法优点:
1)原理比较简单,实现也是很容易,收敛速度快。
2)聚类效果较优。
3)算法的可解释度比较强。
4)主要需要调参的参数仅仅是簇数k
算法缺点:
1K值的选取不好把握 

2)对于不是凸的数据集比较难收敛
3)如果各隐含类别的数据不平衡,比如各隐含类别的数据量严重失衡,或者各隐含类别的方差不同,则聚类效果不佳。
4 采用迭代方法,得到的结果只是局部最优。

心得体会:

学习sklearn模块中的KMeans算法,我了解到它是一种聚类分析的算法。该算法通过不断迭代调整簇心的位置,将数据集划分为多个簇,使得每个簇内部的样本相似度越高,而不同簇之间的样本相似度越低。在使用KMeans算法时,需要指定簇的数量,同时也可以通过设置不同的参数来调整算法的性能。此外,sklearn中还提供了其他的聚类算法,如DBSCAN、层次聚类等,可以根据实际任务需求进行选择。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/682895.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

春招上岸阿里,好多问题当场尬住!

一个粉丝,23年应届毕业生, 双非本科。最近他校招上岸了,拿到了阿里软件测试岗位的Offer。 他总结了一下面试题,感觉很多内容还是有难度的,尤其是对于应届生来说。下面是他整理的面试题,看看这种校招面试难…

sonarqube本地安装使用

sonarqube本地安装使用 sonarqube本地安装使用配置 官网网址:https://www.sonarqube.org/ 注意:sonarqube版本需要与jdk和数据库版本相对应,以及sonarqube对应电脑的位数 本案例中:JDK8、sonarqube7.6版本 在说明文档中可以…

svg图版绘制

推荐工具:Inkscape 绘制带折线的图版,使用左侧工具栏(绘制贝塞尔曲线和直线) 选中顶部(创建一个直线段构成的折线) 直接使用鼠标左键点对点进行绘制,停顿一次为一个坐标,鼠标右击…

软件测试技能,JMeter压力测试教程,setUp线程组实现用户先登录(八)

前言 在接口测试的时候,很多接口都需要用户先登录,才有访问接口的权限。在测试的时候,我们的关注点其实是当前测试的接口,登录只是一个前置操作 像 python 的 unittest 和 pytest 框架都有 setUp 的概念,前置操作用来…

探究物流机器人产业新发展

原创 | 文 BFT机器人 01 我国物流机器人发展现状 机器人人工智能加速了物流行业的发展,优化和提高了物流资源、物流流程和物流效率。 近年来,机器人相关产品和服务得到了快速推广,并经常应用于不同的存储和物流场景,如电子商务存储…

InternalAuthenticationServiceException: Invalid bound statement (not found):

InternalAuthenticationServiceException: Invalid bound statement (not found): 在项目中,我们会遇到如下问题,但是这个问题是一种常见的典型问题 org.springframework.security.authentication.InternalAuthenticationServiceException: Invalid boun…

SciencePub学术 | 纳米技术类重点SCIEEI征稿中

SciencePub学术 刊源推荐: 纳米技术类重点SCI&EI征稿中!1区正刊,进展顺利、录用快。信息如下,录满为止: 一、期刊概况: 纳米技术类重点SCI&EI 📌【期刊简介】IF:6.0-6.5,…

亚马逊云科技数据库市场份额提升迅速,合作伙伴和开发者生态系统为其赋能

对比常规的基础设施上云和应用上云,企业对于数据上云一直保持最为慎重的态度。不过也不是一成不变的,Gartner前不久公布的一组数据显示,在2022年全球数据库管理系统的市场份额排名中,作为纯云厂商的亚马逊云科技,超越了老牌传统数据库厂商甲骨文和微软,首次位居第一。 降低企业…

软件测试技能,JMeter压力测试教程,压测带token的接口(六)

目录 前言 一、场景案例 二、测试token准备 三、jmeter CSV数据文件设置 四、运行结果 前言 工作中我们需要压测的接口大部分都是需要先登陆后,带着token的接口(或者带着cookies),我们可以先登陆获取token再关联到下个接口 …

如何使用 ChatGPT 赚钱(10 种简单的方法)

即使自从OpenAI推出ChatGPT以来,科技领域的情况也发生了巨大变化。OpenAI 大型语言模型 (LLM) 非常强大,它可以做很多事情,包括写论文、数字运算、代码编写等创造性工作。人们现在正在使用ChatGPT疯狂的AI功能来赚钱。…

JMeter作用域和运行顺序(2)

JMeter作用域和运行顺序 一、JMeter运行顺序1、运行顺序 二、JMeter作用域1、层级生效的元素2、顺序生效的元素3、作用域规则 一、JMeter运行顺序 1、运行顺序 测试计划优先运行,其次是线程组 线程组与线程组之间,默认并发运行 当在测试计划下&#x…

【AUTOSAR】CCP协议的代码分析与解读(一)----CCP协议简述

概述 – Introduction 汽车电控单元 CAN总线 CCP协议目前基于CAN(Controller Area Network)总线的分布式系统在汽车电子领域得到广泛应用,电子控制单元的标定已成为汽车电子控制装置开发的一个重要环节。CCP(CAN Calibration Protocol)是一种基于CAN总线的ECU(Electronic Cont…

这是哪家项目的智能合约,尽快打标签认领!

为智能合约上标签,看Web3Go链上分析! 本文参考了Moonscan标签结构指南Moonscan标签结构指南Moonscan标签结构指南,旨在帮助更多团队或项目为智能合约打标签,从而能够在Web3Go上获取重要的链上指标。 Contract Captains 智能合约…

短信验证码的防攻击

案例 看到下面一个请求包,发个验证码附带了这么多的参数,那么肯定是有些问题滴!! 一般比较典型的短信轰炸漏洞,要么是未作任何限制,要么是添加 +、空格等可以绕过 最近在测试的时候,发现了一点新东西,利用请求中的其他参数也可以造成短信轰炸漏洞,比如说: 场景 …

vue(js)线程干扰,vue生命周期干扰

前言 js的事件循环机制对于我们理解阅读代码的执行顺序是必不可少的知识点。在 vue 中虚拟 DOM 对比之后的重渲染便是参考这种机制 Event Loop js 是单线程语言,干完一件事之后才能干下一件事 js 执行的代码可分为同步和异步,同步代码执行完毕再执行异…

正式接入ChatGPT, 捷码智能助手重磅来袭!

捷码平台最新介绍 ChatGPT给各行各业带来的深远影响,绝对不止一款升级版的客服机器人那么简单。 以微软为例,早在3月17日,继把GPT4引入搜索引擎后,微软又重磅推出了由AI驱动的Microsoft 365 Copilot,它能自动生成电子…

python+pytest自动化测试函数测试类测试方法的封装

今天呢,想和大家聊聊pythonpytest接口自动化中将代码进行封装,只有将测试代码进行封装,才能被测试框架识别执行。 例如单个接口的请求代码如下: import requests headers {"user-agent": "Mozilla/5.0 (Windows…

如何高效优雅地管理接口文档

目录 前言 什么是Apifox 为什么选Apifox Apifox初体验 安装注册 接口文档管理 在线接口文档 接口调试 数据模型 环境管理 Mock功能 测试用例 测试套件 参数化 持续集成 团队管理 生成代码 前言 管理接口文档是一个重要的任务,它能够帮助团队成员更…

直接插入排序到底有多“直男”

作者主页:paper jie的博客_CSDN博客-C语言,算法详解领域博主 本文作者:大家好,我是paper jie,感谢你阅读本文,欢迎一建三连哦。 本文录入于《算法详解》专栏,本专栏是针对于大学生,编程小白精心…

JavaScript中的垃圾回收和内存泄漏

垃圾回收 JavaScript 中的内存管理是自动执行的,而且是不可见的。我们创建基本类型、对象、函数……所有这些都需要内存。 当不再需要某样东西时会发生什么? JavaScript 引擎是如何发现并清理它? 垃圾回收有两种方法:标记清除、引用计数。引用计数不…