add supervised and unsupervised learning alogrithms