ShuJu

Framework for Advanced Statistics and Data Sciences

License

License

GroupId

GroupId

com.github.romualdrousseau
ArtifactId

ArtifactId

shuju
Last Version

Last Version

1.12
Release Date

Release Date

Type

Type

jar
Description

Description

ShuJu
Framework for Advanced Statistics and Data Sciences
Project URL

Project URL

https://github.com/romualdrousseau/shuju
Source Code Management

Source Code Management

https://github.com/romualdrousseau/shuju

Download shuju

How to add to project

<!-- https://jarcasting.com/artifacts/com.github.romualdrousseau/shuju/ -->
<dependency>
    <groupId>com.github.romualdrousseau</groupId>
    <artifactId>shuju</artifactId>
    <version>1.12</version>
</dependency>
// https://jarcasting.com/artifacts/com.github.romualdrousseau/shuju/
implementation 'com.github.romualdrousseau:shuju:1.12'
// https://jarcasting.com/artifacts/com.github.romualdrousseau/shuju/
implementation ("com.github.romualdrousseau:shuju:1.12")
'com.github.romualdrousseau:shuju:jar:1.12'
<dependency org="com.github.romualdrousseau" name="shuju" rev="1.12">
  <artifact name="shuju" type="jar" />
</dependency>
@Grapes(
@Grab(group='com.github.romualdrousseau', module='shuju', version='1.12')
)
libraryDependencies += "com.github.romualdrousseau" % "shuju" % "1.12"
[com.github.romualdrousseau/shuju "1.12"]

Dependencies

compile (3)

Group / Artifact Type Version
org.processing : core jar 3.3.7
com.fasterxml.jackson.core : jackson-databind jar 2.10.0.pr1
org.xerial : sqlite-jdbc jar 3.30.1

test (2)

Group / Artifact Type Version
junit : junit jar 4.13.1
org.hamcrest : hamcrest-library jar 1.3

Project Modules

There are no modules declared in this project.

ShuJu

Build

It is an enterprise grade Java API for real linear algebra, statistic and machine learning algorithms.

Strongly influenced by Numpy and Tensorflow, ShuJu aims to provide a solid mathematical and scientific library for Java. Despite the success of python and various new languages, Java is still largely used in enterprise and mobile solutions because of its ubiquity and foundations in most of professional platforms.

Each implemented algorithm is not trivial to avoid for example calculation issues as rounding. Also a great care is given to optimization and tests.

The core of the linear algebra is (ala Numpy) an implementation of multi dimensional arrays with the notion of universal functions (lamda calculus). The implementation tries to avoid most of copies during tanspose, reshape and views and use packed java arrays to be friendly with CPU vectorization instructions or GPU. Fast computations is ensured by using BLAS subroutines (Experimental).

So far, the following algorithms have been implemented:

Math library

  • Scalar
  • Tensor (Including Vector, Matrix, ...)
  • Linear Algebra algorithms
    • LU
    • QR
    • HouseGHolder
    • Hessenberg
    • Cholesky
    • Gaussian Elimination
    • Linear Solver
    • Eigens
    • PCA
    • SVD

Neural Network

  • Full connected multiple layers (Dense)
  • Convolution layers
  • DropOut layers
  • Batch Normlization Layers
  • Flatten layers
  • Pooling Layers
  • Genetic Layers
  • Gradient descent back propagation
  • Activation functions (LeakyRelu, Linaer, Relu, Sigmoid, Softmax, Tanh)
  • Loss function (Huber, Hinge, MeanSquare, SoftmaxCrossEntropy)
  • Initializers (Glorot, He, Lecun)
  • Regularizers (L1, L2)
  • Optimizers (Adam, AdaDelta, RMSProp, Sgd)
  • Schedulers (Exponential)

Machine Learnings

  • Kmean
  • K-Nearest Neighbor
  • Naive Bayes
  • Simple Linear Regression

NLP

  • Tokenizers (ngram, shingle)
  • Word 2 vect
  • Regular Expression
  • Stop words

CV

  • Image convolution filter
  • Shape extractors (rectangle by hough transformation)

Genetic

  • Pool with selection
  • Mutation interface

DataSet management

With transformation framework such as normalization, standardization ...

Project Documentation

https://romualdrousseau.github.io/ShuJu/

User Guide

https://github.com/RomualdRousseau/ShuJu/wiki

Install Processing examples

  • Set environement variable PROCESSING_USER_LIBRARIES to the Processing User libraries
  • mvn clean install

Manual Deployment

Manually Deploy snapshot

mvn clean deploy

Manually Deploy release

mvn clean site -Dmessage="<commit_log_here>" scm:checkin -P release
mvn scm:update

Automatic Deployment

Deploy snapshot

Every time a change on master is made (push, merge, etc) a deployment on the snapshot repository is made.

Deploy release

  • Edit the pom.xml to set the release version and push
  • Create a release on github will trigger a deployment on the official repo as well as generate the associated javadoc.
  • Edit the pom.xml to set the snapshot version and push

Deploy documentation

mvn clean site deploy -P documentation

Versions

Version
1.12
1.11
1.10
1.9
1.8
1.7
1.6
1.5
1.4
1.3
1.2
1.1
1.0