This app lets you train and test various *supervised machine learning*
algorithms and visualize the accuracy (and r^{2} score) of their results. It allows you to adjust parameters that control the complexity of the algorithm model and save these results
for future comparison. It also lets you upload and save your own custom datasets in CSV or Excel formats.

*Supervised machine learning* involves providing input data (known as *features* or *independent
variables*) along with an output variable (known as a *label* or *dependent variable*). The algorithm assesses
each row of the data and generates a model that will attempt to label each row correctly.

Supervised machine learning consists of two phases: *training* and *testing*.

In the *testing* phase, the algorithm is initially given only the input variables, makes a prediction
of the outcome, and afterwards compares the result with the provided outcome label or value.

Once a model is trained and tested for a particular dataset, this app saves the *accuracy* (in binary classification, this is a percentage of correct vs. incorrect
labels) or *r ^{2} score* (in regression, this represents how well a model fits a dataset) for both the training and test phases, which can later be compared or plotted on a graph.

This app supports two types of machine learning algorithms: *binary classification* and *regression.*

Binary classification uses two possible values as an output or label (e.g., true or false, benign or malignant, spam or not spam). This app lets you choose many of the most common algorithms used in binary classification, including Logistic Regression, Decision Trees, and Feedforward Neural Networks.

Regression involves datasets with continuous numeric values (which can be integers or decimals) as the target or output value (e.g. the probability of gaining admission to a particular university, or the predicted price of a house). This app includes many common regression algorithms including Linear Regression, Ridge Regression, and Lasso Regression.

In supervised machine learning, there are trade-offs between the complexity of a model and the accuracy of the training and test results.

During the training phase, the more closely the model fits the training data, that is the more complex the model is, the higher the accuracy of the training results will be.

If the model fits the training data too well however, it will not score well during the test phase. This
is called *overfitting*.

One way to avoid overfitting the training data is to simplify the model. Most machine learning models have
various parameters that allow *regularization* (reducing the sensitivity of the model to the data at hand) or other forms of model simplification.

If a model is simplified, it may be less accurate during the training phase, but its accuracy will often improve during the test phase.
This means it will *generalize* better, and thus it will be more effective in the real world.

Part of the task of applied machine learning is to find the best algorithm model and parameter values for a given dataset that generate the highest test score accuracy. This app helps the user accomplish this task without needing to code or understand the math behind the algorithms.