Cleaned up the memoization...not sure why passing in the key into the default factory isn't built-in. Fixed the readme and arg parsing to enforce a required train set and test set.