2015-02-23 51 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)