Implement exceptions for malformed data
Both train() and run() methods could have malformed data as input, if the feature vector sizes aren't consistent.
Train() returns false, and run() returns [0]. These methods should throw legible exceptions that could be caught.
Also, unit tests should make sure this works.