Guest User

Untitled

a guest
May 24th, 2018
79
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.97 KB | None | 0 0
  1. def lowess(x, y, f=2. / 3., iter=3):
  2. '''....the number of robustifying iterations is given by iter. The
  3. function will run faster with a smaller number of iterations'''
  4.  
  5. n = len(x)
  6. r = int(ceil(f * n))
  7. h = [np.sort(np.abs(x - x[i]))[r] for i in range(n)]
  8. w = np.clip(np.abs((x[:, None] - x[None, :]) / h), 0.0, 1.0)
  9. w = (1 - w ** 3) ** 3
  10. yest = np.zeros(n)
  11. delta = np.ones(n)
  12. for iteration in range(iter):
  13. for i in range(n):
  14. weights = delta * w[:, i]
  15. b = np.array([np.sum(weights * y), np.sum(weights * y * x)])
  16. A = np.array([[np.sum(weights), np.sum(weights * x)],
  17. [np.sum(weights * x), np.sum(weights * x * x)]])
  18. beta = linalg.solve(A, b)
  19. yest[i] = beta[0] + beta[1] * x[i]
  20.  
  21. residuals = y - yest
  22. s = np.median(np.abs(residuals))
  23. delta = np.clip(residuals / (6.0 * s), -1, 1)
  24. delta = (1 - delta ** 2) ** 2
  25.  
  26. return yest
Add Comment
Please, Sign In to add comment