机器学习:学习KMeans算法,了解模型创建、使用模型及模型评价

机器学习:学习KMeans算法,了解模型创建、使用模型及模型评价

作者:i阿极

作者简介:Python领域新星作者、多项比赛获奖者:博主个人首页

😊😊😊如果觉得文章不错或能帮助到你学习,可以点赞👍收藏📁评论📒+关注哦!👍👍👍

📜📜📜如果有小伙伴需要数据集和学习交流,文章下方有交流学习区!一起学习进步!💪


专栏案例:机器学习
机器学习:基于逻辑回归对某银行客户违约预测分析
机器学习:学习k-近邻(KNN)模型建立、使用和评价
机器学习:基于支持向量机(SVM)进行人脸识别预测
决策树算法分析天气、周末和促销活动对销量的影响
机器学习:线性回归分析女性身高与体重之间的关系
机器学习:基于主成分分析(PCA)对数据降维
机器学习:基于朴素贝叶斯对花瓣花萼的宽度和长度分类预测

文章目录

  • 机器学习:学习KMeans算法,了解模型创建、使用模型及模型评价
  • 一、实验目的
  • 二、实验原理
  • 三、实验环境
  • 四、实验内容
  • 五、实验步骤
    • 1.数据读取
    • 2.数据理解
    • 3.数据规整化处理
    • 4.数据建模
    • 5.查看模型
    • 6.预测模型
    • 7.结果输出
  • 总结


一、实验目的

学习sklearn模块中的KMeans算法

二、实验原理

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

1、 随机选取k个聚类质心点(cluster centroids)为
在这里插入图片描述
2、 重复下面过程直到收敛 {

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

一般来说,求点群中心点的算法你可以使用各个点的X/Y坐标的平均值。不过,我这里想告诉大家另三个求中心点的的公式:

1)Minkowski Distance公式——λ可以随意取值,可以是负数,也可以是正数,或是无穷大。
在这里插入图片描述
2)Euclidean Distance公式——也就是第一个公式λ=2的情况
在这里插入图片描述
3)CityBlock Distance公式——也就是第一个公式λ=1的情况
在这里插入图片描述

三、实验环境

Python 3.9

Anaconda

Jupyter Notebook

四、实验内容

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

五、实验步骤

1.数据读取

1.查看数据内容
在这里插入图片描述
在这里插入图片描述

2.使用pandas的read_table方法读取protein.txt文件,以\t分隔并传入protein

import pandas as pd  
protein = pd.read_table("D:\CSDN\data\kmeans\protein.txt", sep='\t')  
protein.head()  

在这里插入图片描述

2.数据理解

1.查看protein的描述性统计

print(protein.describe())

在这里插入图片描述

2.查看数据基本信息

protein.info()

在这里插入图片描述

3.查看protein的列名

print(protein.columns)

在这里插入图片描述

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

print(protein.shape)  

在这里插入图片描述

3.数据规整化处理

1.导入sklearn模块中的preprocessing函数

from sklearn import preprocessing  
#删除protein中的Country列,axis=1表示横向执行  
sprotein = protein.drop(['Country'], axis=1) 
print(sprotein) 

在这里插入图片描述

使用preprocessing函数中的.scale()方法进行标准化,一般会把train和test集放在一起做标准化,
或者在train集上做标准化后,用同样的标准化器去标准化test集此时可以用scaler

sprotein_scaled = preprocessing.scale(sprotein)  
print(sprotein_scaled)  

在这里插入图片描述

4.数据建模

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

from sklearn.cluster import KMeans  
#创建一个1~20的列表并赋值给NumberOfClusters  
NumberOfClusters = range(1, 20)  
#n_clusters参数:分成的簇数(要生成的质心数)  
kmeans = [KMeans(n_clusters=i) for i in NumberOfClusters]  
score = [kmeans[i].fit(sprotein_scaled).score(sprotein_scaled) for i in range(len(kmeans))]  
score  

在这里插入图片描述

2.导入Matplotlib模块

import matplotlib.pyplot as plt  
%matplotlib inline  
plt.plot(NumberOfClusters,score)  
plt.xlabel('Number of Clusters')  
plt.ylabel('Score')  
plt.title('Elbow Curve')  
plt.show() 

在这里插入图片描述

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

myKmeans = KMeans(algorithm="auto",n_clusters=5,n_init=10,max_iter=200) 

参数解释:

  • algorithm:有“auto”, “full” or “elkan”三种选择,默认的”auto”则会根据数据值是否是稀疏的,来决定如何选择”full”和“elkan”,一般数据是稠密的,那么就是 “elkan”,否则就是”full”

  • n_clusters=5:即k值,一般需要多试一些值以获得较好的聚类效果

  • n_init:用不同的初始化质心运行算法的次数

  • max_iter: 最大的迭代次数

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

