Numpy의 평균 제곱 오차?


81

두 행렬 사이의 평균 제곱 오차를 계산하는 방법이 numpy에 있습니까?

나는 검색을 시도했지만 아무것도 찾지 못했습니다. 다른 이름으로되어 있습니까?

없는 경우 어떻게 극복합니까? 직접 작성하거나 다른 lib를 사용합니까?


13
((A - B) ** 2).mean(axis=ax)여기서 ax=0열 단위 인 ax=1당 행이고 ax=None총합을 준다.
Fred Foo

2
당신이 그것을 대답으로 공식화한다면 나는 그것을 받아 들일 것입니다.
TheMeaningfulEngineer

numpy 행렬을 제곱하면 각 요소를 개별적으로 제곱하여 행렬 곱셈을 수행하기 때문에이 대답은 올바르지 않습니다. Saullo Castro의 답변에서 내 의견을 확인하십시오. (PS : Python 2.7.5 및 Numpy 1.7.1을 사용하여 테스트했습니다.)
renatov 2014

또한 신경망의 맥락에서 이것을보고있는 사람을위한 메모처럼 평균이 아닌 오류를 합산해야합니다. 그래도 확인을 시도 할 경우 오류를 평균화하면 잘못된 그래디언트 값이 제공됩니다 (평균에 대한 역 전파를 고려하지 않는 한, 가치보다 더 많은 작업)
Recessive

답변:


101

당신이 사용할 수있는:

mse = ((A - B)**2).mean(axis=ax)

또는

mse = (np.square(A - B)).mean(axis=ax)
  • 함께 ax=0평균 어레이를 돌려 각 열에 대해 행을 따라 수행
  • 함께 ax=1평균 어레이를 돌려 각 행, 열을 따라 수행
  • 함께 ax=None평균 스칼라 값을 반환하는 배열을 따라 소자 현명한 수행

2
내가 틀렸다면 맞지만 (MatrixA-MatrixB) ** 2를 수행하면 각 요소를 개별적으로 제곱하는 것과 다른 행렬 곱셈을 수행하려고 할 것입니다. 정사각형이 아닌 행렬에 다음 공식을 사용하려고하면 ValueError가 발생합니다.
renatov 2014

7
@renatov 어쩌면 당신은을 사용하여, 저를 오해 np.ndarray하는 요소 현명한 곱셈을 할 것입니다 a**2,하지만 사용 np.matrixlib.defmatrix.matrix에 대한 행렬 곱셈 할 것입니다 a**2...
Saullo GP 카스트로

2
죄송합니다. 오해했습니다. 나는 당신이 numpy.matrix를 사용하고 있다고 생각했습니다.
renatov 2014

1
두 개의 단위 행렬을 비교하는 경우 차이가 음수이므로이 방법이 작동하지 않습니다. 먼저 int 복사본을 만들어야합니다 ( Acmp = np.array(A, dtype=int))
Charles L.

3
np.nanmean(((A - B) ** 2))값이없는 경우
사용자 0을

38

이것은의 일부는 numpy아니지만 numpy.ndarray개체 와 함께 작동 합니다. A numpy.matrix는 a numpy.ndarray와 a 로 변환 될 수 있습니다 .numpy.ndarray 로 변환 할 수 있고 a는 numpy.matrix.

from sklearn.metrics import mean_squared_error
mse = mean_squared_error(A, B)

축 제어 방법에 대한 문서는 Scikit Learn mean_squared_error 를 참조하십시오 .



5

행렬 곱셈과 관련된 문제를 피하는 허용되는 답변의 또 다른 대안 :

 def MSE(Y, YH):
     return np.square(Y - YH).mean()

np.square에 대한 문서에서 : "입력의 요소 별 제곱을 반환합니다."


4

그냥 킥

mse = (np.linalg.norm (AB) ** 2) / len (A)


0

평균 제곱 오차 (분산) 및 제곱근 (표준 편차)을 계산하는 표준 numpy 방법은 numpy.var()및 입니다. 여기여기를numpy.std() 참조 하세요 . 그것들은 행렬에 적용되며 .numpy.mean()

이 기능을 사용할 수 있기 전에 질문과 이전 답변이 게시되었을 수 있다고 가정합니다.


MSE와 분산은 평균이 0이 아닌 한 동일하지 않습니다 (즉, A와 B의 평균이 같지 않아 AB가 위의 계산에서 평균이 0이 아닌 경우).
Drew
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.