Skip to main content

'Personal machine/deep learning implementation inspired by sklearn and keras'

Project description

handmadeML

This package is created to merge to sub-projects : handmade-neural-network and handmade-machine-learning The components and logics from both projects should converge

Objective

This is a personal challenge : re-code all the components of machine learning and deep learning algos

The code is inspired by the logic of sklaern and keras, but is much simpler:

  • common terminology and workflow (model instanciation, model.fit, model.predict etc..) but simplified (no .compile method for instance)
  • less features implemented
  • less checks, exceptions, tricky cases allowed, etc.
  • probably much less computionaly efficient

Implemented so far:

linear classifier :

  • loss options : hinge, squared_hinge (for SVC) and logit (for Logistic regression)
  • penalty options : l1,l2
  • kernel : only linear

decision trees

  • decion tree classifier

neuralnets

  • dense networks only

  • 5 activation functions:

    • relu, tanh (mostly for hidden layers)
    • linear (for regression output)
    • sigmoid, softmax (for classifiction outputs)
  • 4 loss functions:

    • mse, mae (for regression tasks)
    • binary crossentropy (for binary classification tasks)
    • multiclass crossentropy (for multiclassification)
  • gradient descent with back-propagation

  • simple GrandientDescent optimizer only

    • stochastic or mini-batch
    • adjustable learning rate
    • without momentum
  • metric computation at the end of each batch/epoch for monitoring during training

    • only loss functions
  • weights and bias initializers : zeros, ones and glorot_uniform only

  • a pedagogical notebook in the notebooks folder contains a guided implementation, step by step, of a simple neural network, equivalent to the Tensorflow Playgroung

To be coded later :

linear classifier :

  • kernel trick with simple kernels : polynomials, rbf
  • create a pedagogical tutorial notebook about linear SVC

decision trees :

  • regression trees

ensemble methods and other optmization methods :

  • bagging
  • boosting
  • cross validation
  • grid search
  • randomized search

neuralnets :

  • regularization:

    • l1, l2, elasticnet
    • on kernels (weights)
  • early stopping on validation data

  • training history tracking

  • momentum for SGD optimizer

  • other metrics (accuracy, roc_auc, etc.)

  • other optimizers

    • adam

To be coded much later :

linear models :

  • more for svm :
    • Linear SV regressors
    • more hinge options
    • more kernels
  • regressors with ridge/lasso/elasticnet

neuralnets :

  • dropout
  • regularization on biais and activity of the neurons
  • other optimizers
    • rmsprop

usupervised models :

  • k-mean
  • pca

To be probably never coded :

neuralnets :

  • padding
  • CNN specifics:
    • conv2D layers
    • kernels
    • max pooling layers
    • flatting layer
  • RNN specifics:
    • simple RNN layer
    • masking layer
    • LSTM layer

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

handmadeML-1.1.tar.gz (871.7 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

handmadeML-1.1-py3-none-any.whl (24.2 kB view details)

Uploaded Python 3

File details

Details for the file handmadeML-1.1.tar.gz.

File metadata

  • Download URL: handmadeML-1.1.tar.gz
  • Upload date:
  • Size: 871.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.0 importlib_metadata/3.7.3 packaging/20.9 pkginfo/1.7.0 requests/2.25.1 requests-toolbelt/0.9.1 tqdm/4.59.0 CPython/3.8.6

File hashes

Hashes for handmadeML-1.1.tar.gz
Algorithm Hash digest
SHA256 4156644dec422c0caeb8b3dd8a3d9d7e24467cfbe9eee3bdfe6dfdc74787bcc9
MD5 5d6faa15286ec9f1111cbc195727fdc2
BLAKE2b-256 b4f1240549d58ca583505a72cee1d431e1dc9efe897e189281d476431b9f917c

See more details on using hashes here.

File details

Details for the file handmadeML-1.1-py3-none-any.whl.

File metadata

  • Download URL: handmadeML-1.1-py3-none-any.whl
  • Upload date:
  • Size: 24.2 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.0 importlib_metadata/3.7.3 packaging/20.9 pkginfo/1.7.0 requests/2.25.1 requests-toolbelt/0.9.1 tqdm/4.59.0 CPython/3.8.6

File hashes

Hashes for handmadeML-1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 2a528b05bd11a1d6190f1e939d61b240a424501e2ac647d1043e22f12cb21c68
MD5 4d0367e5ef592eef2ba6cd82a0de3e95
BLAKE2b-256 f39567a2237301744919b0804988e665ffb97d8d138611c0c96cda79b0886405

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page