diffusion_maps.py 文件源码

python
阅读 24 收藏 0 点赞 0 评论 0

项目:diffusion-maps 作者: jmbr 项目源码 文件源码
def __init__(self, points: np.array, epsilon: float,
                 cut_off: Optional[float] = None,
                 num_eigenpairs: Optional[int] = default.num_eigenpairs,
                 normalize_kernel: Optional[bool] = True,
                 renormalization: Optional[float] = default.renormalization,
                 kdtree_options: Optional[Dict] = None,
                 use_cuda: Optional[bool] = default.use_cuda) -> None:
        self.points = points
        self.epsilon = epsilon

        if cut_off is not None:
            import warnings
            warnings.warn('A cut off was specified for dense diffusion maps.')

        distance_matrix_squared = scipy.spatial.distance.pdist(points, metric='sqeuclidean')  # noqa
        kernel_matrix = np.exp(-distance_matrix_squared / (2.0 * epsilon))
        kernel_matrix = scipy.spatial.distance.squareform(kernel_matrix)
        if normalize_kernel is True:
            kernel_matrix = self.normalize_kernel_matrix(kernel_matrix,
                                                         renormalization)
        self.kernel_matrix = kernel_matrix
        self.renormalization = renormalization if normalize_kernel else None

        if use_cuda is True:
            import warnings
            warnings.warn('Dense diffusion maps are not implemented on the '
                          'GPU. Using the CPU instead.')

        ew, ev = self.solve_eigenproblem(self.kernel_matrix, num_eigenpairs,
                                         use_cuda=False)
        if np.linalg.norm(ew.imag > 1e2 * sys.float_info.epsilon, np.inf):
            raise ValueError('Eigenvalues have non-negligible imaginary part')
        self.eigenvalues = ew.real
        self.eigenvectors = ev.real
评论列表
文章目录


问题


面经


文章

微信
公众号

扫码关注公众号