基于MATLAB的Iris数据集K均值聚类分析

版权申诉
5星 · 超过95%的资源 2 下载量 103 浏览量 更新于2024-11-17 收藏 32KB ZIP 举报
资源摘要信息: "本资源是一个关于K均值聚类算法的Matlab实现案例,专门用于处理IRIS数据集,并通过K均值聚类算法对数据进行分类。K均值聚类是一种常见的无监督学习算法,用来对数据进行分组,以便组内的数据点相似度较高,而组间的相似度较低。IRIS数据集是一个常用的标准数据集,包含了150个数据样本,每个样本有4个属性,分别是花萼长度、花萼宽度、花瓣长度和花瓣宽度。这些样本来自于三种不同的IRIS植物。K均值算法的目标就是将这150个样本分成三个类别,每个类别对应一种IRIS植物。 本资源中的Matlab程序是基于K均值聚类算法设计的,可以加载IRIS数据集,然后利用Matlab强大的矩阵运算能力进行聚类计算。程序执行后,用户可以通过Matlab的图形界面看到聚类结果的可视化展示,即各数据点被分成的三个类别。此外,该程序可能还包括了一些参数设置,例如聚类数量、初始聚类中心的选择方式、收敛条件等,这些都是K均值聚类算法中可以调整的参数。 在资源包中,除了主程序之外,可能还包含了一个名为‘说明.txt’的文件。这个文件通常会提供关于程序使用方法的详细说明,包括如何运行程序、程序的输入输出格式、如何解读结果、以及如何调整参数等信息。第二个文件‘***.txt’可能是一个说明文件,提供了关于该资源的来源或者是一个链接地址,指向资源的原始发布页面。资源包中还包含一个‘KMEANS’文件,这应该是主程序文件,包含了实际执行K均值聚类算法的Matlab代码。 整体来看,该资源对于希望了解和学习K均值聚类算法的用户,尤其是使用Matlab进行数据科学和机器学习任务的开发者来说,具有很高的实用价值。通过这个案例,用户不仅可以学习到K均值聚类的基本原理和算法步骤,还可以深入理解如何将理论应用到具体的编程实践中,同时还能通过可视化结果直观地理解聚类的效果。"

import random import pandas as pd import numpy as np import matplotlib.pyplot as plt from sklearn.cluster import KMeans from sklearn.metrics import silhouette_score plt.rcParams['font.sans-serif'] = ['SimHei'] dataset=pd.read_excel('C:\\Users\\86180\\Desktop\\附件2整理.xlsx') dataset = dataset.drop(dataset.index[:1], inplace=False) dataset = dataset.drop(dataset.columns[:1], axis=1, inplace=False) #matrix=dataset.values matrix=np.array(dataset) matrix_xiang=matrix[:27] print(matrix_xiang[0]) print(matrix_xiang[-1]) print(matrix_xiang.shape) # matrix_chuan=matrix[-28:] # print(matrix_chuan[0]) # print(matrix_chuan[-1]) cluster_nums = range(2, 10) inertia_values = [] silhouette_scores = [] # 迭代不同聚类数量 for num in cluster_nums: # 创建K均值聚类模型 kmeans = KMeans(n_clusters=num) # 进行聚类 kmeans.fit(matrix_xiang) # 计算损失函数值和轮廓系数 inertia_values.append(kmeans.inertia_) silhouette_scores.append(silhouette_score(matrix_xiang, kmeans.labels_)) # 绘制肘部法则图像 plt.plot(cluster_nums, inertia_values, 'bo-') plt.xlabel('聚类数量') plt.ylabel('损失函数值') plt.title('肘部法则') plt.show() # 绘制轮廓系数图像 plt.plot(cluster_nums, silhouette_scores, 'ro-') plt.xlabel('聚类数量') plt.ylabel('轮廓系数') plt.title('轮廓系数') plt.show() kmeans = KMeans(n_clusters=7) # 进行聚类 kmeans.fit(matrix_xiang) labels = kmeans.labels_ # 打印每个食材的簇标签 for i, label in enumerate(labels): print(f"食材{i+1}的簇标签为:{label}")如何在这段代码中加入对聚类结果的评估和解释

2023-07-15 上传