归档率

归档率是一个和数据集强相关的数值,换句话说,数据集中的数据如果结合的紧密,归档率会偏高,数据集中的数据如果非常离散,归档率会偏低,使用该数值进行评估可能会存在一些偏差,用户可根据实际情况适当参考。

如对于一个含有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)))
```