我想弄明白为什么这个过程给了我一个错误的答案。你知道吗
对于[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])
你不正确地执行了这个公式。你知道吗
定义是“标准偏差是平均值的平方偏差的平均值的平方根。”
代码
math.sqrt((average - value)**2)
并不是您想要的;sqrt和**2有点相互抵消,所以结果就是abs(average-value)
。你知道吗numpy页面简洁地将实现描述为
std = sqrt(mean(abs(x - x.mean())**2))
。你知道吗对代码的以下更正将更有效:
相关问题 更多 >
编程相关推荐