1

適合度の評価に役立つコードを書きたいと思います。私は3Dマトリックスを持っています。z 次元は、行列の点 i、j でのデータへの適合です。点 i、j での適合をその最近傍 (x、y 次元) の適合と比較することによって、この適合が良好かどうかを評価したいと思います。隣人のフィットがその時点でのフィットに似ている場合は、フィットを維持したいと思います。それが理にかなっていることを願っています。

要約すると、ウィンドウの中心点の z ディムでピアソンの r をウィンドウ内の他のすべての点に計算し、平均を取る (または、ある定数より大きい r を持つポイントの数でさえ)。

現在、非常に手間のかかる非効率的な方法でこれを行う方法しか考えられません。背景情報として、これらのデータをフーリエ級数でフィッティングしています。最終的には、この手法を使用して、各点でのフーリエ フィットで使用する波の最小数を評価したいと考えています。

前もって感謝します

4

1 に答える 1

0

これは私の解決策ですが、あまり効率的ではありません。(ちなみに、私が質問であなたに話さなかった別の次元のデータがありました。これを行うためのより効率的な方法について何か提案はありますか?

再度、感謝します

import numpy as np
from scipy.stats import pearsonr
from bottleneck import nanmean

def calc_corr_of_neighbours(data, win_shape):
    rs = np.empty(data.shape[1:])
    thisrs = np.empty(win_shape)
    win_data = np.empty(win_shape)
    dA = int(win_shape[0]/2)
    dB = int(win_shape[1]/2)
    maxA = data.shape[2]
    maxB = data.shape[3]

    for i in np.ndindex(rs.shape):
        stA = max(i[1]-dA, 0)
        endA = min(i[1]+dA, maxA)
        stB = max(i[2]-dB, 0)
        endB = min(i[2]+dB, maxB)

        win_data = data[:, i[0], stA:endA, stB:endB]

        thisrs.fill(np.NaN)
        for j in np.ndindex(win_data.shape[1:]):
            thisrs[j] = pearsonr(data[:, i[0], i[1], i[2]], win_data[:, j[0], j[1]])[0]

        rs[i] = nanmean(thisrs)

    return rs
于 2013-05-29T09:09:58.570 に答える