本文介绍: 接上一篇博客,详细解释FCM聚类程序代码!!提示这里文章进行总结例如:以上就是今天要讲的内容本文仅仅简单介绍pandas使用,而pandas提供了大量能使我们快速便捷地处理数据函数方法

在这里插入图片描述


前言

接上一篇博客,详细解释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提供了大量能使我们快速便捷地处理数据的函数和方法。

原文地址:https://blog.csdn.net/qlkaicx/article/details/134745222

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任

如若转载,请注明出处:http://www.7code.cn/show_22472.html

如若内容造成侵权/违法违规/事实不符,请联系代码007邮箱suwngjj01@126.com进行投诉反馈,一经查实,立即删除

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注