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

news2024/11/15 23:54:57

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

作者:AOAIYI

作者简介:Python领域新星作者、多项比赛获奖者:AOAIYI首页

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

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


专栏案例:机器学习
机器学习:基于逻辑回归对某银行客户违约预测分析
机器学习:学习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.coloradmin.cn/o/382275.html

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

相关文章

android 动态加载jar包

什么时候需要用到动态加载jar包呢? 减少apk本身大小,某些界面才需要用jar里的功能jar中的功能可以独立开发,不要依赖其它的东西,能适用各个项目和第三方公司合作,人家不提供项目源码给你,但又要开发他们使…

MySQL workbench的基本操作

1. 创建新的连接 hostname主机名输入“local host”和“127.0.0.1”效果是一样的,指的是本地的服务器。 需要注意的是,此处的密码在安装软件的时候已经设定。 点击【Test Connection】,测试连接是否成功。 创建完的连接可以通过&#xff0c…

汇编指令学习(ADD,SUB,MUL,DIV,XADD,INC,DEC,NEG)

一、ADD加法操作指令将eax置1,ebx置2,运行下面命令,将结果保存到eaxadd eax,ebx扩展:adc需要再加上CF标志位的值adc eax,ebx二、SUB减法操作指令将eax置3,ebx置2,运行下面命令,将结果…

java异常分类和finally代码块中return语句的影响

首先看一下java中异常相关类的继承关系: 引用 1、分类 异常可以分为受查异常和非受查异常,Error和RuntimeException及其所有的子类都是非受查异常,其他的是受查异常。 两者的区别主要在: 受检的异常是由编译器(编译…

CUDA环境搭建(windows10)

CUDA环境搭建[windows10]一、检查显卡支持的cuda版本二、安装vs2019三、安装cuda四、检测cuda是否安装成功五、配置vs项目总结:一、检查显卡支持的cuda版本 (1)第一种方法:winR打开cmd,输入nvidia-smi,我的…

常用的shell脚步操作

文章目录一、如何开始一个shell脚本?1.基本语法2.变量定义规则二、特色变量1.$n2.$?三、条件判断1.基本语法2.运算符if,for,while四、字符串切割1.从指定位置开始截取从字符串左边开始计数从右边开始计数2.从指定字符(子字符串)开…

【MySQL】查询操作(基础篇)

目录 1、查询操作(Retrieve) 1.1 全列查询 1.2 指定列查询 1.3 查询字段为表达式 1.4 别名 1.5 去重:DISTINCT 1.6 排序:ORDER BY 1.7 条件查询:WHERE 1.8 分页查询 1、查询操作(Retrieve) 查询操作算的上是 SQL 中最复杂的操作了…

Orcad导出BOM的两种方式比较

两种方法,各有优缺点。推荐使用第二种。一、Capture CIS特有的导BOM方式,用Capture 就没有这个选项点击Stanard,然后可以在左框中select ,add进右边的框,这样导就会导出你想要的属性,同时右下方有个Key选项,你选择outp…

适用于电脑的 5 款免费好用的 PDF 阅读器

PDF 阅读器是任何可以打开PDF 文件的软件,它可能是世界上最知名的文档格式。您可下载的银行对账单、学校的时事通讯——它们可能都是 PDF 格式的。 越来越多的操作系统、智能手机和其他设备包含显示 PDF 文件的内置功能;甚至您的网络浏览器也可能处理它…

Vue2和Vue3响应式的区别

数据响应式是什么? ​所谓 数据响应式 就是建立 响应式数据 与 依赖(调用了响应式数据的操作)之间的关系,当响应式数据发生变化时,可以通知那些使用了这些响应式数据的依赖操作进行相关更新操作,可以是DOM…

基于ubuntu的STM32嵌入式软件开发(三)——基于官方标准函数库的软件工程移植

本文基于st官方提供的标准库搭建应用软件工程(即非cube方式、非寄存器方式),采用标准库搭建的工程具有软件可移植性高、可读性好、符合软件设计人员思维方式。本文描述官方下载标准库及标准库的移植过程,具体流程如下所述&#xf…

不妙,2023年浙大mpa的复试形势比想象的更严峻,又在突突突涨……

都知道浙大MPA项目卷,但都没想到这么卷! 很多浙大mpa的考生在一开始的备考初期因为对该项目的认知了解不够清晰从而会导致联考过后功亏一篑。因为是在职类考生群体,因此不少考生会认为以自己的实力和基础应该能够鱼跃龙门榜上有名&#xff0c…

视频会议系统异常中断故障分析案例

1. 背景 某电气化局的用户反馈,近期视频系统在使用过程中出现频繁中断的情况,这种情况影响到用户的视频体验和工作效率。 针对此问题,我们将NetInside流量分析系统部署到电气化局机房,使用流量分析系统提供实时和历史原始流量。…

【Linux】P1 Linux 基础命令(1)

Linux 基础命令(1)Linux 目录结构Linux 命令ls 展示命令cd 目录切换命令pwd 查看当前工作目录mkdir 创建新的文件夹其他补充知识前言 本节内容:Linux 基本命令(1)。 下节内容:Linux 基本命令(2&…

二进制与十进制转换(包括整数和小数的转换)

二进制与十进制转换(包括整数和小数的转换) 二进制转十进制 首先要先了解二进制的含义,与十进制相似,二进制代表的是以2的次幂在每一位上的0/1表示,平时我们经常接触的都是整数的二进制,是从2的0次幂开始的…

从WebRtc学习RTP协议

1、TCP为何不适用于实时音视频可靠性是以牺牲实时性为代价的。按照TCP原理,当出现极端网络情况时,理论上每个包的时延可达到秒级以上,而且这种时延是不断叠加的。这对于音视频实时通信来说是不可接受的。TCP为了实现数据传输的可靠性&#xf…

【2223sW2】LOG1

写在前面 好好学习,走出宿舍,走向毕设! 一些心路历程记录,很少有代码出现 因为鬼知道哪条代码到时候变成毕设的一部分了咧,还是不要给自己的查重挖坑罢了 23.2.27 文件批量重命名 为了给学姐先整出来一批训练数据&…

Element中树形控件在项目中的实际应用

文章目录1、使用目的2、官网组件3、组合使用组件案例4、在项目中实际应用4.1 组合组件的使用4.1.2 代码落地4.1.3 后台接口数据4.1.4 实际效果官网连接直达&#xff1a;Tree树形控件的使用 1、使用目的 用清晰的层级结构展示信息&#xff0c;可展开或折叠。 2、官网组件 <…

【YoloV5】Deepin系统使用Gpu进行YoloV5训练

Deepin系统使用Gpu进行YoloV5训练&#xff0c;显卡RTX30701.配置环境1.1英伟达的驱动安装2. pytorch安装2.1pytorch环境配置2.2 验证Gpu3.使用Yolo5进行Gpu模型训练3.1 准备需要训练的数据集和标注数据集1.配置环境 1.1英伟达的驱动安装 查看当前自己系统的显卡信息 lspci |…

paddleInfer

一、安装GCC 5.4https://blog.csdn.net/weixin_64064486/article/details/123940266二、安装pycudahttps://blog.csdn.net/zong596568821xp/article/details/86077553/更改的地方是&#xff0c;安装pycuda用的是&#xff1a;pip install pycuda三、安装TensorRT 1、TensorRT下载…