微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

是否存在用于在不同范数的向量空间之间转换坐标的python算法?

如何解决是否存在用于在不同范数的向量空间之间转换坐标的python算法?

假设我有一个kxn数据数组,其中包含向量列和在这些向量上定义的距离函数。如何将kxn数组转换为相同形状的另一个数组,以使转换后的向量中的欧几里得范数是由给定距离函数得出的范数?我知道您可以通过给定的距离函数直接计算数据的距离矩阵,从而得出R ^ k中的坐标。但是,此方法确实非常昂贵,尤其是当距离函数的复杂度为O(n ^ 2)或更大时。所以我想知道是否有更简单的算法可以做到这一点。

解决方法

听起来您正在描述multidimension scaling (MDS)。在Python中执行此操作的一种方法是使用scikit-learn的sklearn.manifold.MDS

MDS希望将NxN距离(或“不相似”)矩阵作为输入,因此不会绕过评估距离函数的成本。这种转换不可避免地需要距离矩阵,因此,如果距离函数本身很昂贵,那么看来最好的办法是减少样本数量或寻找一种方法来计算快速近似距离以加快速度。另外,请注意,MDS通常仅是近似值。数值优化寻找欧几里得范数与给定距离的最佳拟合。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。