模糊C均值(Fuzzy C-means,FCM)聚类的python程序代码的逐行解释,看完你也会写!!

在这里插入图片描述

文章目录

  • 前言
  • 一、本文的原始代码
  • 二、代码的逐行详细解释
  • 总结


前言

接上一篇博客,详细解释FCM聚类的程序代码!!

一、本文的原始代码

import numpy as np
import matplotlib.pyplot as plt
from sklearn import datasets
import skfuzzy as fuzz
import matplotlib
matplotlib.use('TkAgg')# 加载鸢尾花数据集
iris = datasets.load_iris()
data = iris.data# 设置模糊C均值聚类的参数
n_clusters = 3  # 聚类数目
max_iter = 100  # 最大迭代次数
fuzziness = 2.0  # 模糊度# 运行模糊C均值聚类算法
cntr, u, u0, d, jm, p, fpc = fuzz.cluster.cmeans(data.T, n_clusters, m=fuzziness, error=0.005, maxiter=max_iter, init=None)# 获取最大隶属度的聚类标签
cluster_labels = np.argmax(u, axis=0)# 绘制聚类图
colors = ['r', 'g', 'b']
for i in range(n_clusters):cluster_points = data[cluster_labels == i]plt.scatter(cluster_points[:, 0], cluster_points[:, 1], c=colors[i], label=f'Cluster {i+1}')plt.xlabel('Sepal length')
plt.ylabel('Sepal width')
plt.title('Fuzzy C-means Clustering of Iris Dataset')
plt.legend()
plt.show()

二、代码的逐行详细解释

这是一个使用模糊C均值(Fuzzy C-means,FCM)聚类算法对鸢尾花(Iris)数据集进行聚类的Python代码。

import numpy as np: 导入numpy库,并使用别名np。numpy是Python中用于科学计算的一个库,它提供了大量的数学函数和高效的多维数组对象。

import matplotlib.pyplot as plt: 导入matplotlib的pyplot模块,并使用别名plt。matplotlib是一个用于创建图表和其他可视化内容的库。

from sklearn import datasets: 从scikit-learn库中导入datasets模块,这可以让我们加载鸢尾花数据集。

import skfuzzy as fuzz: 导入skfuzzy库,这是一个用于模糊逻辑和模糊系统的Python库,这里使用它来运行模糊C均值聚类。

import matplotlib: 导入matplotlib库,这是用于创建图表和其他可视化内容的库。

matplotlib.use('TkAgg'): 设置matplotlib的后端为’TkAgg’,这是用于创建图形用户界面(GUI)的库。

iris = datasets.load_iris(): 加载鸢尾花数据集。这个数据集是scikit-learn库中预先加载的数据集之一。它包含了150个样本,每个样本有四个特征:萼片长度、萼片宽度、花瓣长度和花瓣宽度。

data = iris.data: 获取鸢尾花数据集的数据部分。

n_clusters = 3: 设置聚类的数量为3。这是根据鸢尾花数据集的特性设置的,该数据集通常被划分为三类:Setosa、Versicolour和Virginica。

max_iter = 100: 设置最大迭代次数为100。这是模糊C均值聚类算法的最大迭代次数。

fuzziness = 2.0: 设置模糊参数为2.0。这个参数决定了聚类的模糊程度。

cntr, u, u0, d, jm, p, fpc = fuzz.cluster.cmeans(data.T, n_clusters, m=fuzziness, error=0.005, maxiter=max_iter, init=None): 使用skfuzzy库的cmeans函数运行模糊C均值聚类算法。其中data.T是数据的转置,n_clusters是聚类的数量,m是模糊参数,error是停止条件,maxiter是最大迭代次数,init是初始化方法(这里设置为None,表示自动选择初始化方法)。

cluster_labels = np.argmax(u, axis=0): 获取每个样本的聚类标签。这里使用numpy的argmax函数来找出每一行的最大值索引,这些索引就是聚类标签。

