保真度#

sklearn.manifold.trustworthiness(X, X_embedded, *, n_neighbors=5, metric='euclidean')[source]#

指示在多大程度上保留了局部结构。

保真度在 [0, 1] 之间。其定义为

\[T(k) = 1 - \frac{2}{nk (2n - 3k - 1)} \sum^n_{i=1} \sum_{j \in \mathcal{N}_{i}^{k}} \max(0, (r(i, j) - k))\]

对于每个样本 i,\(\mathcal{N}_{i}^{k}\) 是其在输出空间中的 k 个最近邻,并且每个样本 j 是其在输入空间中的第 \(r(i, j)\) 个最近邻。换句话说,输出空间中任何意外的最近邻都会根据其在输入空间中的秩成比例地进行惩罚。

参数:
X形状为 (n_samples, n_features) 的 {数组、稀疏矩阵} 或

(n_samples, n_samples) 如果度量为“预计算”,则 X 必须是方形距离矩阵。否则,它包含每行一个样本。

X_embedded形状为 (n_samples, n_components) 的 {数组、稀疏矩阵}

训练数据在低维空间中的嵌入。

n_neighborsint,默认为 5

将被考虑的邻居数量。应少于 n_samples / 2 以确保可信度在 [0, 1] 之内,如 [1] 中所述。否则将引发错误。

metricstr 或可调用对象,默认为 'euclidean'

用于计算原始输入空间中样本之间成对距离的度量。如果度量为“预计算”,则 X 必须是成对距离或平方距离矩阵。否则,有关可用度量的列表,请参阅 sklearn.pairwise.pairwise_distances 中参数度量的文档和 sklearn.metrics.pairwise.PAIRWISE_DISTANCE_FUNCTIONS 中列出的度量。请注意,“余弦”度量使用 cosine_distances

0.20 版本中添加。

返回:
trustworthinessfloat

低维嵌入的可信度。

参考文献

[1]

Jarkko Venna 和 Samuel Kaski。2001 年。非线性投影方法中的邻域保持:一项实验研究。在人工神经网络国际会议论文集 (ICANN ‘01) 中。Springer-Verlag,柏林,海德堡,485-491。

[2]

Laurens van der Maaten。通过保持局部结构学习参数嵌入。第十二届人工智能与统计国际会议论文集,PMLR 5:384-391,2009 年。

示例

>>> from sklearn.datasets import make_blobs
>>> from sklearn.decomposition import PCA
>>> from sklearn.manifold import trustworthiness
>>> X, _ = make_blobs(n_samples=100, n_features=10, centers=3, random_state=42)
>>> X_embedded = PCA(n_components=2).fit_transform(X)
>>> print(f"{trustworthiness(X, X_embedded, n_neighbors=5):.2f}")
0.92