myKmeans.fit(sprotein_scaled) 

5.查看模型

1.打印输出myKmeans模型

print(myKmeans)

在这里插入图片描述

6.预测模型

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

y_kmeans = myKmeans.predict(sprotein)  
print(y_kmeans) 

在这里插入图片描述

7.结果输出

1.编写print_kmcluster函数并输出结果

def print_kmcluster(k):  
    '''用于聚类结果的输出  
       k:为聚类中心个数  
    '''  
    for i in range(k):  
        print('聚类', i)  
        ls = []  
        for index, value in enumerate(y_kmeans):  
            if i == value:  
                ls.append(index)  
        print(protein.loc[ls, ['Country', 'RedMeat', 'Fish', 'Fr&Veg']])  
              
print_kmcluster(5)

在这里插入图片描述


总结

K-Means算法是一种典型的基于划分的聚类算法,也是一种无监督学习算法。K-Means算法的思想很简单,对给定的样本集,用欧氏距离作为衡量数据对象间相似度的指标,相似度与数据对象间的距离成反比,相似度越大,距离越小。

走在人生的跑道上,不管遇到任何的困难,我们都应该坚持下去,永不退缩,只有这样我们才能够成功。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

R 语言基础

R 语言基础 一门新的语言学习一般是从输出 “Hello, World!” 程序开始&#xff0c;R 语言的 “Hello, World!” 程序代码如下&#xff1a; ## 实例&#xff08;helloworld.R&#xff09;myString <- "Hello, World!"print ( myString )以上实例将字符串 “Hell…

【C++】模板进阶|继承

文章目录一、模板进阶1. 非类型模板参数2. 模板的特化2.1 函数模板特化2.2 类模板特化3. 模板的分离编译3.1 什么是分离编译3.2 模板的分离编译3.3 模板总结二、继承1. 继承的概念及定义2. 基类和派生类对象赋值转换3. 继承中的作用域4. 派生类的默认成员函数5. 继承与友元or静…

Linux使用:环境变量指南和CPU和GPU利用情况查看

Linux使用&#xff1a;环境变量指南和CPU和GPU利用情况查看Linux环境变量初始化与对应文件的生效顺序Linux的变量种类设置环境变量直接运行export命令定义变量修改系统环境变量修改用户环境变量修改环境变量配置文件环境配置文件的区别profile、 bashrc、.bash_profile、 .bash…

【云原生】Kubernetes(k8s)部署 MySQL+Dubbo+Nacos服务

一、说明二、部署 MySQL三、部署 Nacos四、部署 Dubbo 服务4.1. 创建镜像仓库的密钥4.2. 部署 provider 服务4.3. 部署 consumer 服务五、测试一、说明 本文介绍基于 Kubernetes(k8s) 环境集成阿里云 私有镜像仓库 来部署一套 Dubbo Nacos 的微服务系统&#xff0c;并使用 Ku…

【动手学深度学习】(task123)注意力机制剖析

note 将注意力汇聚的输出计算可以作为值的加权平均&#xff0c;选择不同的注意力评分函数会带来不同的注意力汇聚操作。当查询和键是不同长度的矢量时&#xff0c;可以使用可加性注意力评分函数。当它们的长度相同时&#xff0c;使用缩放的“点&#xff0d;积”注意力评分函数…

SPSS27破解安装后,出现应用程序无法正常启动(0xc000007b)

破解完SPSS 27软件后&#xff0c;点击图标出现下图错误 可以尝试以下方法&#xff1a; 1. 在安装目录下找到VC开头的文件夹 2. 点击此软件进行修复 若修复完成&#xff0c;重新启动SPSS软件即可。 3. 若提示错误&#xff0c;显示如下界面&#xff0c;进行下面的方法 4. 下…

FPGA 20个例程篇:20.USB2.0/RS232/LAN控制并行DAC输出任意频率正弦波、梯形波、三角波、方波(三)

如图1所示是USB2.0/RS232/ETH控制并行DAC输出任意频率正弦波、梯形波、三角波、方波的整体设计示意图&#xff0c;可以看到上位机通过RS232串口、ETH千兆网口以及USB2.0接口和FPGA建立通信&#xff0c;通过不同的接口发送报文&#xff0c;FPGA在指令解析模块中把相关设置和参数…

【蓝桥杯冲刺】蓝桥杯11届省赛C++b组真题-填空题

目录 试题A&#xff1a;门牌制作 解题思路&#xff1a; 答案&#xff1a; 试题B&#xff1a;既约分数 解题思路&#xff1a; 答案&#xff1a; 试题C&#xff1a;蛇形填数 解题思路&#xff1a; 答案&#xff1a; 试题D&#xff1a;跑步训练 解题思路&#xff1a; …

Linux中有哪些常用的网络命令,分别适用于什么场景?