这是一个for循环,用于绘制聚类结果。首先,它定义了颜色数组为[‘r’, ‘g’, ‘b’],然后遍历每个聚类(i从0到2)。

对于每个聚类,它找出属于该聚类的样本(cluster_labels == i),然后使用matplotlib的scatter函数绘制这些样本。样本的颜色由它们的聚类标签决定,标签0对应红色,标签1对应绿色,标签2对应蓝色

最后,它添加了x轴标签、y轴标签和标题,然后显示图表。


总结

提示:这里对文章进行总结:
例如:以上就是今天要讲的内容,本文仅仅简单介绍了pandas的使用,而pandas提供了大量能使我们快速便捷地处理数据的函数和方法。

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

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

相关文章

Open3D 最小二乘拟合二维直线(直接求解法)

目录 一、算法原理二、代码实现三、结果展示本文由CSDN点云侠原创,原文链接。爬虫网站自重。 一、算法原理 平面直线的表达式为: y = k x + b

【软件推荐】卸载360软件geek;护眼软件flux;

卸载360软件geek f.lux: software to make your life better (justgetflux.com) 卸载完扫描残留 护眼软件 hf.lux: software to make your life better (justgetflux.com)https://justgetflux.com/https://justgetflux.com/

【Java8系列06】Java8数据计算

💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…

springMVC 三大组件解析

