TICC.py 文件源码

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

项目:TICC 作者: davidhallac 项目源码 文件源码
def updateClusters(LLE_node_vals,switch_penalty = 1):
    """
    Uses the Viterbi path dynamic programming algorithm
    to compute the optimal cluster assigments

    Takes in LLE_node_vals matrix and computes the path that minimizes
    the total cost over the path
    Note the LLE's are negative of the true LLE's actually!!!!!

    Note: switch penalty > 0
    """
    (T,num_clusters) = LLE_node_vals.shape
    future_cost_vals = np.zeros(LLE_node_vals.shape)
    ##compute future costs
    for i in xrange(T-2,-1,-1):
        j = i+1
        indicator = np.zeros(num_clusters)
        future_costs = future_cost_vals[j,:]
        lle_vals = LLE_node_vals[j,:]
        for cluster in xrange(num_clusters):
            total_vals = future_costs + lle_vals + switch_penalty
            total_vals[cluster] -= switch_penalty
            future_cost_vals[i,cluster] = np.min(total_vals)
    ##compute the best path
    path = np.zeros(T)

    ##the first location
    curr_location = np.argmin(future_cost_vals[0,:] + LLE_node_vals[0,:])
    path[0] = curr_location

    ##compute the path
    for i in xrange(T-1):
        j = i+1
        future_costs = future_cost_vals[j,:]
        lle_vals = LLE_node_vals[j,:]
        total_vals = future_costs + lle_vals + switch_penalty
        total_vals[int(path[i])] -= switch_penalty

        path[i+1] = np.argmin(total_vals)

    ##return the computed path
    return path
评论列表
文章目录


问题


面经


文章

微信
公众号

扫码关注公众号