模糊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 的首页,持续学…

应用于智慧工地的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…

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:…

【数据结构】哈夫曼树(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…

python简单进阶之web框架:fastapi使用教程

原文&#xff1a;python简单进阶之web框架&#xff1a;fastapi使用教程 - 知乎 这是简单进阶教程系列第四篇&#xff0c;本系列文章主要介绍那些可以很快上手的进阶库。 我其实学过一段时间Django框架&#xff0c;但是半途而废了&#xff0c;我觉得可能还是简单一点的框架比较适…

智能优化算法应用:基于象群算法无线传感器网络(WSN)覆盖优化 - 附代码

智能优化算法应用&#xff1a;基于象群算法无线传感器网络(WSN)覆盖优化 - 附代码 文章目录 智能优化算法应用&#xff1a;基于象群算法无线传感器网络(WSN)覆盖优化 - 附代码1.无线传感网络节点模型2.覆盖数学模型及分析3.象群算法4.实验参数设定5.算法结果6.参考文献7.MATLAB…

网络类型解析(基础):探索通信世界的多样面貌

在当今数字化时代&#xff0c;网络已经成为人们生活和工作中不可或缺的一部分。从个人设备之间的直接通信到全球范围的数据传输&#xff0c;不同类型的网络为我们提供了多种连接方式和通信选择。透过对这些网络类型的解析&#xff0c;我们将更好地理解它们的特点、优势和适用场…

JMX的使用

1. 定义和意义 JMX是Java Management Extention的缩写&#xff0c;出发点是让外部通过属性/方法来读取或设置程序状态。对于提供对外服务的程序来说&#xff0c;天生就有这样的能力&#xff0c;Web程序通过HTTP接口对外暴露&#xff0c;RPC应用通过RPC接口暴露。不过带来的问…

ESP32-Web-Server编程- 使用表格(Table)实时显示设备信息

ESP32-Web-Server编程- 使用表格&#xff08;Table&#xff09;实时显示设备信息 概述 上节讲述了通过 Server-Sent Events&#xff08;以下简称 SSE&#xff09; 实现在网页实时更新 ESP32 Web 服务器的传感器数据。 本节书接上会&#xff0c;继续使用 SSE 机制在网页实时显…

深度学习手势识别 - yolo python opencv cnn 机器视觉 计算机竞赛

文章目录 0 前言1 课题背景2 卷积神经网络2.1卷积层2.2 池化层2.3 激活函数2.4 全连接层2.5 使用tensorflow中keras模块实现卷积神经网络 3 YOLOV53.1 网络架构图3.2 输入端3.3 基准网络3.4 Neck网络3.5 Head输出层 4 数据集准备4.1 数据标注简介4.2 数据保存 5 模型训练5.1 修…

C++模板—函数模板、类模板

目录 一、函数模板 1、概念 2、格式 3、实例化 4、模板参数的匹配 二、类模板 1、定义格式 2、实例化 交换两个变量的值&#xff0c;针对不同类型&#xff0c;我们可以使用函数重载实现。 void Swap(double& left, double& right) {double tmp left;left ri…

黑马一站制造数仓实战1

1. 项目目标 一站制造 企业中项目开发的落地&#xff1a;代码开发 代码开发&#xff1a;SQL【DSL SQL】 SparkCore SparkSQL 数仓的一些实际应用&#xff1a;分层体系、建模实现 2. 内容目标 项目业务介绍&#xff1a;背景、需求 项目技术架构&#xff1a;选型、架构 项目环境…