Şu anda Python'da Java ile yazılmış bazı algoritmaları yeniden yapılandırmaya çalışıyorum. Bir adım, bir değerler listesinin standart sapmasını hesaplamaktır. Orijinal uygulama, bunun için Apache Math 1.1 kitaplığından DescriptiveStatistics.getStandardDeviation
kullanır. 1.5 numaralı standart sapmayı kullanıyorum. Sorun, aynı girdi için (çok) farklı sonuçlar veriyorlar.Wolfram ve numpy ile aynı girdi için farklı standart sapma
numpy : 0.10932134388775223
Apache Math 1.1 : 0.12620366805397404
Wolfram Alpha : 0.12620366805397404
Bir üçüncü görüş almak için Wolfram Alpha ile kontrol: Aşağıdaki sonuçlar elde
[0.113967640255, 0.223095775796, 0.283134228235, 0.416793887842]
: Ben örnek budur. Böyle bir farkın tek başına hassasiyetle açıklanabileceğini düşünmüyorum. Bunun neden olduğuna dair bir fikri olan var mı, bunun hakkında ne yapabilirim?
Düzenleme: yaklaşık doğru kullanarak değil, aynı zamanda
>>> from math import sqrt
>>> v = [0.113967640255, 0.223095775796, 0.283134228235, 0.416793887842]
>>> mu = sum(v)/4
>>> sqrt(sum([(x - mu)**2 for x in v])/4)
0.10932134388775223
:
>>> from numpy import std
>>> std([0.113967640255, 0.223095775796, 0.283134228235, 0.416793887842])
0.10932134388775223
Apache ve Wolfram'ın doğru olduğunu söyleyebilir miyim? Ve Numpy'nin yanlış olması olası değildir. Yani muhtemelen doğru kullanmıyorsunuz. Posta kodu? –