K-means聚类算法第4关:评估聚类效果

本关任务

本关实现准确度评估函数,来评估聚类算法的效果。

相关知识

在前三个关卡中,我们学习了 K-measn 聚类算法中,三个比较关键的组成部分,包括欧几里得距离计算公式、找出每个样本的最近邻簇中心和重新计算每个簇的聚类中心。本关卡中,我们将学习评估聚类算法优劣的方法。

通常对于一个具有 K 个簇的数据集 {(x,y)},x 是单个样本,y(1<=y<=K)是其所在的簇标识。我们的聚类算法会针对每个样本 x 输出一个他所在的簇,记为y'(1<=y'<=K)。为了评估聚类算法的效果,我们需要比较算法得出的 y'和实际数据集中的簇 y 的差异。

一种比较常见的评估聚类算法好坏的指标就是精度,定义为:

Accu\setminus fracy(\bar{y},y)=\sum_{i}^{n}I(\bar{y_{i}}=y_{i})/N

其中 N 是数据集中的样本个数,公式:

I(\bar{y_{i}}=y_{i})

代表比较函数,若两者相等则输出 1,否则输出 0。

编程要求

本关卡要求你实现函数 acc,在右侧编辑器 Begin-End 区间补充代码,需要填充的代码块如下:

  1. # -*- coding: utf-8 -*-
  2. def acc(x1, x2):
  3. """计算精度
  4. 参数:
  5. x1 - numpy数组
  6. x2 - numpy数组
  7. 返回值:
  8. value - 浮点数,精度
  9. """
  10. value = 0
  11. # 请在此添加实现代码 #
  12. #********** Begin *********#
  13. #********** End ***********#
  14. return value

测试说明

平台将对你的函数输入两个整数向量,比对函数 acc 的输出结果与正确结果的差异,只有完全正确才能通关。


开始你的任务吧,祝你成功!

# -*- coding: utf-8 -*-
def acc(x1, x2):
    """计算精度
    参数:
        x1 - numpy数组
        x2 - numpy数组
    返回值:
        value - 浮点数,精度
    """
    value = 0
    #   请在此添加实现代码     #
    #********** Begin *********#
    import numpy as np
    value = float(np.sum(x1==x2))/len(x1)
    #********** End ***********#
    return value

你可能感兴趣的:(K-means聚类算法,聚类,算法)