Linux作为一种广泛使用的操作系统&#xff0c;其网络功能非常强大。在Linux系统中&#xff0c;有很多网络相关的命令可以用于管理和配置网络&#xff0c;比如ifconfig、netstat、ping、traceroute、route等等。本文将对一些常用的Linux网络命令进行详细介绍。 一、ifconfig命令…

kafka组件(角色)介绍_结合官网、教材和实践

kafka中有很多重要的组件&#xff0c;下面 将一一介绍它们的功能以及它们内在的关系。 在文章中&#xff0c;可能会混用中英文来说明&#xff0c;英语中文对照表如下: Component Name中文名称Producer生产者Consumer消费者Consumer消费者组Topic主题Partition分区Replica副本…

十大公认音质好的骨传导耳机,分享几款音质好的骨传导耳机

骨传导耳机&#xff0c;顾名思义&#xff0c;就是通过骨头振动来传导声音的耳机。相比于传统耳机&#xff0c;它的声音传输更加开放&#xff0c;不会对耳膜造成压迫感&#xff0c;也不会对耳膜旁的内毛细胞造成损害。因此骨传导耳机既是运动蓝牙耳机&#xff0c;又是音乐蓝牙耳…

graalvm22.3.1打包exe和linux

1. windows 1.1 构建环境 1.1.1 graalvm环境 graalvm地址 拉满直接jdk17,记得科学上网 1.1.2 native-image环境 还是在graalvm的地址上 1.1.3 环境安装 JAVA_HOME新增java环境变量(jdk环境的配置方法)

【分布式】java实现分布式事务的五种方案

文章目录背景什么是分布式事务什么是分布式系统&#xff1a;什么是事务&#xff1a;什么是本地事务&#xff1a;什么是分布式事务&#xff1a;分布式事务有哪些应用场景&#xff1a;如何进行分布式事务控制CAP理论分布式系统如何兼顾CAP&#xff1f;CAP有哪些组合方式&#xff…

【创作赢红包】linux软件推荐及安装

【创作赢红包】linux软件推荐及安装好用的linux软件好用的linux软件 Visual Studio Code Chrome mpv media player sudo add-apt-repository ppa:mc3man/mpv-tests sudo apt-get update sudo apt-get install mpvWPS Sublime Text Beyond Compare Wireshark kolourpaint…

java企业级信息系统开发讲课笔记04初探Spring ——采用Java配置类管理Bean

文章目录一、学习目标二、采用java配置类管理Bean&#xff08;一&#xff09;打开项目&#xff08;二&#xff09;创建子包&#xff08;三&#xff09;创建杀龙任务类&#xff08;四&#xff09;创建勇敢骑士类&#xff08;五&#xff09;创建spring配置类&#xff08;六&#…

我国CRO行业发展前景-【趋势分析】

随着医疗技术的不断发展&#xff0c;医药行业也在不断壮大。而在医药行业中&#xff0c;Cro行业也受到越来越多的关注。Cro是Contract Research Organization的缩写&#xff0c;中文翻译为合同研究组织。Cro公司主要提供医药研究和开发服务&#xff0c;帮助医药企业实现新药研发…

归并排序的相关面试题

文章目录1. 小和问题2. 逆序对3. num>x*2的问题4. 区间和的个数1. 小和问题 什么是小和问题呢&#xff1f; 这是一个数组&#xff0c;我们要求每一个数左边比当前数小的数的和累加起来。 2的左边没有数&#xff0c;说明它的小和为0。 4的左边2比4小&#xff0c;说明它的小…

SWIG包装器使用指南——(四)C#使用SWIG简介与实践

SWIG系列&#xff1a;http://t.csdn.cn/cIAcr 文章目录一、简介二、全局函数、变量、常量三、继承四、传递指针、引用、数组与值五、基本类型的指针与引用六、基本类型的数组七、基本类型的默认map规则八、常用的typemap方法九、代码插入十、实践10.1 如何映射Foo*&到ref F…

Selenium自动化定位元素

1.显示等待&#xff1a; 专门针对单个元素&#xff0c;new 一个 WebDriverWait​ 来创建对象&#xff0c;需要带driver 参数和等待时间秒2.封装显示等待通用方法&#xff1a;见视频3.面试常见题&#xff1a;显示等待和隐式等待的区别4.日历中选择日期&#xff1a; 定位父节点//…

对机载预警雷达STAP的慢时调频干扰matlab

对机载预警雷达STAP的慢时调频干扰matlabSTAP基本原理流程慢时调频干扰模型慢时调频干扰STAP仿真matlabSTAP基本原理流程 假设天线阵有N个阵元&#xff0c;一个CPI包含M个脉冲&#xff0c;STAP的具体计算流程如下。 &#xff08;1&#xff09; 确定待检测单元&#xff0c;明确该…
最新文章