JSFiddle - React, Tailwind, and code Playground

JavaScript

/*
var DecisionTree = Class.create();
DecisionTree.prototype = {
    initialize: function() {
    },

    entropy: function (rows) {
          var log2 = function(x){ return log(x)/log(2)};
          var results = uniquecounts(rows)
          ent = 0.0
          for r in results.keys():
                 var p = (results[r].valueOf()/rows.length.valueOf()).valueOf();
                 Ent = ent - p*log2(p);
          return ent;
    },

    uniquecounts: function (rows) {
        Var results = {}
        For (var row in rows) {
              Var r = row[row.length -1]
              If (!(r in results)){
                     results[r] += 1;
              }
        }
        return results;
    },

    buildTree: function(rows, scoref = entropy) {
            If (rows.length == 0) { return decisionnode(); }
            Var currentScore = scoref(rows);
            best_gain = 0.0
            best_criteria = nil
            best_sets = nil
            column_count = rows[0].length - 1;
            For (Var col in range(0, column_count)):
                   column_values = {};
                   For row in rows {
                          column_values[row[col]] = 1;
                   }
                   For value in column_values.keys(){
                          Var binarySets =divideset(rows, col, value);
                           Var p = ((binarySets[0].length).valueOf() / rows.length.valueOf()).valueOf();
                           var gain = (current_sore - p * score(binarySets[0])-(1-p) * scoref(binarySets[1]))).valueOf();
                           If (gain > best_gain && binarySets[0].length > 0 && binarySets[1].length > 0) {
                               best_gain = gain;
                               best_criteria = [col, value];
                               best_sets = [binarySets[0], binarySets[1]];
                           }
                   }
           If best_gain > 0 {
                   trueBranch = buildTree(best_sets[0]);
               ...