标准差计算

2024-06-16 11:54:41 发布

您现在位置:Python中文网/ 问答频道 /正文

我想弄明白为什么这个过程给了我一个错误的答案。你知道吗

对于[1,2,3,4,5],我得到的是1.2而不是1.414

def standard_deviation(number_list):
  average = sum(number_list) / float(len(number_list))
  stdev = 0
  for value in number_list:
      stdev += math.sqrt((average - value)**2) / float(len(number_list))
  return stdev

standard_deviation([1,2,3,4,5])

Tags: 答案numberforlenvalue过程def错误
1条回答
网友
1楼 · 发布于 2024-06-16 11:54:41

你不正确地执行了这个公式。你知道吗

定义是“标准偏差是平均值的平方偏差的平均值的平方根。”

代码math.sqrt((average - value)**2)并不是您想要的;sqrt和**2有点相互抵消,所以结果就是abs(average-value)。你知道吗

numpy页面简洁地将实现描述为std = sqrt(mean(abs(x - x.mean())**2))。你知道吗

对代码的以下更正将更有效:

def standard_deviation(number_list):
  average = sum(number_list) / float(len(number_list))
  sqdev = 0
  for value in number_list:
      sqdev += (average-value)**2
  sqdev = sqdev / float(len(number_list))
  return math.sqrt(sqdev)

相关问题 更多 >