python - for循环列表 - 返回错误“太多值要解压缩”

时间:2016-12-28 02:42:16

标签: python for-loop

我知道网站上有很多问题,但我阅读的十几个未能解决这个简单的问题:

def gradient_descent_wtf(xvalues, yvalues):
    tolerance = 0.1

    m=1.
    b=1.

    for i in range(0,10):
        predicted_yvalues = [m*x+b for x in xvalues]

        residuals = [y-y_hat for y,y_hat in zip(yvalues,predicted_yvalues)]

        residual_sum_of_squares = sum(r**2 for r in residuals) #only needed for debugging purposes
        print("RSS = %s" % residual_sum_of_squares)

        residuals_times_xvalues = [r*x for r,x in zip(residuals,xvalues)]

        residuals_sum = sum(residuals)

        residuals_times_xvalues_sum = sum(residuals_times_xvalues)

        # (residuals_sum,residual_times_xvalues_sum) is a vector which points in the negative
        # gradient direction. *Find a unit vector which points in same direction*

        magnitude = (residuals_sum**2 + residuals_times_xvalues_sum**2)**0.5

        residuals_sum /= magnitude
        residuals_times_xvalues_sum /= magnitude

        b += residuals_sum * (0.1)
        m += residuals_times_xvalues_sum * (0.1)

        #check for convergence -- this needs work!
        magnitude_of_sum_vector = (residuals_sum**2 + residuals_times_xvalues_sum**2)**0.5
        if magnitude_of_sum_vector < tolerance:
            break

    return (b, m)

返回错误值:>>> gradient_descent_wtf([1,2,3,4,5,6,7,8,9,10],[6,23,8,56,3,24,234,76,59,567]) RSS = 370433.0 RSS = 368732.1655050716 RSS = 367039.18363896786 RSS = 365354.0543519137 RSS = 363676.7775934381 RSS = 362007.3533123621 RSS = 360345.7814567845 RSS = 358692.061974069 RSS = 357046.1948108295 RSS = 355408.17991291644 (1.1157111313023558, 1.9932828425473605)

该问题的解决方案是什么?

1 个答案:

答案 0 :(得分:5)

class Comment < ActiveRecord::Base
  belongs_to :parent, :class_name => "Comment", :foreign_key => "parent_id"
  has_many :children, :class_name => "Comment", :foreign_key => "parent_id"
end