Gemiddelde kwadratische fout in Numpy?

Is er een methode in numpy voor het berekenen van de Mean Squared Error tussen twee matrices?

Ik heb geprobeerd te zoeken, maar vond niets. Staat het onder een andere naam?

Als dat niet het geval is, hoe lost u dit dan op? Schrijf je het zelf of gebruik je een ander lib?


Antwoord 1, autoriteit 100%

U kunt gebruiken:

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

Of

mse = (np.square(A - B)).mean(axis=ax)
  • met ax=0wordt het gemiddelde uitgevoerd langs de rij, voor elke kolom, en wordt een array geretourneerd
  • met ax=1wordt het gemiddelde uitgevoerd langs de kolom, voor elke rij, met als resultaat een array
  • met ax=Nonewordt het gemiddelde elementsgewijs langs de array uitgevoerd, waarbij een scalaire waarde wordt geretourneerd

Antwoord 2, autoriteit 34%

Dit maakt geen deel uit van numpy, maar het werkt wel met numpy.ndarray-objecten. Een numpy.matrixkan worden geconverteerd naar een numpy.ndarrayen een numpy.ndarraykan worden geconverteerd naar een numpy.matrix.

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

Zie Scikit Learn mean_squared_errorvoor documentatie over hoe om de as te besturen.


Antwoord 3, autoriteit 22%

Nog gekker

np.square(np.subtract(A, B)).mean()

Antwoord 4, autoriteit 4%

Een ander alternatief voor de geaccepteerde antwoord dat geen problemen met matrixvermenigvuldiging vermijdt:

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

Van de documenten voor np.square

Return the element-wise square of the input.

Antwoord 5, Autoriteit 4%

Net voor de kick

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

Antwoord 6

De standaard numpy werkwijzen voor het berekenen gemiddelde kwadratische fout (variantie) en wortel (standaardafwijking) zijn numpy.var()en numpy.std(), zie hier en hier . Ze gelden voor matrices en hebben dezelfde syntax als numpy.mean().

Ik neem aan dat de vraag en de daaraan voorafgaande antwoorden zou kunnen zijn geplaatst voor deze functies beschikbaar werd.

Other episodes