nlptoolkit-classification 1.0.3 → 1.0.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (213) hide show
  1. package/dist/Classifier/Bagging.d.ts +1 -0
  2. package/dist/Classifier/Bagging.js +3 -0
  3. package/dist/Classifier/Bagging.js.map +1 -1
  4. package/dist/Classifier/C45.d.ts +1 -0
  5. package/dist/Classifier/C45.js +3 -0
  6. package/dist/Classifier/C45.js.map +1 -1
  7. package/dist/Classifier/C45Stump.d.ts +1 -0
  8. package/dist/Classifier/C45Stump.js +3 -0
  9. package/dist/Classifier/C45Stump.js.map +1 -1
  10. package/dist/Classifier/Classifier.d.ts +1 -0
  11. package/dist/Classifier/Classifier.js.map +1 -1
  12. package/dist/Classifier/DeepNetwork.d.ts +1 -0
  13. package/dist/Classifier/DeepNetwork.js +3 -0
  14. package/dist/Classifier/DeepNetwork.js.map +1 -1
  15. package/dist/Classifier/Dummy.d.ts +1 -0
  16. package/dist/Classifier/Dummy.js +3 -0
  17. package/dist/Classifier/Dummy.js.map +1 -1
  18. package/dist/Classifier/KMeans.d.ts +1 -0
  19. package/dist/Classifier/KMeans.js +3 -0
  20. package/dist/Classifier/KMeans.js.map +1 -1
  21. package/dist/Classifier/Knn.d.ts +1 -0
  22. package/dist/Classifier/Knn.js +3 -0
  23. package/dist/Classifier/Knn.js.map +1 -1
  24. package/dist/Classifier/Lda.d.ts +1 -0
  25. package/dist/Classifier/Lda.js +3 -0
  26. package/dist/Classifier/Lda.js.map +1 -1
  27. package/dist/Classifier/LinearPerceptron.d.ts +1 -0
  28. package/dist/Classifier/LinearPerceptron.js +3 -0
  29. package/dist/Classifier/LinearPerceptron.js.map +1 -1
  30. package/dist/Classifier/MultiLayerPerceptron.d.ts +1 -0
  31. package/dist/Classifier/MultiLayerPerceptron.js +3 -0
  32. package/dist/Classifier/MultiLayerPerceptron.js.map +1 -1
  33. package/dist/Classifier/NaiveBayes.d.ts +1 -0
  34. package/dist/Classifier/NaiveBayes.js +3 -0
  35. package/dist/Classifier/NaiveBayes.js.map +1 -1
  36. package/dist/Classifier/Qda.d.ts +1 -0
  37. package/dist/Classifier/Qda.js +3 -0
  38. package/dist/Classifier/Qda.js.map +1 -1
  39. package/dist/Classifier/RandomClassifier.d.ts +1 -0
  40. package/dist/Classifier/RandomClassifier.js +3 -0
  41. package/dist/Classifier/RandomClassifier.js.map +1 -1
  42. package/dist/Classifier/RandomForest.d.ts +1 -0
  43. package/dist/Classifier/RandomForest.js +3 -0
  44. package/dist/Classifier/RandomForest.js.map +1 -1
  45. package/dist/DataSet/DataDefinition.d.ts +5 -1
  46. package/dist/DataSet/DataDefinition.js +16 -1
  47. package/dist/DataSet/DataDefinition.js.map +1 -1
  48. package/dist/DataSet/DataSet.js +1 -1
  49. package/dist/DataSet/DataSet.js.map +1 -1
  50. package/dist/InstanceList/InstanceList.js +3 -0
  51. package/dist/InstanceList/InstanceList.js.map +1 -1
  52. package/dist/Model/DecisionTree/DecisionNode.d.ts +6 -3
  53. package/dist/Model/DecisionTree/DecisionNode.js +48 -3
  54. package/dist/Model/DecisionTree/DecisionNode.js.map +1 -1
  55. package/dist/Model/DecisionTree/DecisionTree.d.ts +4 -3
  56. package/dist/Model/DecisionTree/DecisionTree.js +14 -4
  57. package/dist/Model/DecisionTree/DecisionTree.js.map +1 -1
  58. package/dist/Model/DeepNetworkModel.d.ts +6 -3
  59. package/dist/Model/DeepNetworkModel.js +53 -30
  60. package/dist/Model/DeepNetworkModel.js.map +1 -1
  61. package/dist/Model/DummyModel.d.ts +2 -1
  62. package/dist/Model/DummyModel.js +22 -2
  63. package/dist/Model/DummyModel.js.map +1 -1
  64. package/dist/Model/GaussianModel.d.ts +4 -0
  65. package/dist/Model/GaussianModel.js +28 -1
  66. package/dist/Model/GaussianModel.js.map +1 -1
  67. package/dist/Model/KMeansModel.d.ts +3 -2
  68. package/dist/Model/KMeansModel.js +19 -6
  69. package/dist/Model/KMeansModel.js.map +1 -1
  70. package/dist/Model/KnnModel.d.ts +3 -2
  71. package/dist/Model/KnnModel.js +18 -6
  72. package/dist/Model/KnnModel.js.map +1 -1
  73. package/dist/Model/LdaModel.d.ts +5 -2
  74. package/dist/Model/LdaModel.js +28 -6
  75. package/dist/Model/LdaModel.js.map +1 -1
  76. package/dist/Model/LinearPerceptronModel.d.ts +5 -2
  77. package/dist/Model/LinearPerceptronModel.js +38 -10
  78. package/dist/Model/LinearPerceptronModel.js.map +1 -1
  79. package/dist/Model/Model.d.ts +7 -0
  80. package/dist/Model/Model.js +40 -1
  81. package/dist/Model/Model.js.map +1 -1
  82. package/dist/Model/MultiLayerPerceptronModel.d.ts +5 -2
  83. package/dist/Model/MultiLayerPerceptronModel.js +33 -13
  84. package/dist/Model/MultiLayerPerceptronModel.js.map +1 -1
  85. package/dist/Model/NaiveBayesModel.d.ts +2 -1
  86. package/dist/Model/NaiveBayesModel.js +18 -6
  87. package/dist/Model/NaiveBayesModel.js.map +1 -1
  88. package/dist/Model/NeuralNetworkModel.d.ts +4 -1
  89. package/dist/Model/NeuralNetworkModel.js +27 -6
  90. package/dist/Model/NeuralNetworkModel.js.map +1 -1
  91. package/dist/Model/QdaModel.d.ts +3 -2
  92. package/dist/Model/QdaModel.js +23 -5
  93. package/dist/Model/QdaModel.js.map +1 -1
  94. package/dist/Model/RandomModel.d.ts +4 -2
  95. package/dist/Model/RandomModel.js +20 -4
  96. package/dist/Model/RandomModel.js.map +1 -1
  97. package/dist/Model/TreeEnsembleModel.d.ts +3 -2
  98. package/dist/Model/TreeEnsembleModel.js +19 -4
  99. package/dist/Model/TreeEnsembleModel.js.map +1 -1
  100. package/models/bagging-bupa.txt +25666 -0
  101. package/models/bagging-car.txt +78923 -0
  102. package/models/bagging-dermatology.txt +7276 -0
  103. package/models/bagging-iris.txt +3131 -0
  104. package/models/bagging-tictactoe.txt +61186 -0
  105. package/models/c45-bupa.txt +3 -0
  106. package/models/c45-car.txt +331 -0
  107. package/models/c45-carIndexed.txt +188 -0
  108. package/models/c45-dermatology.txt +43 -0
  109. package/models/c45-iris.txt +13 -0
  110. package/models/c45-tictactoe.txt +270 -0
  111. package/models/c45-tictactoeIndexed.txt +173 -0
  112. package/models/c45stump-bupa.txt +8 -0
  113. package/models/c45stump-car.txt +11 -0
  114. package/models/c45stump-chess.txt +8 -0
  115. package/models/c45stump-dermatology.txt +8 -0
  116. package/models/c45stump-iris.txt +8 -0
  117. package/models/c45stump-nursery.txt +11 -0
  118. package/models/c45stump-tictactoe.txt +11 -0
  119. package/models/deepNetwork-bupa.txt +40 -0
  120. package/models/deepNetwork-dermatology.txt +37 -0
  121. package/models/deepNetwork-iris.txt +22 -0
  122. package/models/dummy-bupa.txt +3 -0
  123. package/models/dummy-car.txt +5 -0
  124. package/models/dummy-chess.txt +19 -0
  125. package/models/dummy-dermatology.txt +7 -0
  126. package/models/dummy-iris.txt +4 -0
  127. package/models/dummy-nursery.txt +6 -0
  128. package/models/dummy-tictactoe.txt +3 -0
  129. package/models/kMeans-bupa.txt +7 -0
  130. package/models/kMeans-car.txt +11 -0
  131. package/models/kMeans-chess.txt +39 -0
  132. package/models/kMeans-dermatology.txt +15 -0
  133. package/models/kMeans-iris.txt +9 -0
  134. package/models/kMeans-nursery.txt +13 -0
  135. package/models/kMeans-tictactoe.txt +7 -0
  136. package/models/knn-bupa.txt +348 -0
  137. package/models/knn-car.txt +1731 -0
  138. package/models/knn-dermatology.txt +369 -0
  139. package/models/knn-iris.txt +153 -0
  140. package/models/knn-tictactoe.txt +961 -0
  141. package/models/lda-bupa.txt +7 -0
  142. package/models/lda-dermatology.txt +19 -0
  143. package/models/lda-iris.txt +10 -0
  144. package/models/linearPerceptron-bupa.txt +6 -0
  145. package/models/linearPerceptron-dermatology.txt +14 -0
  146. package/models/linearPerceptron-iris.txt +8 -0
  147. package/models/multiLayerPerceptron-bupa.txt +38 -0
  148. package/models/multiLayerPerceptron-dermatology.txt +36 -0
  149. package/models/multiLayerPerceptron-iris.txt +13 -0
  150. package/models/naiveBayes-bupa.txt +7 -0
  151. package/models/naiveBayes-dermatology.txt +19 -0
  152. package/models/naiveBayes-iris.txt +10 -0
  153. package/models/qda-bupa.txt +23 -0
  154. package/models/qda-iris.txt +28 -0
  155. package/models/random-bupa.txt +4 -0
  156. package/models/random-car.txt +6 -0
  157. package/models/random-chess.txt +20 -0
  158. package/models/random-dermatology.txt +8 -0
  159. package/models/random-iris.txt +5 -0
  160. package/models/random-nursery.txt +7 -0
  161. package/models/random-tictactoe.txt +4 -0
  162. package/models/randomforest-bupa.txt +25666 -0
  163. package/models/randomforest-car.txt +78923 -0
  164. package/models/randomforest-carIndexed.txt +38786 -0
  165. package/models/randomforest-dermatology.txt +7276 -0
  166. package/models/randomforest-iris.txt +3131 -0
  167. package/models/randomforest-tictactoe.txt +61186 -0
  168. package/package.json +3 -3
  169. package/source/Classifier/Bagging.ts +3 -0
  170. package/source/Classifier/C45.ts +4 -0
  171. package/source/Classifier/C45Stump.ts +4 -0
  172. package/source/Classifier/Classifier.ts +1 -0
  173. package/source/Classifier/DeepNetwork.ts +4 -0
  174. package/source/Classifier/Dummy.ts +4 -0
  175. package/source/Classifier/KMeans.ts +4 -0
  176. package/source/Classifier/Knn.ts +5 -1
  177. package/source/Classifier/Lda.ts +4 -0
  178. package/source/Classifier/LinearPerceptron.ts +4 -0
  179. package/source/Classifier/MultiLayerPerceptron.ts +4 -0
  180. package/source/Classifier/NaiveBayes.ts +4 -0
  181. package/source/Classifier/Qda.ts +4 -0
  182. package/source/Classifier/RandomClassifier.ts +4 -0
  183. package/source/Classifier/RandomForest.ts +4 -0
  184. package/source/DataSet/DataDefinition.ts +19 -1
  185. package/source/DataSet/DataSet.ts +1 -1
  186. package/source/InstanceList/InstanceList.ts +5 -0
  187. package/source/Model/DecisionTree/DecisionNode.ts +69 -29
  188. package/source/Model/DecisionTree/DecisionTree.ts +14 -4
  189. package/source/Model/DeepNetworkModel.ts +40 -16
  190. package/source/Model/DummyModel.ts +20 -2
  191. package/source/Model/GaussianModel.ts +29 -0
  192. package/source/Model/KMeansModel.ts +18 -6
  193. package/source/Model/KnnModel.ts +19 -6
  194. package/source/Model/LdaModel.ts +29 -6
  195. package/source/Model/LinearPerceptronModel.ts +52 -25
  196. package/source/Model/Model.ts +43 -0
  197. package/source/Model/MultiLayerPerceptronModel.ts +34 -12
  198. package/source/Model/NaiveBayesModel.ts +19 -7
  199. package/source/Model/NeuralNetworkModel.ts +31 -7
  200. package/source/Model/QdaModel.ts +22 -4
  201. package/source/Model/RandomModel.ts +21 -4
  202. package/source/Model/TreeEnsembleModel.ts +17 -3
  203. package/tests/Classifier/C45Test.ts +98 -0
  204. package/tests/Classifier/DeepNetworkTest.ts +52 -0
  205. package/tests/Classifier/DummyTest.ts +89 -0
  206. package/tests/Classifier/KMeansTest.ts +89 -0
  207. package/tests/Classifier/KnnTest.ts +68 -0
  208. package/tests/Classifier/LdaTest.ts +45 -0
  209. package/tests/Classifier/LinearPerceptronTest.ts +49 -0
  210. package/tests/Classifier/MultiLayerPerceptronTest.ts +51 -0
  211. package/tests/Classifier/NaiveBayesTest.ts +45 -0
  212. package/tests/Classifier/QdaTest.ts +35 -0
  213. package/tests/Classifier/RandomForestTest.ts +85 -0
