Feature Agglomeration降维中affinity='precomputed'是什么意思?

What does mean affinity='precomputed' in Feature Agglomeration dimensionality reduction?

affinity='precomputed'在特征聚集降维(scikit-learn)中是什么意思,如何使用? 我得到的结果比使用其他亲和力选项(例如 'euclidean'、'l1'、'l2' 或 'manhattan')要好得多,但是,我不确定这个 'precomputed' 实际上意味着我是否必须向特征集聚算法提供一些东西 "precomputed"? "precomputed" 到底是什么意思?

除了预处理(缩放)的原始数据,numpy 数组,我没有传递任何其他东西。 fit_transform 特征聚集后,结果被传递给 Birch 聚类算法,我得到的结果比提到的其他亲和力好得多。结果与 PCA 相当,但内存消耗开销低得多,所以我会使用特征集聚作为降维,但我担心我做错了?

问得好。

affinity == 'precomputed'表示使用包含原始数据distance matrix上三角的flatten数组

参考(source code):

    if affinity == 'precomputed':
        # for the linkage function of hierarchy to work on precomputed
        # data, provide as first argument an ndarray of the shape returned
        # by pdist: it is a flat array containing the upper triangular of
        # the distance matrix.
        i, j = np.triu_indices(X.shape[0], k=1)
        X = X[i, j]
    elif affinity == 'l2':
        # Translate to something understood by scipy
        affinity = 'euclidean'
    elif affinity in ('l1', 'manhattan'):
        affinity = 'cityblock'