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=0
wordt het gemiddelde uitgevoerd langs de rij, voor elke kolom, en wordt een array geretourneerd - met
ax=1
wordt het gemiddelde uitgevoerd langs de kolom, voor elke rij, met als resultaat een array - met
ax=None
wordt 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.matrix
kan worden geconverteerd naar een numpy.ndarray
en een numpy.ndarray
kan 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.