Python Numpy STD против Scala Breeze STDDEV

1

В настоящее время я работаю над переносом кода 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: каков общий способ вычисления стандартного отклонения

Но я ищу способ получить это с бризом. Есть идеи?

Теги:
scala-breeze

1 ответ

3
Лучший ответ

Это связано с числом степеней свободы. В самом деле,

>>> 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
  • 0
    Спасибо за объяснение. Я нашел связанную проблему на странице GitHub: github.com/scalanlp/breeze/issues/507
  • 0
    @ Нормальный Это может быть то, что вы знаете, но посмотрите мое обновление относительно того, как решить эту проблему.
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню