features.py 文件源码

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

项目:DTW_physionet2016 作者: JJGO 项目源码 文件源码
def DTW_features(pcg, transitions, interval='RR', constraint='sakoe_chiba', k=0.1, norm="resample", pre=None, downsample_rate=2, suf=None, sigma=None):

    k = float(k)
    if sigma is not None:
        sigma = float(sigma)

    pcg = dtw_preprocess(pcg, pre=pre)

    resize = ALENGTH[interval] if norm == 'resample' else None
    intervals = get_intervals(pcg, transitions, interval=interval, resize=resize)
    intervals = [resample(i, len(i) // downsample_rate) for i in intervals]

    if norm not in ['path', 'resample']:
        raise ValueError("Invalid normalization {0}".format(norm))

    path_norm = norm == 'path'
    dist_matrix = dtw_distances(intervals, n_jobs=-1, constraint=constraint, k=k, path_norm=path_norm, normalize=True)
    dist_matrix = finite_matrix(dist_matrix)

    medoid_index = np.argmin(np.sum(dist_matrix, axis=0))

    # Remove the infinite distances
    if sigma:
        dist_matrix = -affinity(dist_matrix, sigma)

    medoid_distances = dist_matrix[:, medoid_index]
    medoid_distances = medoid_distances[np.isfinite(medoid_distances)]
    m_MDTW, s_MDTW = _mean_std(medoid_distances)
    Q1_MDTW, Q2_MDTW, Q3_MDTW = np.percentile(medoid_distances, [25, 50, 75])

    contiguous_distances = np.array([dist_matrix[i, i + 1] for i in np.arange(len(dist_matrix) - 1)])
    contiguous_distances = contiguous_distances[np.isfinite(contiguous_distances)]
    Q1_CDTW, Q2_CDTW, Q3_CDTW = np.percentile(contiguous_distances, [25, 50, 75])

    features = np.array([m_MDTW, s_MDTW, Q1_MDTW, Q2_MDTW, Q3_MDTW, Q1_CDTW, Q2_CDTW, Q3_CDTW])
    return features
评论列表
文章目录


问题


面经


文章

微信
公众号

扫码关注公众号