python numpy std 与 scala breeze stddev
python numpy std vs scala breeze stddev
我目前正在努力将一些 python 代码迁移到 scala。我正在使用 breeze lib 代替 numpy。
一切看起来都很好,但我在标准偏差实现的输出中遇到了不同的行为:
Python:
series = np.array([1,4,5])
np.mean(series) // 3.3333333333333335
np.std(series) // 1.699673171197595
斯卡拉:
val vector = breeze.linalg.Vector[Double](Array(1.0, 4.0, 5.0))
val mean = breeze.stats.mean(vector) // 3.3333333333333335
val std = breeze.stats.stddev(vector) // 2.081665999466133
我知道如何在普通 scala 中重现 python 的行为。此处提供示例代码:
但我正在寻找一种轻松获得它的方法。有什么想法吗?
这与degrees of freedom的数量有关。的确,
>>> np.std(series, ddof=1)
2.081665999466133
这是样本标准。使用 breeze,你可以做一些事情来获得人口标准是
var n = 3
val std = breeze.stats.stddev(vector)*Math.pow((n-1)/n, .5)
# 1.6996731711975948
如果keepAlive的方案不行,你应该把"n"改成Double
var n : Double = 3
val std = breeze.stats.stddev(vector)*Math.pow((n-1)/n, .5)
# 1.6996731711975948
我目前正在努力将一些 python 代码迁移到 scala。我正在使用 breeze lib 代替 numpy。
一切看起来都很好,但我在标准偏差实现的输出中遇到了不同的行为:
Python:
series = np.array([1,4,5])
np.mean(series) // 3.3333333333333335
np.std(series) // 1.699673171197595
斯卡拉:
val vector = breeze.linalg.Vector[Double](Array(1.0, 4.0, 5.0))
val mean = breeze.stats.mean(vector) // 3.3333333333333335
val std = breeze.stats.stddev(vector) // 2.081665999466133
我知道如何在普通 scala 中重现 python 的行为。此处提供示例代码:
但我正在寻找一种轻松获得它的方法。有什么想法吗?
这与degrees of freedom的数量有关。的确,
>>> np.std(series, ddof=1)
2.081665999466133
这是样本标准。使用 breeze,你可以做一些事情来获得人口标准是
var n = 3
val std = breeze.stats.stddev(vector)*Math.pow((n-1)/n, .5)
# 1.6996731711975948
如果keepAlive的方案不行,你应该把"n"改成Double
var n : Double = 3
val std = breeze.stats.stddev(vector)*Math.pow((n-1)/n, .5)
# 1.6996731711975948