add gradient descent functions
add pycallgraph for performance analysis visualization
add main testing function and pycallgraph for permormance analysis
clean up, flow organization
don't print in cv_predict