The assumption is if regression is being done, subject is a float, if classification is being done subject is 'something that can be converted to a string', and if clustering is being done subject is an integer. 

You may notice I dropped both the subject, and label methods in favor of methods parametrized with a key name. In general I would actually like to move away from a fixed name for what subject is currently used for (at least 3 different problems, without even considering different instances of the same problem). For example the SVM transform could take the name of its target variable as a parameter (with some default value), rather than always using subject (and then renaming subject afterwards if doing more than 1 classification task).