linear regression from scratch in python using gradient descent