def spectral_embedding(mat, target_dim, gramian=True, discard_first=True):
if discard_first:
last = -1
first = target_dim - last
else:
first = target_dim
last = None
if not gramian:
mat = mat.dot(mat.T)
eigvals, eigvecs = eigh(mat)
sl = slice(-first, last)
eigvecs = eigvecs[:, sl]
eigvals_crop = eigvals[sl]
Y = eigvecs.dot(np.diag(np.sqrt(eigvals_crop)))
Y = Y[:, ::-1]
variance_explaned(eigvals, eigvals_crop)
return Y
评论列表
文章目录