归档率是一个和数据集强相关的数值,换句话说,数据集中的数据如果结合的紧密,归档率会偏高,数据集中的数据如果非常离散,归档率会偏低,使用该数值进行评估可能会存在一些偏差,用户可根据实际情况适当参考。
如对于一个含有A、B、C三个类别的数据集,其中包含A的特征向量3张,剩下的分别是B、C的特征向量各一张,对于一个理想的聚类模型(即总能正确的得到聚类结果),其归档率为3/5 = 60%,即60%的特征归档,剩余的是孤点,此时得到的结果已较为准确。对于一个效果非常差的聚类模型(即总是将所有的数据归为一类),其归档率永远是100%,尽管该指标很高,但无法说明这个聚类模型的精度更加优秀。
``` def RatioOfClusteredFeatures(res): ''' Args res: predefined protobuf-deserialized result ''' numArchives = 0 numUnarchives = len(res.unarchivedFeatures) for i in res.archives: numArchives += len(i) print("Total number of features to be clustered: {}".format(numArchives + numUnarchives)) print("Clustered result has {} archives, {} features clustered.".format(len(res.archives), numArchives)) print("Clustered result has {} un-archived features".format(numUnarchives)) print("Total archive rate {}%".format(100 * numArchives / (numArchives + numUnarchives))) ```