MOYSES is a Support Vector Machine (SVM) library for node.js using TypeScript. It's used for binary classification purposes using n-dimensional datasets.
npm install moyses
MOYSES is a Support Vector Machine (SVM) library for node.js using TypeScript.
It's used for binary classification purposes using n-dimensional datasets.
bash
.
├── core
│ ├── engine
│ │ └── svm.ts
│ └── kernels
│ └── kernels.ts
├── index.ts
├── types
│ └── dataset_type.ts
└── utils
├── dataset_generation
│ ├── dataset_generator.ts
│ └── generate_points.ts
└── utils.ts
`$3
`npm install moyses`$3
`typescript
import * as Moyses from 'moyses'// will generate 10 pairs of labeled data you might as well wanna use your own dataset
const dataset: Moyses.IDataset = new Moyses.DatasetGenerator('CIRCULAR',10).generate();
//instanciate SVM
const svm = new Moyses.SVM(dataset, 5, 'RBF', 15 );
//classify data
const positiveResult = svm.predict([0,0]);
const negativeResult = svm.predict([50,50]);
`#### Svm arguments :
-
dataset: type: IDataset Interface can be found in lib/types/dataset_type.ts or see example below.
- c: type: number c parameter for soft margin classification.
- kernel: type: string Only 'RBF' kernel is supported yet.
- OPTIONAL rbfSigma: type: number variance. Default value = 15 . #### DatasetGenerator arguments :
-
shape: type: string Overall shape of dataset (CIRCULAR, LINEAR, XOR).
- total: type: number Total amount of data pairs (1 and -1 output).
- OPTIONAL dimension: type: number dataset dimension default is 2 dim. Note: Dataset boundaries are fixed. This should be fixed at some point..
#### Example dataset :
`typescript
const circularDataset: IDataset = {
points: [
[ 77.08537142627756, 60.7455136985482 ],
[ 54.94324221651883, 63.78584077042318 ],
[ 45.124087171506936, 80.97650097253724 ],
[ 62.00480777917741, 49.642444449970675 ],
[ 56.958382663885864, 81.27710664286386 ],
[ 52.72767259658451, 66.03517399586579 ],
[ 19.518515661340157, 35.12014495118882 ],
[ 58.87894639269981, 59.27927960679746 ],
[ 13.59822313333904, 61.66342807818599 ],
[ 37.01348768362775, 54.679365456721584 ],
[ 85.01654232561876, 46.57532675823407 ],
[ 34.70627848361286, 44.84248665899513 ],
[ 63.443893468418494, 74.07028656564599 ],
[ 61.456705623249455, 41.09439124577563 ],
[ 84.26782294646438, 26.269714017498337 ],
[ 37.44407046741475, 50.98956479733988 ],
[ 37.53801531593166, 79.73505569185346 ],
[ 61.308207468398585, 44.41090753575729 ],
[ 49.57073028314457, 5.715350047914129 ],
[ 63.640430592148775, 39.56876863124383 ]
],
labels: [
1, -1, 1, -1, 1, -1, 1,
-1, 1, -1, 1, -1, 1, -1,
1, -1, 1, -1, 1, -1
]
}
`NPM custom commands
-
build: Build the JavaScript files.
- build:watch: Build the JavaScript files in watch mode.
- test: Run jest in test mode.
- test:watch: Run jest in interactive test mode.
- docs: Generate the docs directory.
- lint`: Runs linter on the whole project.The model converges, however it is a simplified version of the sequential minimum optimisation algorithm published by John C.Platt.
Please follow the links below for more informations on the model.
- https://www.microsoft.com/en-us/research/wp-content/uploads/2016/02/tr-98-14.pdf
- http://cs229.stanford.edu/materials/smo.pdf

Bastien GUIHARD