首页 > 编程语言 >12.11实验七:K 均值聚类算法实现与测试

12.11实验七:K 均值聚类算法实现与测试

时间:2024-12-12 15:10:04浏览次数:4  
标签:iris 12.11 train 均值 算法 score 测试 聚类 test

 

 

一、实验目的

深入理解 K 均值聚类算法的算法原理,进而理解无监督学习的意义,能够使用 Python语言实现 K 均值聚类算法的训练与测试,并且使用五折交叉验证算法进行模型训练与评估。

 

二、实验内容

 

(1)从 scikit-learn 库中加载 iris 数据集,使用留出法留出 1/3 的样本作为测试集(注意同分布取样);

(2)使用训练集训练 K 均值聚类算法,类别数为 3;

(3)使用五折交叉验证对模型性能(准确度、精度、召回率和 F1 值)进行评估和选择;

(4)使用测试集,测试模型的性能,对测试结果进行分析,完成实验报告中实验七的部分。

 

三、算法步骤、代码、及结果

   1. 算法伪代码

开始

 

   数据集 = load_iris()

 

   特征 = 数据集.data

   标签 = 数据集.target

 

   训练集特征, 测试集特征, 训练集标签, 测试集标签 = train_test_split(特征, 标签, 测试集比例=1/3, 随机种子=42, 同分布取样)

 

   模型 = KMeans(类别数=3, 随机种子=42)

 

   模型.fit(训练集特征)

 

   指标 = {

       '准确度': accuracy_score,

       '精度': precision_score(加权平均),

       '召回率': recall_score(加权平均),

       'F1值': f1_score(加权平均)

   }

 

   对于 每个指标 在 指标 中:

       交叉验证得分 = cross_val_score(模型, 训练集特征, 训练集标签, 折数=5, 评分=指标)

       输出(指标 + " : " + 交叉验证得分的平均值)

 

   预测结果 = 模型.predict(测试集特征)

 

   报告 = classification_report(测试集标签, 预测结果)

   输出(报告)

 

结束

   2. 算法主要代码

完整源代码\调用库方法(函数参数说明)

'''

Created on 2024年12月12日

 

@author: 席酒

'''

from sklearn.datasets import load_iris

from sklearn.model_selection import train_test_split, cross_val_score

from sklearn.cluster import KMeans

from sklearn.metrics import make_scorer, accuracy_score, precision_score, recall_score, f1_score, classification_report

 

# 加载 iris 数据集

iris = load_iris()

X = iris.data

y = iris.target

 

# 使用留出法将数据集分为训练集和测试集,测试集占 1/3

X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.33, random_state=42, stratify=y)

 

# 创建 KMeans 模型,类别数为 3

kmeans = KMeans(n_clusters=3, random_state=42)

 

# 使用训练集进行训练

kmeans.fit(X_train)

 

# 定义评估指标

scoring = {

'accuracy': make_scorer(accuracy_score),

'precision': make_scorer(precision_score, average='weighted'),

'recall': make_scorer(recall_score, average='weighted'),

'f1': make_scorer(f1_score, average='weighted')

}

 

# 进行五折交叉验证

scores = {metric: cross_val_score(kmeans, X_train, y_train, cv=5, scoring=scoring[metric]) for metric in scoring}

 

# 输出每个指标的平均值

for metric, score in scores.items():

print(f"{metric} : {score.mean():.4f} ± {score.std():.4f}")

 

# 使用测试集进行预测

y_pred = kmeans.predict(X_test)

 

# 输出分类报告

report = classification_report(y_test, y_pred)

print(report)

 

 

 

   3. 训练结果截图(包括:准确率、精度(查准率)、召回率(查全率)、F1)

 

 

 

四、实验结果分析

1. 测试结果截图(包括:准确率、精度(查准率)、召回率(查全率)、F1)

 

 2. 对比分析

 K 均值聚类算法在此数据集上的表现不佳,可能是因为该算法主要用于无监督学习,而 iris 数据集的标签信息未能有效利用。

标签:iris,12.11,train,均值,算法,score,测试,聚类,test
From: https://www.cnblogs.com/yindantong/p/18602551

