Added arbitrary classes, randomized inputs, gradient descent minimum step and color-coded PDFs for each class