本关任务
本关实现准确度评估函数,来评估聚类算法的效果。
相关知识
在前三个关卡中,我们学习了 K-measn 聚类算法中,三个比较关键的组成部分,包括欧几里得距离计算公式、找出每个样本的最近邻簇中心和重新计算每个簇的聚类中心。本关卡中,我们将学习评估聚类算法优劣的方法。
通常对于一个具有 K 个簇的数据集 {(x,y)},x 是单个样本,y (1<=y<=K)是其所在的簇标识。我们的聚类算法会针对每个样本 x 输出一个他所在的簇,记为y'(1<=y'<=K)。为了评估聚类算法的效果,我们需要比较算法得出的 y'和实际数据集中的簇 y 的差异。
一种比较常见的评估聚类算法好坏的指标就是精度,定义为:
Accu\fracy(yˉ,y)=i∑nI(yˉi=yi)/N
其中 N 是数据集中的样本个数,公式:
I(yˉi=yi)
代表比较函数,若两者相等则输出 1,否则输出 0。
编程要求
本关卡要求你实现函数 acc,在右侧编辑器 Begin-End 区间补充代码,需要填充的代码块如下:
# -*- coding: utf-8 -*-
def acc(x1, x2):
"""计算精度
参数:
x1 - numpy数组
x2 - numpy数组
返回值:
value - 浮点数,精度
"""
value = 0
# 请在此添加实现代码 #
#********** Begin *********#
#********** End ***********#
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