相关文章

  • 2024.12.11 周三
    2024.12.11周三Q1.1100给定一长度为$n$的数组,你需要执行$k$次操作:每次选择一连续子数组(可为空),将和作为一元素放到到数组的任意位置。问最后数组和的最大值。Q2.1100给你一长度为$2n$的数组$a$,$1$~$n$各出现2次。让你找出两个大小为$2k$集合$l$,$r$,其中$l$属于$a$1......
  • 24.12.11学习总结
    今天写的题:一、题目描述据说 2012 的灾难和太阳黑子的爆发有关。于是地球防卫小队决定制造一个特殊防护伞,挡住太阳黑子爆发的区域,减少其对地球的影响。由于太阳相对于地球来说实在是太大了,我们可以把太阳表面看作一个平面,中心定为 (0,0)。根据情报,在 2012 年时,太阳表面......
  • 高维向量聚类(草稿)
    对于容易出现维度灾难的高维向量序列聚类,在不知道聚类数量的情况下,可以使用基于密度的聚类方法dbscan;也可以通过估计聚类数量,再使用kmeans。对于kmeans,一般有以下处理方法:方法一:使用NearestNeighbors估计簇数量,然后用KMeans聚类NearestNeighbors可以通过计算样本......
  • 聚类算法的种类
    定义与原理聚类算法是一种无监督学习方法,旨在揭示数据集中的内在结构。它通过计算样本间的相似性,将相似对象自动归类到同一组中,无需预先标记数据。这种方法的核心在于选择合适的相似度量,如欧氏距离,以捕捉数据间的关系。聚类过程通常涉及迭代优化目标函数,如最小化簇内距离之......
  • 蒙特卡洛1000个风光场景并通过削减法|聚类法得到几个典型场景(matlab&python实现)
    目录1 对风光的认识2 风电DG出力概率模型 2.1 风速分布特性2.2 风电DG有功出力3 光伏DG出力概率模型 3.1 光照强度分布特性3.2光伏DG有功出力 4Python代码实现4.1数据4.2Python代码 4.3结果  5Matlab实现5.1数据5.2Matlab代码 5.3结果6......
  • 【机器学习】机器学习的基本分类-无监督学习-K-Means聚类
    K-Means是一种基于划分的无监督学习算法,用于数据聚类任务,它通过迭代优化将数据分组为k 个互斥的簇,使得每个簇内数据点的相似性最大化,而簇间的相似性最小化。它通过最小化簇内样本点到簇中心的距离平方和(即误差平方和,SSE)来完成聚类任务。1.算法原理目标函数K-Means的目......
  • 高斯混合模型(GMM)与K均值算法(K-means)算法的异同
    高斯混合模型(GaussianMixtureModel,GMM)和K均值(K-Means)算法都是常用于聚类分析的无监督学习方法,虽然它们的目标都是将数据分成若干个类别或簇,但在实现方法、假设和适用场景上有所不同。1.模型假设K均值(K-Means):假设每个簇的样本点在簇中心附近呈均匀分布,通常是球形的(即每个......
  • 最大值,最小值,平均值(C语言)
    今天来做一道比较经典的题目求最大值,最小值和平均值,常用于信息统计;以成绩为例:输入n科成绩(浮点数表示),统计其中的最高分,最低分以及平均分。数据范围:1≤n≤100 1≤n≤100  ,成绩使用百分制且不可能出现负数一般要用到数组,选择和循环语句原理:数组存储数据通过循环遍历数......
  • 实验、K-means聚类实现
    实验目标本实验旨在帮助理解K-means聚类的基本原理,学习如何使用Scikit-learn库实现K-means聚类,并通过实验观察其在不同数据集上的效果。学会数据标准化、如何确定聚类数目以及评估聚类效果。实验环境oPython3.xoScikit-learn库oJupyterNotebookoMatplotlib实验数......
  • CCF认证-202104-02 | 领域均值
    顿顿在学习了数字图像处理后,想要对手上的一副灰度图像进行降噪处理。不过该图像仅在较暗区域有很多噪点,如果贸然对全图进行降噪,会在抹去噪点的同时也模糊了原有图像。因此顿顿打算先使用邻域均值来判断一个像素是否处于较暗区域,然后仅对处于较暗区域的像素进行降噪处理。待......