= R.shape[0], R.shape[1] U, V = np.zeros((T, N, D)), np.zeros((T, M, D)) # Gibbs Sampling Ͱ Tݸ ͷαϯϓϧΛܭࢉ for t in range(T - 1): # U, V ͷύϥϝʔλͷαϯϓϦϯά lamU, muU = sample_param_U(U[t, :, :]) lamV, muV = sample_param_V(V[t, :, :]) # U ͷαϯϓϦϯά for i in range(N): U[t+1, i, :] = sample_U(R[i, :], U[t, :, :], V[t, :, :], lamU, muU) # V ͷαϯϓϦϯά for j in range(M): V[t+1, j, :] = sample_V(R[i, :], U[t+1, :, :], V[t, :, :], lamV, muV) return U, V
= 1000) N, M = size(R, 1), size(R, 2) U, V = zeros(T, N, D), zeros(T, M, D) # Gibbs Sampling Ͱ Tݸ ͷαϯϓϧΛܭࢉ for t in 1:(T-1) # U, V ͷύϥϝʔλͷαϯϓϦϯά λ_u, μ_u = sample_param_U(U[t, :, :]) λ_v, μ_v = sample_param_V(V[t, :, :]) # U ͷαϯϓϦϯά for i in 1:N U[t+1, i, :] = sample_U(R[i, :], V[t, :, :], λ_u, μ_u) # V ͷαϯϓϦϯά for j in 1:M V[t+1, :, j] = sample_V(R[:, j], U[t+1, :, :], λ_v, μ_v) return U, V end