Ковариационные матрицы должны быть равными, но не - PullRequest
1 голос
/ 18 июня 2019

Я вычисляю ковариацию двумя способами, которые, по моему мнению, следует связать, но они этого не делают. Метод 1: Вычислить ковариационную матрицу среза массива данных Метод 2: Вычислить ковариационную матрицу полного массива данных и сослаться на эквивалентный фрагмент этой матрицы. Различия крошечные (порядок 1e-18), но эти различия растут с последующими вычислениями в моем коде и предотвращением воспроизводимости. Это проблема с плавающей запятой? Если так, то я все еще хотел бы понять, почему это происходит и как этого избежать. Я на NumPy 1.16.3 Спасибо!

import numpy as np

state = np.random.RandomState(1)
X = state.rand(40,100)
A = np.cov(X[:20])
B = np.cov(X)[:20,:20]
print(np.array_equal(A, B))
diff = A - B
print(np.max(diff))

Я бы ожидал истинный результат от array_equal, но я получаю False

...