Package: princoml
PrincoMLA few years back I got frustrated with the current derth of Machine Learning libraries out there, namely TensorFlow, PyTorch and Keras. They work great using the standard methods, but I wanted to make something more configurable, where I could customize the architecture, equations, and whatnot, in a much more straightforward method. As such I made this library, PrincoML (named after a good friend of mine).This is a fantastic library if you're wanting to experiment with novel gradient-based approaches to supervised learning. This is a horrible library to use if you want an easy-to-use out-of-the-box approach to machie learning.PrincoML allows for a level of flexability beyond what existing libraries provide in how a gradient-descent based machine learning solution can be architectured. It supports simple linear/logistic/GLM style regression, as well as fantastically complex neural networks, and all sorts of solutions inbetween. I've used it both on personal projects and professionally, and it's worked wonders for me. PrincoML is based on PyTorch as the backend, which is a personal preference, as I've tried both Numpy and TensorFlow impementations, and PyTorch just offers a smoother integration for the needs of the library.Development is largely based around whatever feature I need or feel like implementing. This likely means that CNN/Image Recognition stuff will take a back seat as I'm personally not fond of those approaches, and RNN/Time Series/NLP stuff will take forefront, as that's my speciality (-:I'm always welcome to accept ideas/code/etc. from other contributors, but the primary purpose of this library is to serve as my own personal machine learning code, that I just happen to share with everyone else (-: As such, enjoy, use at your leisure, and have fun with it!Jason CherryJCherry@gmail.comRevision History2019/04/15Created a missing data handler class for the data cluster2019/04/12Refactored directory name to match common Python naming conventions2019/04/11Renamed the library to PrincoMLAdded an actual description to the readme2019/04/08Fixed visualization of optimal iteration coefficents on multiple-trained controllersFixed regularization function after coefficent refactorFixed Coefficent locking after coefficent refactorChanged Controller Learn lock_coefs kwarg default to True2019/04/05Fixed testbeds, learning rate inputs correctly nowRefactored learning modules to store coefficents as values in a dictCreated hinge regression learning moduleFixed the 'best loss' marker not showing correctly in plot_losses (was a display issue)2019/03/06Controller: Fixed a bug created in the resequenced learning routine, which broke best coef saving, still doesn't save -inf coefs though2019/03/05Learning Rate is now a class within the Dense Learn Module, allowing for dynamic learning ratesCreated the following Learn Rate classes: Flat, Time Decay, Exponential Decay, Step DecayController: Added learn rate record, and visualizer method for that recordSmooth Learner: Modified gradient and grad_sq internals to not start at 0, but with the first gradient and grad_sq valuesController: Resequenced learning routine so that -inf losses don't override best coefsCreated noisey gradient learner classes, attached to the Dense Learn Module, currently just None (Root) and Gaussian noise2019/03/04Added reshape to all cluster outputAltered merge cluster to accept 3D tensorsSurvival Merger: pulling from correct input data; correctly allowing multiple space outputsAdded Orthogonal initializer, w/ Xavier optionNorm Regularizer: Added sqrt for L2 regularization, now balances correctly with L12019/03/02Refactored Survival Merger to include 'prob' and 'sig' space outputs2019/03/01'best loss' now properly saves coefs at best loss iterationAllowed null loss terminate to also terminate on inf lossAdded sigmoid/probability space output to survival merger2019/02/28SoftRelu Activator: Fixed input_tensor copy operation; Added 'leak'Survival Merger: Fixed input_tensor parser operationController: Added a null loss terminate to learning; Added a loss smoother; Added indexing to plot_losses method; Refactored coefs method; Added a manual data prediction methodImplemented 'best loss' coef save & recall mechanismDesign BacklogBuild a feature importace shuffler, based on shuffling columns and examining change in lossBuild out Convolutional learnerBuild out Recurrent/State wrapper for clustersBuild out a repeating sequence wrapper for clustersAdd Xavier option to Normal initializerDynamic L1/2 regularizationBuild out a coefficent variance estimator - added 2019-03-19Build out a constructor module to support easy feed-forward NN creation - added 2019-03-19Build out a model state snapshoter - Added 2019-04-08Add a geometric mean loss combiner (using log adding) - Added 2019-04-12Known BugsStill getting some plot_losses render bugs