springMVC组件概述 DispatcherServlet(调度器Servlet): DispatcherServlet 是 Spring MVC 的前端控制器(Front Controller)。它负责接收来自客户端的请求,然后将请求分发给相应的处理器(Control…

应用于智慧工地的AI边缘计算盒子+AI算法软硬一体化方案

智慧工地解决方案,围绕施工工地最常见的工人工服识别、安全帽佩戴识别、人脸识别、安全周界检测、打电话/吸烟、摔倒检测、明火检测、渣土车、土堆裸露识别等一系列子场景专门推出的通用解决方案,着眼工地安全施工、规范人员进出、保护设备安全等刚性需求…

vscode插件问题

1 Vscode code颜色变化 最外层标签颜色变成白色 其他标签有颜色,css代码颜色有些变成白色 是安装的另一个插件vue影响的,卸载就能恢复正常的颜色 2 配置Vue项目的代码片段 css 样式代码片段 配置css.json上后偶尔能用偶尔不能用,Vscode 右下…

Windows核心编程 远程线程注入

目录 线程安全 C线程 C STL线程 远程线程注入概述 相关API CreateRemoteThread LoadLibrary VirtualAllocEx FreeLibrary GetProcAddress 远程线程注入 DLL卸载 调试DLL 线程安全 变量在单线程和在多线程都不会出问题 - 线程安全 变量在多线程出问题&#xff0c…

entos定时自动备份mysql

Centos定时自动备份mysql 文章目录 Centos定时自动备份mysql1.先安装相关工具2.创建dump.sh命令文件3.编写命令文件规则4.文件夹路径5.添加crontab任务6.编写cron规则 1.先安装相关工具 共两个,一个是cronie 一个是 mysql-client(一般装完mysql就自带的有…

MySQL-数据库设计与实现

目录 第1关:从概念模型到MySQL实现 第2关:从需求分析到逻辑模型 第3关:建模工具的使用 第1关:从概念模型到MySQL实现 任务描述 将已建好的概念模型,变成MySQL物理实现。 # 请将你实现flight_booking数据库的语句写…

CCC数字车钥匙(八)——BLE配对相关字段

2.1 配对连接协议 2.1.3 所有者配对广播 对于所有者配对,仅支持Legacy LE 1M PHY。ADV_IND需要按照Section 2.3.1.1 Volume 6 Part B。 事件类型:无指向可连接和可扫描。 ADV_IND中包含广播地址和广播数据,如下所示,其中广播地址…

TZOJ 1402 Bitset

答案&#xff1a; #include <stdio.h> int main() {int n 0, j 0; while (scanf("%d", &n) ! EOF && (n>0 && n<1000)) //多组输入{int arr[32], i 0;while (n > 0) {arr[i] n % 2; //除2取余法n / 2;}for (j i -…

力扣题:字符的统计-12.1

力扣题-12.1 [力扣刷题攻略] Re&#xff1a;从零开始的力扣刷题生活 力扣题1&#xff1a;451. 根据字符出现频率排序 解题思想&#xff1a;统计字符出现的个数&#xff0c;进行排序即可 class Solution(object):def frequencySort(self, s):""":type s: str:…

【C/PTA】指针专项练习(二)

本文结合PTA专项练习带领读者掌握指针&#xff0c;刷题为主注释为辅&#xff0c;在代码中理解思路&#xff0c;其它不做过多叙述。 目录 6-1 鸡兔同笼问题6-2 冒泡排序6-3 字符串反正序连接6-4 计算最长的字符串长度6-5 查找星期7-1 C程序设计 实验5-7 数组指针作函数参数7-2 查…

使用glBlitFramebuffer将2D多采样纹理转换为2D普通纹理的教程

介绍&#xff1a; 在计算机图形编程中&#xff0c;有时你可能需要将2D多采样纹理转换为普通2D纹理。这种转换在实现不需要多采样的后处理效果时非常有用。OpenGL中的glBlitFramebuffer函数为高效实现此转换提供了便捷的方法。本教程将指导你如何使用glBlitFramebuffer从多采样…

【数据结构】哈夫曼树(Huffman Tree)和哈夫曼编码(Huffman Coding)

哈夫曼树&#xff08;Huffman Tree&#xff09;和哈夫曼编码&#xff08;Huffman Coding&#xff09;是数据压缩领域常用的技术。哈夫曼树是一种特殊的二叉树&#xff0c;用于构造哈夫曼编码&#xff0c;而哈夫曼编码则是一种变长编码&#xff0c;用于压缩数据。 在解释哈夫曼…

文心一言 VS 讯飞星火 VS chatgpt (147)-- 算法导论12.2 2题

二、用go语言&#xff0c;写出 TREE-MINIMUM 和 TREE-MAXIMUM 的递归版本。 灵捷3.5 。 文心一言&#xff1a; 以下是用 Go 语言编写的树的最大值和最小值的递归版本代码&#xff1a; package main import ( "fmt" ) type TreeNode struct { Val int Le…

【tower-boot 系列】MybatisPlus 集成

Mybatis、MybatisPlus 简单介绍 MybatisPlus 集成 一、pom 依赖 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-jdbc</artifactId><exclusions><exclusion><groupId>com.zaxxer…

docker-compose命令

&#xff08;1&#xff09;定义 compose是用于定义和运行多容器docker应用程序的工具。 通过compose&#xff0c;使用yml文件来配置应用程序需要的所有服务。然后&#xff0c;使用一个命令&#xff0c;就可以从yml文件配置中创建并启动所有服务。 &#xff08;2&#xff09;模板…

将Linux 标准输出,错误输出重定向到文件

将Linux 标准输出&#xff0c;错误输出重定 1.想要把make输出的全部信息&#xff0c;输出到某个文件中&#xff0c;最常见的办法就是&#xff1a; make xxx > build_output.txt 此时默认情况是没有改变2stderr的输出方式&#xff0c;还是屏幕&#xff0c;所以&#xff0c…

opencv学习一:namedWindow()创建和显示窗口

文章目录 opencv图像视频的加载和显示一、namedWindow()创建和显示窗口&#xff08;一&#xff09;函数1.namedWindow()创建命名窗口2.imshow() 显示窗口3.destroyAllwindws()摧毁窗口4.resizeWindow() 改变窗口大小5.waitKey() 等待用户输入 &#xff08;二&#xff09;代码 o…