@@ -4,13 +4,15 @@
4
4
  if (v !== undefined) module.exports = v;
5
5
  }
6
6
  else if (typeof define === "function" && define.amd) {
7
- define(["require", "exports", "./GaussianModel"], factory);
7
+ define(["require", "exports", "./GaussianModel", "nlptoolkit-math/dist/DiscreteDistribution", "nlptoolkit-util/dist/FileContents"], factory);
8
8
  }
9
9
  })(function (require, exports) {
10
10
  "use strict";
11
11
  Object.defineProperty(exports, "__esModule", { value: true });
12
12
  exports.NaiveBayesModel = void 0;
13
13
  const GaussianModel_1 = require("./GaussianModel");
14
+ const DiscreteDistribution_1 = require("nlptoolkit-math/dist/DiscreteDistribution");
15
+ const FileContents_1 = require("nlptoolkit-util/dist/FileContents");
14
16
  class NaiveBayesModel extends GaussianModel_1.GaussianModel {
15
17
  /**
16
18
  * A constructor that sets the priorDistribution, classMeans and classDeviations.
@@ -24,13 +26,21 @@
24
26
  this.classMeans = undefined;
25
27
  this.classDeviations = undefined;
26
28
  this.classAttributeDistributions = undefined;
27
- this.priorDistribution = priorDistribution;
28
- if (classDeviations != undefined) {
29
- this.classMeans = classMeans;
30
- this.classDeviations = classDeviations;
29
+ if (priorDistribution instanceof DiscreteDistribution_1.DiscreteDistribution) {
30
+ this.priorDistribution = priorDistribution;
31
+ if (classDeviations != undefined) {
32
+ this.classMeans = classMeans;
33
+ this.classDeviations = classDeviations;
34
+ }
35
+ else {
36
+ this.classAttributeDistributions = classMeans;
37
+ }
31
38
  }
32
39
  else {
33
- this.classAttributeDistributions = classMeans;
40
+ let input = new FileContents_1.FileContents(priorDistribution);
41
+ let size = this.loadPriorDistribution(input);
42
+ this.classMeans = this.loadVectors(input, size);
43
+ this.classDeviations = this.loadVectors(input, size);
34
44
  }
35
45
  }
36
46
  /**
@@ -89,6 +99,8 @@
89
99
  }
90
100
  return logLikelihood;
91
101
  }
102
+ saveTxt(fileName) {
103
+ }
92
104
  }
93
105
  exports.NaiveBayesModel = NaiveBayesModel;
94
106
  });
@@ -1 +1 @@
1
- {"version":3,"file":"NaiveBayesModel.js","sourceRoot":"","sources":["../../source/Model/NaiveBayesModel.ts"],"names":[],"mappings":";;;;;;;;;;;;IAAA,mDAA8C;IAO9C,MAAa,eAAgB,SAAQ,6BAAa;QAM9C;;;;;;WAMG;QACH,YAAY,iBAAuC,EAAE,UAAe,EAAE,eAAqC;YACvG,KAAK,EAAE,CAAC;YAZJ,eAAU,GAAwB,SAAS,CAAA;YAC3C,oBAAe,GAAwB,SAAS,CAAA;YACvC,gCAA2B,GAA6C,SAAS,CAAA;YAW9F,IAAI,CAAC,iBAAiB,GAAG,iBAAiB,CAAA;YAC1C,IAAI,eAAe,IAAI,SAAS,EAAC;gBAC7B,IAAI,CAAC,UAAU,GAAG,UAAU,CAAA;gBAC5B,IAAI,CAAC,eAAe,GAAG,eAAe,CAAA;aACzC;iBAAM;gBACH,IAAI,CAAC,2BAA2B,GAAG,UAAU,CAAA;aAChD;QACL,CAAC;QAED;;;;;;;WAOG;QACH,eAAe,CAAC,QAAkB,EAAE,EAAU;YAC1C,IAAI,IAAI,CAAC,2BAA2B,IAAI,SAAS,EAAE;gBAC/C,OAAO,IAAI,CAAC,uBAAuB,CAAC,EAAE,EAAE,QAAQ,CAAC,CAAC;aACrD;iBAAM;gBACH,OAAO,IAAI,CAAC,qBAAqB,CAAC,EAAE,EAAE,QAAQ,CAAC,CAAC;aACnD;QACL,CAAC;QAED;;;;;;;;WAQG;QACK,uBAAuB,CAAC,UAAkB,EAAE,QAAkB;YAClE,IAAI,aAAa,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,iBAAiB,CAAC,cAAc,CAAC,UAAU,CAAC,CAAC,CAAC;YAChF,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,aAAa,EAAE,EAAE,CAAC,EAAE,EAAE;gBAC/C,IAAI,EAAE,GAA0B,QAAQ,CAAC,YAAY,CAAC,CAAC,CAAE,CAAC,QAAQ,EAAE,CAAC;gBACrE,IAAI,EAAE,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;gBACrD,IAAI,EAAE,GAAG,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;gBAC1D,IAAI,EAAE,IAAI,CAAC,EAAC;oBACR,aAAa,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,CAAC;iBACvD;aACJ;YACD,OAAO,aAAa,CAAC;QACzB,CAAC;QAED;;;;;;;;;WASG;QACK,qBAAqB,CAAC,UAAkB,EAAE,QAAkB;YAChE,IAAI,aAAa,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,iBAAiB,CAAC,cAAc,CAAC,UAAU,CAAC,CAAC,CAAC;YAChF,IAAI,sBAAsB,GAAG,IAAI,CAAC,2BAA2B,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;YAC9E,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,aAAa,EAAE,EAAE,CAAC,EAAE,EAAE;gBAC/C,IAAI,EAAE,GAAwB,QAAQ,CAAC,YAAY,CAAC,CAAC,CAAE,CAAC,QAAQ,EAAE,CAAC;gBACnE,aAAa,IAAI,IAAI,CAAC,GAAG,CAAC,sBAAsB,CAAC,CAAC,CAAC,CAAC,8BAA8B,CAAC,EAAE,CAAC,CAAC,CAAC;aAC3F;YACD,OAAO,aAAa,CAAC;QACzB,CAAC;KACJ;IAjFD,0CAiFC"}
1
+ {"version":3,"file":"NaiveBayesModel.js","sourceRoot":"","sources":["../../source/Model/NaiveBayesModel.ts"],"names":[],"mappings":"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"}
@@ -5,6 +5,7 @@ import { Matrix } from "nlptoolkit-math/dist/Matrix";
5
5
  import { Instance } from "../Instance/Instance";
6
6
  import { ActivationFunction } from "../Parameter/ActivationFunction";
7
7
  import { Random } from "nlptoolkit-util/dist/Random";
8
+ import { FileContents } from "nlptoolkit-util/dist/FileContents";
8
9
  export declare abstract class NeuralNetworkModel extends ValidatedModel {
9
10
  protected classLabels: Array<string>;
10
11
  protected K: number;
@@ -18,7 +19,7 @@ export declare abstract class NeuralNetworkModel extends ValidatedModel {
18
19
  *
19
20
  * @param trainSet {@link InstanceList} to use as train set.
20
21
  */
21
- protected constructor(trainSet: InstanceList);
22
+ protected constructor(trainSet?: InstanceList);
22
23
  /**
23
24
  * The allocateLayerWeights method returns a new {@link Matrix} with random weights.
24
25
  *
@@ -98,4 +99,6 @@ export declare abstract class NeuralNetworkModel extends ValidatedModel {
98
99
  */
99
100
  predict(instance: Instance): string;
100
101
  predictProbability(instance: Instance): Map<string, number>;
102
+ loadClassLabels(input: FileContents): void;
103
+ loadActivationFunction(input: FileContents): ActivationFunction;
101
104
  }
@@ -23,9 +23,11 @@
23
23
  */
24
24
  constructor(trainSet) {
25
25
  super();
26
- this.classLabels = trainSet.getDistinctClassLabels();
27
- this.K = this.classLabels.length;
28
- this.d = trainSet.get(0).continuousAttributeSize();
26
+ if (trainSet != undefined) {
27
+ this.classLabels = trainSet.getDistinctClassLabels();
28
+ this.K = this.classLabels.length;
29
+ this.d = trainSet.get(0).continuousAttributeSize();
30
+ }
29
31
  }
30
32
  /**
31
33
  * The allocateLayerWeights method returns a new {@link Matrix} with random weights.
@@ -48,10 +50,10 @@
48
50
  normalizeOutput(o) {
49
51
  let sum = 0.0;
50
52
  let values = new Array();
51
- for (let i = 0; i < values.length; i++) {
53
+ for (let i = 0; i < o.size(); i++) {
52
54
  sum += Math.exp(o.getValue(i));
53
55
  }
54
- for (let i = 0; i < values.length; i++) {
56
+ for (let i = 0; i < o.size(); i++) {
55
57
  values.push(Math.exp(o.getValue(i)) / sum);
56
58
  }
57
59
  return new Vector_1.Vector(values);
@@ -126,7 +128,7 @@
126
128
  * @return Difference between newly created Vector and normalized output.
127
129
  */
128
130
  calculateRMinusY(instance, input, weights) {
129
- this.r = new Vector_1.Vector(this.K, this.classLabels.indexOf(instance.getClassLabel()), 1.0);
131
+ this.r = new Vector_1.Vector(this.K, 1.0, this.classLabels.indexOf(instance.getClassLabel()));
130
132
  let o = weights.multiplyWithVectorFromRight(input);
131
133
  this.y = this.normalizeOutput(o);
132
134
  return this.r.difference(this.y);
@@ -175,6 +177,25 @@
175
177
  }
176
178
  return result;
177
179
  }
180
+ loadClassLabels(input) {
181
+ let items = input.readLine().split(" ");
182
+ this.K = parseInt(items[0]);
183
+ this.d = parseInt(items[1]);
184
+ this.classLabels = new Array();
185
+ for (let i = 0; i < this.K; i++) {
186
+ this.classLabels.push(input.readLine());
187
+ }
188
+ }
189
+ loadActivationFunction(input) {
190
+ switch (input.readLine()) {
191
+ case "TANH":
192
+ return ActivationFunction_1.ActivationFunction.TANH;
193
+ case "RELU":
194
+ return ActivationFunction_1.ActivationFunction.RELU;
195
+ default:
196
+ return ActivationFunction_1.ActivationFunction.SIGMOID;
197
+ }
198
+ }
178
199
  }
