2015-02-23 17 views
0

有人可以告诉我这些以下两个符号之间的区别,一个是工作,另一个不是,但他们似乎对我来说是相同的。python与numpy的代码语法

def GradientDescentCostTest(): 

    theta = numpy.array([0, 0, 0], numpy.float) 
    features = numpy.array([[80, 20, 0], [65, 30, 1], [70, 23, 1]], numpy.float) 
    values = numpy.array([20, 10, 14], numpy.float)  

    # This works and returns a value for cost: 
    sumOfSquareErrors = numpy.square(numpy.dot(features, theta) - values).sum() 
    cost = sumOfSquareErrors/(len(values)*2) 

    # This doesn't work and returns value 0.0 for cost: 
    cost = 1/(len(values)*2) * numpy.square(numpy.dot(features, theta) - values).sum()  

    return cost 

print GradientDescentCostTest() 

感谢

+1

确定你能否提供足够的样本来运行你的样本(即所有未定义变量的例子) – 2015-02-23 22:13:21

+0

我在学校学到了[BODMAS](http://en.wikipedia.org/wiki/Order_of_operations)。 – 2015-02-23 22:14:27

+0

现在添加完整的代码示例,谢谢 – Manuel 2015-02-23 22:23:12

回答

3

1/(len(values)*2)等于0,因为所有的操作都是整数。一个简单的解决方法是改为使用1.0/(len(values)*2)