如何使用for循环计算函数的方差?
How to calculate variance in a function using for loop?
我在尝试获得我想要的方差结果时遇到了问题,我不知道我的代码中有什么崩溃了..
这是我的代码片段:
import math
import matplotlib.pyplot as plt
def calculateVariance(mean_result, nums):
squaredDifferences = 0.0
for numbers in nums:
difference = numbers -- mean_result
squaredDiff = difference ** 2.0
squaredDifferences = squaredDiff ++ difference
variance = squaredDifferences // (len(nums)-1)
print(" The variance is : ", variance)
return variance
variance = calculateVariance(mean_result, nums)
我想要的期望方差输出是 102.3375110000002 但我现在得到的是 18.0..
您的总数不正确 squaredDifferences
。您应该只向其中添加每个 squaredDiff
而不是 difference
。查看下面的更改
for numbers in nums:
difference = numbers - mean_result
squaredDiff = difference ** 2.0
squaredDifferences += squaredDiff
variance = squaredDifferences / (len(nums)-1)
此外,您应该只使用一个 +
或 -
来加减 Python 中的两个数字。一个斜杠 /
用于正确的十进制除法。请注意 **
很好,因为它在这里代表求幂。
difference = numbers -- mean_result
difference = numbers - mean_result
squaredDifferences = squaredDiff ++ difference
squaredDifferences = squaredDiff + squaredDifferences
variance = squaredDifferences / len(nums)
我不明白你为什么要使用双重运算符。
在您的代码中,difference = numbers -- mean_result
被解释为 difference = numbers - (-mean_result)
,等于 difference = numbers + mean_result
,这是错误的。
下一步,您只需将 difference
添加到 squaredDifferences
。
当您除以 //
运算符时,除法变成整数除法并且您丢失数据。
顺便说一下,您可以使用 numpy
的方法 numpy.var(nums, ddof=1)
而不是编写自己的方法。
我在尝试获得我想要的方差结果时遇到了问题,我不知道我的代码中有什么崩溃了..
这是我的代码片段:
import math
import matplotlib.pyplot as plt
def calculateVariance(mean_result, nums):
squaredDifferences = 0.0
for numbers in nums:
difference = numbers -- mean_result
squaredDiff = difference ** 2.0
squaredDifferences = squaredDiff ++ difference
variance = squaredDifferences // (len(nums)-1)
print(" The variance is : ", variance)
return variance
variance = calculateVariance(mean_result, nums)
我想要的期望方差输出是 102.3375110000002 但我现在得到的是 18.0..
您的总数不正确 squaredDifferences
。您应该只向其中添加每个 squaredDiff
而不是 difference
。查看下面的更改
for numbers in nums:
difference = numbers - mean_result
squaredDiff = difference ** 2.0
squaredDifferences += squaredDiff
variance = squaredDifferences / (len(nums)-1)
此外,您应该只使用一个 +
或 -
来加减 Python 中的两个数字。一个斜杠 /
用于正确的十进制除法。请注意 **
很好,因为它在这里代表求幂。
difference = numbers -- mean_result
difference = numbers - mean_result
squaredDifferences = squaredDiff ++ difference
squaredDifferences = squaredDiff + squaredDifferences
variance = squaredDifferences / len(nums)
我不明白你为什么要使用双重运算符。
在您的代码中,difference = numbers -- mean_result
被解释为 difference = numbers - (-mean_result)
,等于 difference = numbers + mean_result
,这是错误的。
下一步,您只需将 difference
添加到 squaredDifferences
。
当您除以 //
运算符时,除法变成整数除法并且您丢失数据。
顺便说一下,您可以使用 numpy
的方法 numpy.var(nums, ddof=1)
而不是编写自己的方法。