Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Sign inDemoInstall
Socket

yggdrasil-decision-forests

Package Overview
Dependencies
Maintainers
1
Versions
3
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

yggdrasil-decision-forests

With this package, you can generate predictions of machine learning models trained with YDF in browser and with NodeJS.

  • 0.0.2
  • Source
  • npm
  • Socket score

Version published
Weekly downloads
1.3K
increased by12.81%
Maintainers
1
Weekly downloads
 
Created
Source

YDF in JS

With this package, you can generate predictions of machine learning models trained with YDF in browser and with NodeJS.

Usage example

First, let's train a machine learning model in python. For more details, read YDF's documentation.

In a colab or in a jupyter notebook, type:

# Install YDF
!pip install ydf pandas

import ydf
import pandas as pd

# Download a training dataset
ds_path = "https://raw.githubusercontent.com/google/yggdrasil-decision-forests/main/yggdrasil_decision_forests/test_data/dataset/"
train_ds = pd.read_csv(ds_path + "adult_train.csv")

# Train a Gradient Boosted Trees model
learner = ydf.GradientBoostedTreesLearner(label="income", pure_serving_model=True)
model = learner.train(train_ds)

# Save the model
model.save("/tmp/my_model")

# Zip the model
# Warning: Don't include the directory structure with -j
!zip -rj /tmp/my_model.zip /tmp/my_model

With NodeJS and CommonJS

(async function (){
    // Load the YDF library
    const ydf = await require("yggdrasil-decision-forests")();

    // Load the model
    const fs = require("node:fs");
    let model = await ydf.loadModelFromZipBlob(fs.readFileSync("./model.zip"));

    // Create a batch of examples.
    let examples = {
        "age": [39, 40, 40, 35],
        "workclass": ["State-gov", "Private", "Private", "Federal-gov"],
        "fnlwgt": [77516, 121772, 193524, 76845],
        "education": ["Bachelors", "Assoc-voc", "Doctorate", "9th"],
        "education_num": ["13", "11", "16", "5"],
        "marital_status": ["Never-married", "Married-civ-spouse", "Married-civ-spouse", "Married-civ-spouse"],
        "occupation": ["Adm-clerical", "Craft-repair", "Prof-specialty", "Farming-fishing"],
        "relationship": ["Not-in-family", "Husband", "Husband", "Husband"],
        "race": ["White", "Asian-Pac-Islander", "White", "Black"],
        "sex": ["Male", "Male", "Male", "Male"],
        "capital_gain": [2174, 0, 0, 0],
        "capital_loss": [0, 0, 0, 0],
        "hours_per_week": [40, 40, 60, 40],
        "native_country": ["United-States", null, "United-States", "United-States"]
    };

    // Make predictions
    let predictions = model.predict(examples);
    console.log("predictions:", predictions);

    // Release model
    model.unload();
}())

With NodeJS and ES6

import * as fs from "node:fs";
import YggdrasilDecisionForests from 'yggdrasil-decision-forests';

// Load the YDF library
let ydf = await YggdrasilDecisionForests();

// Load the model
let model = await ydf.loadModelFromZipBlob(fs.readFileSync("./model.zip"));

// Create a batch of examples.
let examples = {
    "age": [39, 40, 40, 35],
    "workclass": ["State-gov", "Private", "Private", "Federal-gov"],
    "fnlwgt": [77516, 121772, 193524, 76845],
    "education": ["Bachelors", "Assoc-voc", "Doctorate", "9th"],
    "education_num": ["13", "11", "16", "5"],
    "marital_status": ["Never-married", "Married-civ-spouse", "Married-civ-spouse", "Married-civ-spouse"],
    "occupation": ["Adm-clerical", "Craft-repair", "Prof-specialty", "Farming-fishing"],
    "relationship": ["Not-in-family", "Husband", "Husband", "Husband"],
    "race": ["White", "Asian-Pac-Islander", "White", "Black"],
    "sex": ["Male", "Male", "Male", "Male"],
    "capital_gain": [2174, 0, 0, 0],
    "capital_loss": [0, 0, 0, 0],
    "hours_per_week": [40, 40, 60, 40],
    "native_country": ["United-States", null, "United-States", "United-States"]
};

// Make predictions
let predictions = model.predict(examples);
console.log("predictions:", predictions);

// Release model
model.unload();

In Browser

<script src="./node_modules/yggdrasil-decision-forests/dist/inference.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jszip/3.10.0/jszip.min.js"></script>
<script>
YggdrasilDecisionForests()
    .then(ydf => ydf.loadModelFromUrl("http://localhost:3000/model.zip"))
    .then(model => {
        let examples = {
            "age": [39, 40, 40, 35],
            "workclass": ["State-gov", "Private", "Private", "Federal-gov"],
            "fnlwgt": [77516, 121772, 193524, 76845],
            "education": ["Bachelors", "Assoc-voc", "Doctorate", "9th"],
            "education_num": ["13", "11", "16", "5"],
            "marital_status": ["Never-married", "Married-civ-spouse", "Married-civ-spouse", "Married-civ-spouse"],
            "occupation": ["Adm-clerical", "Craft-repair", "Prof-specialty", "Farming-fishing"],
            "relationship": ["Not-in-family", "Husband", "Husband", "Husband"],
            "race": ["White", "Asian-Pac-Islander", "White", "Black"],
            "sex": ["Male", "Male", "Male", "Male"],
            "capital_gain": [2174, 0, 0, 0],
            "capital_loss": [0, 0, 0, 0],
            "hours_per_week": [40, 40, 60, 40],
            "native_country": ["United-States", null, "United-States", "United-States"]
        };
        predictions = model.predict(examples);
        model.unload();
    });
</script>

Developer

Run unit tests

npm test

Update the binary bundle

# Download YDF
git clone google/yggdrasil-decision-forests

# Compile the YDF with WebAssembly
yggdrasil_decision_forests/port/javascript/tools/build_zipped_library.sh

# Extract the the content of `yggdrasil_decision_forests/dist/ydf.zip` in `dist`.

Keywords

FAQs

Package last updated on 30 May 2024

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc