base.py 文件源码

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

项目:visartm 作者: bigartm 项目源码 文件源码
def get_arrangement_permutation(
        dist,
        mode,
        model=None,
        clusters=None,
        init_perm=None):
    start_time = time.time()

    if mode == "none":
        return [i for i in range(dist.shape[0])]
    if mode == "hamilton":
        from .hamilton_path import HamiltonPath
        hp = HamiltonPath(dist, caller=model)
        hp.solve()
        perm = hp.path
    elif mode == "hamilton_annealing":
        from .hamilton_path import HamiltonPath
        hp = HamiltonPath(dist, caller=model)
        hp.solve_annealing()
        perm = hp.path
    elif mode == "tsne":
        from sklearn.manifold import TSNE
        tsne_model = TSNE(n_components=1, random_state=0, metric="precomputed")
        tsne_result = tsne_model.fit_transform(dist).reshape(-1)
        perm = np.argsort(tsne_result)
    elif mode == "mds":
        from sklearn.manifold import MDS
        mds = MDS(
            n_components=1,
            max_iter=3000,
            eps=1e-9,
            random_state=0,
            dissimilarity="precomputed",
            n_jobs=4)
        result = mds.fit_transform(dist).reshape(-1)
        perm = np.argsort(result)
    elif mode == "dendro":
        from algo.arranging.dendro_arranger import DendroArranger
        da = DendroArranger(dist)
        perm = da.arrange()
    else:
        raise ValueError("Unknown mode: %s" % mode)

    if model:
        from .quality import NDS, MNR
        model.NDS = NDS(dist, perm)
        model.log("NDS=%f" % model.NDS)
        model.log("MNR=%f" % MNR(dist, perm))
        model.log("Time=%f" % (time.time() - start_time))

    return perm
评论列表
文章目录


问题


面经


文章

微信
公众号

扫码关注公众号