179
200
  exports.NeuralNetworkModel = NeuralNetworkModel;
180
201
  });
@@ -1 +1 @@
1
- {"version":3,"file":"NeuralNetworkModel.js","sourceRoot":"","sources":["../../source/Model/NeuralNetworkModel.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"NeuralNetworkModel.js","sourceRoot":"","sources":["../../source/Model/NeuralNetworkModel.ts"],"names":[],"mappings":"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"}
@@ -8,12 +8,12 @@ export declare class QdaModel extends LdaModel {
8
8
  /**
9
9
  * The constructor which sets the priorDistribution, w w1 and HashMap of String Matrix.
10
10
  *
11
- * @param priorDistribution {@link DiscreteDistribution} input.
11
+ * @param priorDistributionOrFileName {@link DiscreteDistribution} input.
12
12
  * @param W {@link HashMap} of String and Matrix.
13
13
  * @param w {@link HashMap} of String and Vectors.
14
14
  * @param w0 {@link HashMap} of String and Double.
15
15
  */
16
- constructor(priorDistribution: DiscreteDistribution, W: Map<string, Matrix>, w: Map<string, Vector>, w0: Map<string, number>);
16
+ constructor(priorDistributionOrFileName: DiscreteDistribution | string, W?: Map<string, Matrix>, w?: Map<string, Vector>, w0?: Map<string, number>);
17
17
  /**
18
18
  * The calculateMetric method takes an {@link Instance} and a String as inputs. It multiplies Matrix Wi with Vector xi
19
19
  * then calculates the dot product of it with xi. Then, again it finds the dot product of wi and xi and returns the summation with w0i.
@@ -23,4 +23,5 @@ export declare class QdaModel extends LdaModel {
23
23
  * @return The result of Wi.multiplyWithVectorFromLeft(xi).dotProduct(xi) + wi.dotProduct(xi) + w0i.
24
24
  */
25
25
  calculateMetric(instance: Instance, Ci: string): number;
26
+ saveTxt(fileName: string): void;
26
27
  }
@@ -4,25 +4,41 @@
4
4
  if (v !== undefined) module.exports = v;
5
5
  }
6
6
  else if (typeof define === "function" && define.amd) {
7
- define(["require", "exports", "./LdaModel"], factory);
7
+ define(["require", "exports", "./LdaModel", "nlptoolkit-math/dist/DiscreteDistribution", "nlptoolkit-util/dist/FileContents"], factory);
8
8
  }
9
9
  })(function (require, exports) {
10
10
  "use strict";
11
11
  Object.defineProperty(exports, "__esModule", { value: true });
12
12
  exports.QdaModel = void 0;
13
13
  const LdaModel_1 = require("./LdaModel");
14
+ const DiscreteDistribution_1 = require("nlptoolkit-math/dist/DiscreteDistribution");
15
+ const FileContents_1 = require("nlptoolkit-util/dist/FileContents");
14
16
  class QdaModel extends LdaModel_1.LdaModel {
15
17
  /**
16
18
  * The constructor which sets the priorDistribution, w w1 and HashMap of String Matrix.
17
19
  *
18
- * @param priorDistribution {@link DiscreteDistribution} input.
20
+ * @param priorDistributionOrFileName {@link DiscreteDistribution} input.
19
21
  * @param W {@link HashMap} of String and Matrix.
20
22
  * @param w {@link HashMap} of String and Vectors.
21
23
  * @param w0 {@link HashMap} of String and Double.
22
24
  */
23
- constructor(priorDistribution, W, w, w0) {
24
- super(priorDistribution, w, w0);
25
- this.W = W;
25
+ constructor(priorDistributionOrFileName, W, w, w0) {
26
+ if (priorDistributionOrFileName instanceof DiscreteDistribution_1.DiscreteDistribution) {
27
+ super(priorDistributionOrFileName, w, w0);
28
+ this.W = W;
29
+ }
30
+ else {
31
+ super();
32
+ let input = new FileContents_1.FileContents(priorDistributionOrFileName);
33
+ let size = this.loadPriorDistribution(input);
34
+ this.loadWandW0(input, size);
35
+ this.W = new Map();
36
+ for (let i = 0; i < size; i++) {
37
+ let c = input.readLine();
38
+ let matrix = this.loadMatrix(input);
39
+ this.W.set(c, matrix);
40
+ }
41
+ }
26
42
  }
27
43
  /**
28
44
  * The calculateMetric method takes an {@link Instance} and a String as inputs. It multiplies Matrix Wi with Vector xi
@@ -39,6 +55,8 @@
39
55
  let w0i = this.w0.get(Ci);
40
56
  return Wi.multiplyWithVectorFromLeft(xi).dotProduct(xi) + wi.dotProduct(xi) + w0i;
41
57
  }
58
+ saveTxt(fileName) {
59
+ }
42
60
  }
43
61
  exports.QdaModel = QdaModel;
44
62
  });
@@ -1 +1 @@
1
- {"version":3,"file":"QdaModel.js","sourceRoot":"","sources":["../../source/Model/QdaModel.ts"],"names":[],"mappings":";;;;;;;;;;;;IAAA,yCAAoC;IAMpC,MAAa,QAAS,SAAQ,mBAAQ;QAIlC;;;;;;;WAOG;QACH,YAAY,iBAAuC,EAAE,CAAsB,EAAE,CAAsB,EAAE,EAAuB;YACxH,KAAK,CAAC,iBAAiB,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;YAChC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAA;QACd,CAAC;QAED;;;;;;;WAOG;QACH,eAAe,CAAC,QAAkB,EAAE,EAAU;YAC1C,IAAI,EAAE,GAAG,QAAQ,CAAC,QAAQ,EAAE,CAAC;YAC7B,IAAI,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YACxB,IAAI,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YACxB,IAAI,GAAG,GAAG,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YAC1B,OAAO,EAAE,CAAC,0BAA0B,CAAC,EAAE,CAAC,CAAC,UAAU,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,UAAU,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC;QACtF,CAAC;KACJ;IAhCD,4BAgCC"}
1
+ {"version":3,"file":"QdaModel.js","sourceRoot":"","sources":["../../source/Model/QdaModel.ts"],"names":[],"mappings":";;;;;;;;;;;;IAAA,yCAAoC;IAEpC,oFAA+E;IAG/E,oEAA+D;IAE/D,MAAa,QAAS,SAAQ,mBAAQ;QAIlC;;;;;;;WAOG;QACH,YAAY,2BAA0D,EAAE,CAAuB,EAAE,CAAuB,EAAE,EAAwB;YAC9I,IAAI,2BAA2B,YAAY,2CAAoB,EAAC;gBAC5D,KAAK,CAAC,2BAA2B,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;gBAC1C,IAAI,CAAC,CAAC,GAAG,CAAC,CAAA;aACb;iBAAM;gBACH,KAAK,EAAE,CAAA;gBACP,IAAI,KAAK,GAAG,IAAI,2BAAY,CAAC,2BAA2B,CAAC,CAAA;gBACzD,IAAI,IAAI,GAAG,IAAI,CAAC,qBAAqB,CAAC,KAAK,CAAC,CAAA;gBAC5C,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,IAAI,CAAC,CAAA;gBAC5B,IAAI,CAAC,CAAC,GAAG,IAAI,GAAG,EAAkB,CAAA;gBAClC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,EAAE,CAAC,EAAE,EAAC;oBAC1B,IAAI,CAAC,GAAG,KAAK,CAAC,QAAQ,EAAE,CAAA;oBACxB,IAAI,MAAM,GAAG,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAA;oBACnC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC,CAAA;iBACxB;aACJ;QACL,CAAC;QAED;;;;;;;WAOG;QACH,eAAe,CAAC,QAAkB,EAAE,EAAU;YAC1C,IAAI,EAAE,GAAG,QAAQ,CAAC,QAAQ,EAAE,CAAC;YAC7B,IAAI,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YACxB,IAAI,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YACxB,IAAI,GAAG,GAAG,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YAC1B,OAAO,EAAE,CAAC,0BAA0B,CAAC,EAAE,CAAC,CAAC,UAAU,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,UAAU,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC;QACtF,CAAC;QAED,OAAO,CAAC,QAAgB;QACxB,CAAC;KAEJ;IAjDD,4BAiDC"}
@@ -1,9 +1,10 @@
1
1
  import { Model } from "./Model";
2
2
  import { Instance } from "../Instance/Instance";
3
3
  export declare class RandomModel extends Model {
4
- private classLabels;
4
+ private readonly classLabels;
5
5
  private random;
6
- constructor(classLabels: Array<string>, seed: number);
6
+ private seed;
7
+ constructor(classLabelsOrFileName: Array<string> | string, seed?: number);
7
8
  /**
8
9
  * The predict method gets an Instance as an input and retrieves the possible class labels as an ArrayList. Then selects a
9
10
  * random number as an index and returns the class label at this selected index.
@@ -13,4 +14,5 @@ export declare class RandomModel extends Model {
13
14
  */
14
15
  predict(instance: Instance): string;
15
16
  predictProbability(instance: Instance): Map<string, number>;
17
+ saveTxt(fileName: string): void;
16
18
  }
@@ -4,7 +4,7 @@
4
4
  if (v !== undefined) module.exports = v;
5
5
  }
6
6
  else if (typeof define === "function" && define.amd) {
7
- define(["require", "exports", "./Model", "../Instance/CompositeInstance", "nlptoolkit-util/dist/Random"], factory);
7
+ define(["require", "exports", "./Model", "../Instance/CompositeInstance", "nlptoolkit-util/dist/Random", "nlptoolkit-util/dist/FileContents"], factory);
8
8
  }
9
9
  })(function (require, exports) {
10
10
  "use strict";
@@ -13,11 +13,25 @@
13
13
  const Model_1 = require("./Model");
14
14
  const CompositeInstance_1 = require("../Instance/CompositeInstance");
15
15
  const Random_1 = require("nlptoolkit-util/dist/Random");
16
+ const FileContents_1 = require("nlptoolkit-util/dist/FileContents");
16
17
  class RandomModel extends Model_1.Model {
17
- constructor(classLabels, seed) {
18
+ constructor(classLabelsOrFileName, seed) {
18
19
  super();
19
- this.classLabels = classLabels;
20
- this.random = new Random_1.Random(seed);
20
+ if (classLabelsOrFileName instanceof Array) {
21
+ this.classLabels = classLabelsOrFileName;
22
+ this.random = new Random_1.Random(seed);
23
+ this.seed = seed;
24
+ }
25
+ else {
26
+ let input = new FileContents_1.FileContents(classLabelsOrFileName);
27
+ seed = parseInt(input.readLine());
28
+ this.random = new Random_1.Random(seed);
29
+ let size = parseInt(input.readLine());
30
+ this.classLabels = new Array();
31
+ for (let i = 0; i < size; i++) {
32
+ this.classLabels.push(input.readLine());
33
+ }
34
+ }
21
35
  }
22
36
  /**
23
37
  * The predict method gets an Instance as an input and retrieves the possible class labels as an ArrayList. Then selects a
@@ -46,6 +60,8 @@
46
60
  }
47
61
  return result;
48
62
  }
63
+ saveTxt(fileName) {
64
+ }
49
65
  }
50
66
  exports.RandomModel = RandomModel;
51
67
  });
@@ -1 +1 @@
1
- {"version":3,"file":"RandomModel.js","sourceRoot":"","sources":["../../source/Model/RandomModel.ts"],"names":[],"mappings":";;;;;;;;;;;;IAAA,mCAA8B;IAE9B,qEAAgE;IAChE,wDAAmD;IAEnD,MAAa,WAAY,SAAQ,aAAK;QAKlC,YAAY,WAA0B,EAAE,IAAY;YAChD,KAAK,EAAE,CAAC;YACR,IAAI,CAAC,WAAW,GAAG,WAAW,CAAA;YAC9B,IAAI,CAAC,MAAM,GAAG,IAAI,eAAM,CAAC,IAAI,CAAC,CAAA;QAClC,CAAC;QAED;;;;;;WAMG;QACH,OAAO,CAAC,QAAkB;YACtB,IAAI,CAAC,QAAQ,YAAY,qCAAiB,CAAC,EAAE;gBACzC,IAAI,mBAAmB,GAAwB,QAAS,CAAC,sBAAsB,EAAE,CAAC;gBAClF,IAAI,IAAI,GAAG,mBAAmB,CAAC,MAAM,CAAC;gBACtC,IAAI,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;gBACtC,OAAO,mBAAmB,CAAC,KAAK,CAAC,CAAC;aACrC;iBAAM;gBACH,IAAI,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC;gBACnC,IAAI,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;gBACtC,OAAO,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;aAClC;QACL,CAAC;QAED,kBAAkB,CAAC,QAAkB;YACjC,IAAI,MAAM,GAAG,IAAI,GAAG,EAAkB,CAAC;YACvC,KAAK,IAAI,UAAU,IAAI,IAAI,CAAC,WAAW,EAAC;gBACpC,MAAM,CAAC,GAAG,CAAC,UAAU,EAAE,GAAG,GAAG,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;aACzD;YACD,OAAO,MAAM,CAAC;QAClB,CAAC;KAEJ;IAvCD,kCAuCC"}
1
+ {"version":3,"file":"RandomModel.js","sourceRoot":"","sources":["../../source/Model/RandomModel.ts"],"names":[],"mappings":";;;;;;;;;;;;IAAA,mCAA8B;IAE9B,qEAAgE;IAChE,wDAAmD;IACnD,oEAA+D;IAE/D,MAAa,WAAY,SAAQ,aAAK;QAMlC,YAAY,qBAA6C,EAAE,IAAa;YACpE,KAAK,EAAE,CAAC;YACR,IAAI,qBAAqB,YAAY,KAAK,EAAC;gBACvC,IAAI,CAAC,WAAW,GAAG,qBAAqB,CAAA;gBACxC,IAAI,CAAC,MAAM,GAAG,IAAI,eAAM,CAAC,IAAI,CAAC,CAAA;gBAC9B,IAAI,CAAC,IAAI,GAAG,IAAI,CAAA;aACnB;iBAAM;gBACH,IAAI,KAAK,GAAG,IAAI,2BAAY,CAAC,qBAAqB,CAAC,CAAA;gBACnD,IAAI,GAAG,QAAQ,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAA;gBACjC,IAAI,CAAC,MAAM,GAAG,IAAI,eAAM,CAAC,IAAI,CAAC,CAAA;gBAC9B,IAAI,IAAI,GAAG,QAAQ,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAA;gBACrC,IAAI,CAAC,WAAW,GAAG,IAAI,KAAK,EAAU,CAAA;gBACtC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,EAAE,CAAC,EAAE,EAAC;oBAC1B,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAA;iBAC1C;aACJ;QACL,CAAC;QAED;;;;;;WAMG;QACH,OAAO,CAAC,QAAkB;YACtB,IAAI,CAAC,QAAQ,YAAY,qCAAiB,CAAC,EAAE;gBACzC,IAAI,mBAAmB,GAAwB,QAAS,CAAC,sBAAsB,EAAE,CAAC;gBAClF,IAAI,IAAI,GAAG,mBAAmB,CAAC,MAAM,CAAC;gBACtC,IAAI,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;gBACtC,OAAO,mBAAmB,CAAC,KAAK,CAAC,CAAC;aACrC;iBAAM;gBACH,IAAI,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC;gBACnC,IAAI,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;gBACtC,OAAO,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;aAClC;QACL,CAAC;QAED,kBAAkB,CAAC,QAAkB;YACjC,IAAI,MAAM,GAAG,IAAI,GAAG,EAAkB,CAAC;YACvC,KAAK,IAAI,UAAU,IAAI,IAAI,CAAC,WAAW,EAAC;gBACpC,MAAM,CAAC,GAAG,CAAC,UAAU,EAAE,GAAG,GAAG,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;aACzD;YACD,OAAO,MAAM,CAAC;QAClB,CAAC;QAED,OAAO,CAAC,QAAgB;QACxB,CAAC;KAEJ;IAvDD,kCAuDC"}
@@ -6,9 +6,9 @@ export declare class TreeEnsembleModel extends Model {
6
6
  /**
7
7
  * A constructor which sets the {@link Array} of {@link DecisionTree} with given input.
8
8
  *
9
- * @param forest An {@link Array} of {@link DecisionTree}.
9
+ * @param forestOrFileName An {@link Array} of {@link DecisionTree}.
10
10
  */
11
- constructor(forest: Array<DecisionTree>);
11
+ constructor(forestOrFileName: Array<DecisionTree> | string);
12
12
  /**
13
13
  * The predict method takes an {@link Instance} as an input and loops through the {@link ArrayList} of {@link DecisionTree}s.
14
14
  * Makes prediction for the items of that ArrayList and returns the maximum item of that ArrayList.
@@ -18,4 +18,5 @@ export declare class TreeEnsembleModel extends Model {
18
18
  */
19
19
  predict(instance: Instance): string;
20
20
  predictProbability(instance: Instance): Map<string, number>;
21
+ saveTxt(fileName: string): void;
21
22
  }
@@ -4,23 +4,36 @@
4
4
  if (v !== undefined) module.exports = v;
5
5
  }
6
6
  else if (typeof define === "function" && define.amd) {
7
- define(["require", "exports", "./Model", "nlptoolkit-math/dist/DiscreteDistribution"], factory);
7
+ define(["require", "exports", "./Model", "./DecisionTree/DecisionTree", "nlptoolkit-math/dist/DiscreteDistribution", "nlptoolkit-util/dist/FileContents", "./DecisionTree/DecisionNode"], factory);
8
8
  }
9
9
  })(function (require, exports) {
10
10
  "use strict";
11
11
  Object.defineProperty(exports, "__esModule", { value: true });
12
12
  exports.TreeEnsembleModel = void 0;
13
13
  const Model_1 = require("./Model");
14
+ const DecisionTree_1 = require("./DecisionTree/DecisionTree");
14
15
  const DiscreteDistribution_1 = require("nlptoolkit-math/dist/DiscreteDistribution");
16
+ const FileContents_1 = require("nlptoolkit-util/dist/FileContents");
17
+ const DecisionNode_1 = require("./DecisionTree/DecisionNode");
15
18
  class TreeEnsembleModel extends Model_1.Model {
16
19
  /**
17
20
  * A constructor which sets the {@link Array} of {@link DecisionTree} with given input.
18
21
  *
19
- * @param forest An {@link Array} of {@link DecisionTree}.
22
+ * @param forestOrFileName An {@link Array} of {@link DecisionTree}.
20
23
  */
21
- constructor(forest) {
24
+ constructor(forestOrFileName) {
22
25
  super();
23
- this.forest = forest;
26
+ if (forestOrFileName instanceof Array) {
27
+ this.forest = forestOrFileName;
28
+ }
29
+ else {
30
+ let input = new FileContents_1.FileContents(forestOrFileName);
31
+ let numberOfTrees = parseInt(input.readLine());
32
+ this.forest = new Array();
33
+ for (let i = 0; i < numberOfTrees; i++) {
34
+ this.forest.push(new DecisionTree_1.DecisionTree(new DecisionNode_1.DecisionNode(input)));
35
+ }
36
+ }
24
37
  }
25
38
  /**
26
39
  * The predict method takes an {@link Instance} as an input and loops through the {@link ArrayList} of {@link DecisionTree}s.
@@ -43,6 +56,8 @@
43
56
  }
44
57
  return distribution.getProbabilityDistribution();
45
58
  }
59
+ saveTxt(fileName) {
60
+ }
46
61
  }
47
62
  exports.TreeEnsembleModel = TreeEnsembleModel;
48
63
  });
@@ -1 +1 @@
1
- {"version":3,"file":"TreeEnsembleModel.js","sourceRoot":"","sources":["../../source/Model/TreeEnsembleModel.ts"],"names":[],"mappings":";;;;;;;;;;;;IAAA,mCAA8B;IAG9B,oFAA+E;IAE/E,MAAa,iBAAkB,SAAQ,aAAK;QAIxC;;;;WAIG;QACH,YAAY,MAA2B;YACnC,KAAK,EAAE,CAAC;YACR,IAAI,CAAC,MAAM,GAAG,MAAM,CAAA;QACxB,CAAC;QAED;;;;;;WAMG;QACH,OAAO,CAAC,QAAkB;YACtB,IAAI,YAAY,GAAG,IAAI,2CAAoB,EAAE,CAAC;YAC9C,KAAK,IAAI,IAAI,IAAI,IAAI,CAAC,MAAM,EAAE;gBAC1B,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC;aAChD;YACD,OAAO,YAAY,CAAC,UAAU,EAAE,CAAC;QACrC,CAAC;QAED,kBAAkB,CAAC,QAAkB;YACjC,IAAI,YAAY,GAAG,IAAI,2CAAoB,EAAE,CAAC;YAC9C,KAAK,IAAI,IAAI,IAAI,IAAI,CAAC,MAAM,EAAE;gBAC1B,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC;aAChD;YACD,OAAO,YAAY,CAAC,0BAA0B,EAAE,CAAC;QACrD,CAAC;KAEJ;IArCD,8CAqCC"}
1
+ {"version":3,"file":"TreeEnsembleModel.js","sourceRoot":"","sources":["../../source/Model/TreeEnsembleModel.ts"],"names":[],"mappings":";;;;;;;;;;;;IAAA,mCAA8B;IAE9B,8DAAyD;IACzD,oFAA+E;IAC/E,oEAA+D;IAC/D,8DAAyD;IAEzD,MAAa,iBAAkB,SAAQ,aAAK;QAIxC;;;;WAIG;QACH,YAAY,gBAA8C;YACtD,KAAK,EAAE,CAAC;YACR,IAAI,gBAAgB,YAAY,KAAK,EAAC;gBAClC,IAAI,CAAC,MAAM,GAAG,gBAAgB,CAAA;aACjC;iBAAM;gBACH,IAAI,KAAK,GAAG,IAAI,2BAAY,CAAC,gBAAgB,CAAC,CAAA;gBAC9C,IAAI,aAAa,GAAG,QAAQ,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAA;gBAC9C,IAAI,CAAC,MAAM,GAAG,IAAI,KAAK,EAAgB,CAAA;gBACvC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,aAAa,EAAE,CAAC,EAAE,EAAC;oBACnC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,2BAAY,CAAC,IAAI,2BAAY,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA;iBAC9D;aACJ;QACL,CAAC;QAED;;;;;;WAMG;QACH,OAAO,CAAC,QAAkB;YACtB,IAAI,YAAY,GAAG,IAAI,2CAAoB,EAAE,CAAC;YAC9C,KAAK,IAAI,IAAI,IAAI,IAAI,CAAC,MAAM,EAAE;gBAC1B,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC;aAChD;YACD,OAAO,YAAY,CAAC,UAAU,EAAE,CAAC;QACrC,CAAC;QAED,kBAAkB,CAAC,QAAkB;YACjC,IAAI,YAAY,GAAG,IAAI,2CAAoB,EAAE,CAAC;YAC9C,KAAK,IAAI,IAAI,IAAI,IAAI,CAAC,MAAM,EAAE;gBAC1B,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC;aAChD;YACD,OAAO,YAAY,CAAC,0BAA0B,EAAE,CAAC;QACrD,CAAC;QAED,OAAO,CAAC,QAAgB;QACxB,CAAC;KAEJ;IAjDD,8CAiDC"}