K均值聚类算法实现与测试
一、实验目的
深入理解K均值聚类算法的算法原理,进而理解无监督学习的意义,能够使用Python语言实现K均值聚类算法的训练与测试,并且使用五折交叉验证算法进行模型训练与评估。
二、实验内容
(1)从scikit-learm库中加载iris数据集或本地读取,进行数据分析,去除数据集中类别标签行;
(2)采用五折交叉验证划分训练集和测试集,使用训练集对K均值聚类算法进行训练:
(3)使用五折交叉验证对模型性能(准确度、精度、召回率和F1值)进行测试,与测试集中的样本距离最近的聚类中心类别即为该样本的预测类别;
(4)通过对测试结果进行比较分析,评估模型性能:
(5)完成实验报告中实验七的部分。
三、算法步骤、代码、及结果
def align_cluster_labels(true_labels, pred_clusters):
"""将聚类结果与真实标签对齐"""
aligned_pred = np.zeros_like(pred_clusters)
for cluster in np.unique(pred_clusters):
mask = (pred_clusters == cluster)
if np.sum(mask) > 0:
true_labels_in_cluster = true_labels[mask]
most_common_label = mode(true_labels_in_cluster, keepdims=True).mode[0]
aligned_pred[mask] = most_common_label
return aligned_pred
def evaluate_clustering(true_labels, pred_labels):
"""评估聚类性能"""
accuracy = accuracy_score(true_labels, pred_labels)
precision = precision_score(true_labels, pred_labels, average='weighted', zero_division=0)
recall = recall_score(true_labels, pred_labels, average='weighted', zero_division=0)
f1 = f1_score(true_labels, pred_labels, average='weighted', zero_division=0)
return accuracy, precision, recall, f1

浙公网安备 33010602011771号