В настоящее время я работаю над переносом кода python на scala. Я использую breeze lib в качестве замены numpy.
Все выглядит отлично, но я столкнулся с различным поведением в выпуске стандартных отклонений:
Python:
series = np.array([1,4,5])
np.mean(series) // 3.3333333333333335
np.std(series) // 1.699673171197595
Scala:
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
Я знаю, как воспроизводить поведение python в простой scala. Пример кода представлен здесь: Scala: каков общий способ вычисления стандартного отклонения
Но я ищу способ получить это с бризом. Есть идеи?
Это связано с числом степеней свободы. В самом деле,
>>> np.std(series, ddof=1)
2.081665999466133
Каков образец std. С ветерком, что-то, что вы можете сделать, чтобы получить население std
var n = 3
val std = breeze.stats.stddev(vector)*Math.pow((n-1)/n, .5)
# 1.6996731711975948