项目作者: mljs

项目描述 :
Utility library to make cross validation with supervised classifiers
高级语言: JavaScript
项目地址: git://github.com/mljs/cross-validation.git
创建时间: 2016-07-14T13:10:47Z
项目社区:https://github.com/mljs/cross-validation

开源协议:MIT License

下载


cross-validation

NPM version
build status
npm download

Utility library to do cross validation with supervised classifiers.

Cross-validation methods:

API documentation.

A list of the mljs supervised classifiers is available here in the supervised learning section, but you could also use your own. Cross validations methods return a ConfusionMatrix (https://github.com/mljs/confusion-matrix) that can be used to calculate metrics on your classification result.

Installation

  1. npm i -s ml-cross-validation

Example using a ml classification library

  1. const crossValidation = require('ml-cross-validation');
  2. const KNN = require('ml-knn');
  3. const dataset = [[0, 0, 0], [0, 1, 1], [1, 1, 0], [2, 2, 2], [1, 2, 2], [2, 1, 2]];
  4. const labels = [0, 0, 0, 1, 1, 1];
  5. const confusionMatrix = crossValidation.leaveOneOut(KNN, dataSet, labels);
  6. const accuracy = confusionMatrix.getAccuracy();

Example using a classifier with its own specific API

If you have a library that does not comply with the ML Classifier conventions, you can use can use a callback to perform the classification.
The callback will take the train features and labels, and the test features. The callback shoud return the array of predicted labels.

  1. const crossValidation = require('ml-cross-validation');
  2. const KNN = require('ml-knn');
  3. const dataset = [[0, 0, 0], [0, 1, 1], [1, 1, 0], [2, 2, 2], [1, 2, 2], [2, 1, 2]];
  4. const labels = [0, 0, 0, 1, 1, 1];
  5. const confusionMatrix = crossValidation.leaveOneOut(dataSet, labels, function(trainFeatures, trainLabels, testFeatures) {
  6. const knn = new KNN(trainFeatures, trainLabels);
  7. return knn.predict(testFeatures);
  8. });
  9. const accuracy = confusionMatrix.getAccuracy();

ML classifier API conventions

You can write your classification library so that it can be used with ml-cross-validation as described in here
For that, your classification library must implement

  • A constructor. The constructor can be passed options as a single argument.
  • A train method. The train method is passed the data as a first argument and the labels as a second.
  • A predict method. The predict method is passed test data and should return a predicted label.

Example

  1. class MyClassifier {
  2. constructor(options) {
  3. this.options = options;
  4. }
  5. train(data, labels) {
  6. // Create your model
  7. }
  8. predict(testData) {
  9. // Apply your model and return predicted label
  10. return prediction;
  11. }
  12. }