Стандартизация / предварительная обработка для 4-мерного массива

Я хотел бы стандартизировать мои данные до нулевого среднего значения и стандартного стандартного отклонения = 1. Форма моих данных - 28783x4x24x7, и это можно представить как 28783 изображения с 4 каналами и размерами 24x7. Каналы должны быть стандартизированы. Как мне стандартизировать, указав, что 2-е измерение содержит функции?

1 ответ

Решение

Я нашел способ сделать это. Возможно, он не самый эффективный, но он также позволяет мне использовать этот подход для перекрестной проверки, где я хочу только получить среднее значение и стандартное отклонение из моих данных обучения, но применить эту операцию к данным обучения и испытаний. Это можно использовать для любого числа измерений, если вы хотите получить среднее значение только для одного измерения. Смотрите пример кода ниже:

n_user = 3
n_channel = 2
n_pixels = 3
A = np.zeros(shape=(n_user, n_channel, n_pixels))

for i in range(n_user):
    A[i, 0, :] = np.arange(n_pixels)
    A[i, 1, :] = np.arange(n_pixels) + n_pixels
print A

mu_f    = np.zeros(shape=n_channel)
sigma_f = np.zeros(shape=n_channel)

for i in range(n_channel):
    mu_f[i]    = np.mean(A[:,i,:])
    sigma_f[i] = np.std(A[:,i,:])

print mu_f
print sigma_f

for i in range(n_channel):
    A[:, i, :] -= mu_f[i]
    A[:, i, :] /= sigma_f[i]

print A

print np.mean(A[:,0,:])
print np.std(A[:,0,:])
Другие вопросы по тегам