nlptoolkit-classification 1.0.8 → 1.0.9

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 (178) hide show
  1. package/dist/Attribute/Attribute.js +6 -16
  2. package/dist/Attribute/Attribute.js.map +1 -1
  3. package/dist/Attribute/AttributeType.js +22 -32
  4. package/dist/Attribute/AttributeType.js.map +1 -1
  5. package/dist/Attribute/BinaryAttribute.js +14 -24
  6. package/dist/Attribute/BinaryAttribute.js.map +1 -1
  7. package/dist/Attribute/ContinuousAttribute.js +46 -55
  8. package/dist/Attribute/ContinuousAttribute.js.map +1 -1
  9. package/dist/Attribute/DiscreteAttribute.js +38 -48
  10. package/dist/Attribute/DiscreteAttribute.js.map +1 -1
  11. package/dist/Attribute/DiscreteIndexedAttribute.js +47 -55
  12. package/dist/Attribute/DiscreteIndexedAttribute.js.map +1 -1
  13. package/dist/DataSet/DataDefinition.js +115 -123
  14. package/dist/DataSet/DataDefinition.js.map +1 -1
  15. package/dist/DataSet/DataSet.js +268 -245
  16. package/dist/DataSet/DataSet.js.map +1 -1
  17. package/dist/DistanceMetric/DistanceMetric.js +2 -12
  18. package/dist/DistanceMetric/EuclidianDistance.js +27 -37
  19. package/dist/DistanceMetric/EuclidianDistance.js.map +1 -1
  20. package/dist/DistanceMetric/MahalanobisDistance.js +27 -36
  21. package/dist/DistanceMetric/MahalanobisDistance.js.map +1 -1
  22. package/dist/Experiment/BootstrapRun.js +31 -40
  23. package/dist/Experiment/BootstrapRun.js.map +1 -1
  24. package/dist/Experiment/Experiment.js +46 -53
  25. package/dist/Experiment/Experiment.js.map +1 -1
  26. package/dist/Experiment/KFoldRun.js +45 -54
  27. package/dist/Experiment/KFoldRun.js.map +1 -1
  28. package/dist/Experiment/KFoldRunSeparateTest.js +48 -58
  29. package/dist/Experiment/KFoldRunSeparateTest.js.map +1 -1
  30. package/dist/Experiment/MultipleRun.js +2 -12
  31. package/dist/Experiment/MxKFoldRun.js +31 -40
  32. package/dist/Experiment/MxKFoldRun.js.map +1 -1
  33. package/dist/Experiment/MxKFoldRunSeparateTest.js +35 -44
  34. package/dist/Experiment/MxKFoldRunSeparateTest.js.map +1 -1
  35. package/dist/Experiment/SingleRun.js +2 -12
  36. package/dist/Experiment/SingleRunWithK.js +39 -48
  37. package/dist/Experiment/SingleRunWithK.js.map +1 -1
  38. package/dist/Experiment/StratifiedKFoldRun.js +26 -36
  39. package/dist/Experiment/StratifiedKFoldRun.js.map +1 -1
  40. package/dist/Experiment/StratifiedKFoldRunSeparateTest.js +30 -40
  41. package/dist/Experiment/StratifiedKFoldRunSeparateTest.js.map +1 -1
  42. package/dist/Experiment/StratifiedMxKFoldRun.js +29 -39
  43. package/dist/Experiment/StratifiedMxKFoldRun.js.map +1 -1
  44. package/dist/Experiment/StratifiedMxKFoldRunSeparateTest.js +34 -43
  45. package/dist/Experiment/StratifiedMxKFoldRunSeparateTest.js.map +1 -1
  46. package/dist/Experiment/StratifiedSingleRunWithK.js +27 -36
  47. package/dist/Experiment/StratifiedSingleRunWithK.js.map +1 -1
  48. package/dist/FeatureSelection/BackwardSelection.js +26 -36
  49. package/dist/FeatureSelection/BackwardSelection.js.map +1 -1
  50. package/dist/FeatureSelection/FeatureSubSet.js +72 -82
  51. package/dist/FeatureSelection/FeatureSubSet.js.map +1 -1
  52. package/dist/FeatureSelection/FloatingSelection.js +25 -35
  53. package/dist/FeatureSelection/FloatingSelection.js.map +1 -1
  54. package/dist/FeatureSelection/ForwardSelection.js +25 -35
  55. package/dist/FeatureSelection/ForwardSelection.js.map +1 -1
  56. package/dist/FeatureSelection/SubSetSelection.js +69 -78
  57. package/dist/FeatureSelection/SubSetSelection.js.map +1 -1
  58. package/dist/Filter/DiscreteToContinuous.js +50 -60
  59. package/dist/Filter/DiscreteToContinuous.js.map +1 -1
  60. package/dist/Filter/DiscreteToIndexed.js +40 -50
  61. package/dist/Filter/DiscreteToIndexed.js.map +1 -1
  62. package/dist/Filter/FeatureFilter.js +23 -32
  63. package/dist/Filter/FeatureFilter.js.map +1 -1
  64. package/dist/Filter/LaryFilter.js +46 -55
  65. package/dist/Filter/LaryFilter.js.map +1 -1
  66. package/dist/Filter/LaryToBinary.js +48 -58
  67. package/dist/Filter/LaryToBinary.js.map +1 -1
  68. package/dist/Filter/Normalize.js +33 -41
  69. package/dist/Filter/Normalize.js.map +1 -1
  70. package/dist/Filter/Pca.js +86 -96
  71. package/dist/Filter/Pca.js.map +1 -1
  72. package/dist/Filter/TrainedFeatureFilter.js +14 -24
  73. package/dist/Filter/TrainedFeatureFilter.js.map +1 -1
  74. package/dist/Instance/CompositeInstance.js +46 -56
  75. package/dist/Instance/CompositeInstance.js.map +1 -1
  76. package/dist/Instance/Instance.js +145 -154
  77. package/dist/Instance/Instance.js.map +1 -1
  78. package/dist/InstanceList/InstanceList.js +466 -443
  79. package/dist/InstanceList/InstanceList.js.map +1 -1
  80. package/dist/InstanceList/InstanceListOfSameClass.js +23 -32
  81. package/dist/InstanceList/InstanceListOfSameClass.js.map +1 -1
  82. package/dist/InstanceList/Partition.js +167 -177
  83. package/dist/InstanceList/Partition.js.map +1 -1
  84. package/dist/Model/DecisionTree/DecisionCondition.js +71 -80
  85. package/dist/Model/DecisionTree/DecisionCondition.js.map +1 -1
  86. package/dist/Model/DecisionTree/DecisionNode.js +302 -311
  87. package/dist/Model/DecisionTree/DecisionNode.js.map +1 -1
  88. package/dist/Model/DecisionTree/DecisionStump.js +22 -32
  89. package/dist/Model/DecisionTree/DecisionStump.js.map +1 -1
  90. package/dist/Model/DecisionTree/DecisionTree.js +89 -98
  91. package/dist/Model/DecisionTree/DecisionTree.js.map +1 -1
  92. package/dist/Model/DummyModel.js +64 -73
  93. package/dist/Model/DummyModel.js.map +1 -1
  94. package/dist/Model/Ensemble/BaggingModel.js +34 -44
  95. package/dist/Model/Ensemble/BaggingModel.js.map +1 -1
  96. package/dist/Model/Ensemble/RandomForestModel.js +31 -41
  97. package/dist/Model/Ensemble/RandomForestModel.js.map +1 -1
  98. package/dist/Model/Ensemble/TreeEnsembleModel.js +55 -64
  99. package/dist/Model/Ensemble/TreeEnsembleModel.js.map +1 -1
  100. package/dist/Model/Model.js +130 -140
  101. package/dist/Model/Model.js.map +1 -1
  102. package/dist/Model/NeuralNetwork/DeepNetworkModel.js +162 -169
  103. package/dist/Model/NeuralNetwork/DeepNetworkModel.js.map +1 -1
  104. package/dist/Model/NeuralNetwork/LinearPerceptronModel.js +69 -78
  105. package/dist/Model/NeuralNetwork/LinearPerceptronModel.js.map +1 -1
  106. package/dist/Model/NeuralNetwork/MultiLayerPerceptronModel.js +112 -120
  107. package/dist/Model/NeuralNetwork/MultiLayerPerceptronModel.js.map +1 -1
  108. package/dist/Model/NeuralNetwork/NeuralNetworkModel.js +197 -201
  109. package/dist/Model/NeuralNetwork/NeuralNetworkModel.js.map +1 -1
  110. package/dist/Model/NonParametric/KnnInstance.js +21 -29
  111. package/dist/Model/NonParametric/KnnInstance.js.map +1 -1
  112. package/dist/Model/NonParametric/KnnModel.js +101 -108
  113. package/dist/Model/NonParametric/KnnModel.js.map +1 -1
  114. package/dist/Model/Parametric/GaussianModel.js +82 -91
  115. package/dist/Model/Parametric/GaussianModel.js.map +1 -1
  116. package/dist/Model/Parametric/KMeansModel.js +59 -67
  117. package/dist/Model/Parametric/KMeansModel.js.map +1 -1
  118. package/dist/Model/Parametric/LdaModel.js +83 -91
  119. package/dist/Model/Parametric/LdaModel.js.map +1 -1
  120. package/dist/Model/Parametric/NaiveBayesModel.js +119 -132
  121. package/dist/Model/Parametric/NaiveBayesModel.js.map +1 -1
  122. package/dist/Model/Parametric/QdaModel.js +70 -79
  123. package/dist/Model/Parametric/QdaModel.js.map +1 -1
  124. package/dist/Model/RandomModel.js +85 -92
  125. package/dist/Model/RandomModel.js.map +1 -1
  126. package/dist/Model/ValidatedModel.js +21 -31
  127. package/dist/Model/ValidatedModel.js.map +1 -1
  128. package/dist/Parameter/ActivationFunction.js +9 -19
  129. package/dist/Parameter/ActivationFunction.js.map +1 -1
  130. package/dist/Parameter/BaggingParameter.js +24 -33
  131. package/dist/Parameter/BaggingParameter.js.map +1 -1
  132. package/dist/Parameter/C45Parameter.js +34 -42
  133. package/dist/Parameter/C45Parameter.js.map +1 -1
  134. package/dist/Parameter/DeepNetworkParameter.js +48 -56
  135. package/dist/Parameter/DeepNetworkParameter.js.map +1 -1
  136. package/dist/Parameter/KMeansParameter.js +29 -38
  137. package/dist/Parameter/KMeansParameter.js.map +1 -1
  138. package/dist/Parameter/KnnParameter.js +25 -34
  139. package/dist/Parameter/KnnParameter.js.map +1 -1
  140. package/dist/Parameter/LinearPerceptronParameter.js +56 -62
  141. package/dist/Parameter/LinearPerceptronParameter.js.map +1 -1
  142. package/dist/Parameter/MultiLayerPerceptronParameter.js +38 -46
  143. package/dist/Parameter/MultiLayerPerceptronParameter.js.map +1 -1
  144. package/dist/Parameter/Parameter.js +21 -30
  145. package/dist/Parameter/Parameter.js.map +1 -1
  146. package/dist/Parameter/RandomForestParameter.js +25 -34
  147. package/dist/Parameter/RandomForestParameter.js.map +1 -1
  148. package/dist/Performance/ClassificationPerformance.js +24 -33
  149. package/dist/Performance/ClassificationPerformance.js.map +1 -1
  150. package/dist/Performance/ConfusionMatrix.js +149 -158
  151. package/dist/Performance/ConfusionMatrix.js.map +1 -1
  152. package/dist/Performance/DetailedClassificationPerformance.js +23 -32
  153. package/dist/Performance/DetailedClassificationPerformance.js.map +1 -1
  154. package/dist/Performance/ExperimentPerformance.js +184 -161
  155. package/dist/Performance/ExperimentPerformance.js.map +1 -1
  156. package/dist/Performance/Performance.js +21 -30
  157. package/dist/Performance/Performance.js.map +1 -1
  158. package/dist/StatisticalTest/Combined5x2F.js +41 -51
  159. package/dist/StatisticalTest/Combined5x2F.js.map +1 -1
  160. package/dist/StatisticalTest/Combined5x2t.js +42 -52
  161. package/dist/StatisticalTest/Combined5x2t.js.map +1 -1
  162. package/dist/StatisticalTest/Paired5x2t.js +40 -50
  163. package/dist/StatisticalTest/Paired5x2t.js.map +1 -1
  164. package/dist/StatisticalTest/PairedTest.js +31 -41
  165. package/dist/StatisticalTest/PairedTest.js.map +1 -1
  166. package/dist/StatisticalTest/Pairedt.js +38 -48
  167. package/dist/StatisticalTest/Pairedt.js.map +1 -1
  168. package/dist/StatisticalTest/Sign.js +50 -60
  169. package/dist/StatisticalTest/Sign.js.map +1 -1
  170. package/dist/StatisticalTest/StatisticalTestResult.js +65 -73
  171. package/dist/StatisticalTest/StatisticalTestResult.js.map +1 -1
  172. package/dist/StatisticalTest/StatisticalTestResultType.js +11 -21
  173. package/dist/StatisticalTest/StatisticalTestResultType.js.map +1 -1
  174. package/dist/index.js +95 -101
  175. package/dist/index.js.map +1 -1
  176. package/package.json +7 -6
  177. package/tsconfig.json +4 -3
  178. package/source/tsconfig.json +0 -13
@@ -1,127 +1,119 @@
1
- (function (factory) {
2
- if (typeof module === "object" && typeof module.exports === "object") {
3
- var v = factory(require, exports);
4
- if (v !== undefined) module.exports = v;
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.MultiLayerPerceptronModel = void 0;
4
+ const LinearPerceptronModel_1 = require("./LinearPerceptronModel");
5
+ const Matrix_1 = require("nlptoolkit-math/dist/Matrix");
6
+ const ActivationFunction_1 = require("../../Parameter/ActivationFunction");
7
+ const ClassificationPerformance_1 = require("../../Performance/ClassificationPerformance");
8
+ const Vector_1 = require("nlptoolkit-math/dist/Vector");
9
+ const Random_1 = require("nlptoolkit-util/dist/Random");
10
+ const FileContents_1 = require("nlptoolkit-util/dist/FileContents");
11
+ const Partition_1 = require("../../InstanceList/Partition");
12
+ class MultiLayerPerceptronModel extends LinearPerceptronModel_1.LinearPerceptronModel {
13
+ V;
14
+ activationFunction;
15
+ /**
16
+ * The allocateWeights method allocates layers' weights of Matrix W and V.
17
+ *
18
+ * @param H Integer value for weights.
19
+ * @param random Random function to set weights.
20
+ */
21
+ allocateWeights(H, random) {
22
+ this.W = this.allocateLayerWeights(H, this.d + 1, random);
23
+ this.V = this.allocateLayerWeights(this.K, H + 1, random);
5
24
  }
6
- else if (typeof define === "function" && define.amd) {
7
- define(["require", "exports", "./LinearPerceptronModel", "nlptoolkit-math/dist/Matrix", "../../Parameter/ActivationFunction", "../../Performance/ClassificationPerformance", "nlptoolkit-math/dist/Vector", "nlptoolkit-util/dist/Random", "nlptoolkit-util/dist/FileContents", "../../InstanceList/Partition"], factory);
25
+ /**
26
+ * Loads a multi-layer perceptron model from an input model file.
27
+ * @param fileName Model file name.
28
+ */
29
+ constructor2(fileName) {
30
+ let input = new FileContents_1.FileContents(fileName);
31
+ this.loadClassLabels(input);
32
+ this.W = this.loadMatrix(input);
33
+ this.V = this.loadMatrix(input);
34
+ this.activationFunction = this.loadActivationFunction(input);
8
35
  }
9
- })(function (require, exports) {
10
- "use strict";
11
- Object.defineProperty(exports, "__esModule", { value: true });
12
- exports.MultiLayerPerceptronModel = void 0;
13
- const LinearPerceptronModel_1 = require("./LinearPerceptronModel");
14
- const Matrix_1 = require("nlptoolkit-math/dist/Matrix");
15
- const ActivationFunction_1 = require("../../Parameter/ActivationFunction");
16
- const ClassificationPerformance_1 = require("../../Performance/ClassificationPerformance");
17
- const Vector_1 = require("nlptoolkit-math/dist/Vector");
18
- const Random_1 = require("nlptoolkit-util/dist/Random");
19
- const FileContents_1 = require("nlptoolkit-util/dist/FileContents");
20
- const Partition_1 = require("../../InstanceList/Partition");
21
- class MultiLayerPerceptronModel extends LinearPerceptronModel_1.LinearPerceptronModel {
22
- /**
23
- * The allocateWeights method allocates layers' weights of Matrix W and V.
24
- *
25
- * @param H Integer value for weights.
26
- * @param random Random function to set weights.
27
- */
28
- allocateWeights(H, random) {
29
- this.W = this.allocateLayerWeights(H, this.d + 1, random);
30
- this.V = this.allocateLayerWeights(this.K, H + 1, random);
31
- }
32
- /**
33
- * Loads a multi-layer perceptron model from an input model file.
34
- * @param fileName Model file name.
35
- */
36
- constructor2(fileName) {
37
- let input = new FileContents_1.FileContents(fileName);
38
- this.loadClassLabels(input);
39
- this.W = this.loadMatrix(input);
40
- this.V = this.loadMatrix(input);
41
- this.activationFunction = this.loadActivationFunction(input);
42
- }
43
- /**
44
- * The calculateOutput method calculates the forward single hidden layer by using Matrices W and V.
45
- */
46
- calculateOutput() {
47
- this.calculateForwardSingleHiddenLayer(this.W, this.V, this.activationFunction);
48
- }
49
- saveTxt(fileName) {
50
- }
51
- /**
52
- * Training algorithm for the multilayer perceptron algorithm. 20 percent of the data is separated as cross-validation
53
- * data used for selecting the best weights. 80 percent of the data is used for training the multilayer perceptron with
54
- * gradient descent.
55
- *
56
- * @param train Training data given to the algorithm
57
- * @param params Parameters of the multilayer perceptron.
58
- */
59
- train(train, params) {
60
- this.initialize(train);
61
- let parameters = params;
62
- let partition = new Partition_1.Partition(train, parameters.getCrossValidationRatio(), true);
63
- let trainSet = partition.get(1);
64
- let validationSet = partition.get(1);
65
- this.activationFunction = parameters.getActivationFunction();
66
- this.allocateWeights(parameters.getHiddenNodes(), new Random_1.Random(parameters.getSeed()));
67
- let bestW = this.W.clone();
68
- let bestV = this.V.clone();
69
- let bestClassificationPerformance = new ClassificationPerformance_1.ClassificationPerformance(0.0);
70
- let epoch = parameters.getEpoch();
71
- let learningRate = parameters.getLearningRate();
72
- for (let i = 0; i < epoch; i++) {
73
- trainSet.shuffle(new Random_1.Random(parameters.getSeed()));
74
- for (let j = 0; j < trainSet.size(); j++) {
75
- this.createInputVector(trainSet.get(j));
76
- let hidden = this.calculateHidden(this.x, this.W, this.activationFunction);
77
- let hiddenBiased = hidden.biased();
78
- let rMinusY = this.calculateRMinusY(trainSet.get(j), hiddenBiased, this.V);
79
- let deltaV = new Matrix_1.Matrix(rMinusY, hiddenBiased);
80
- let tmph = this.V.multiplyWithVectorFromLeft(rMinusY);
81
- tmph.remove(0);
82
- let activationDerivative;
83
- switch (this.activationFunction) {
84
- case ActivationFunction_1.ActivationFunction.SIGMOID:
85
- default:
86
- let oneMinusHidden = this.calculateOneMinusHidden(hidden);
87
- activationDerivative = oneMinusHidden.elementProduct(hidden);
88
- break;
89
- case ActivationFunction_1.ActivationFunction.TANH:
90
- let one = new Vector_1.Vector(hidden.size(), 1.0);
91
- hidden.tanh();
92
- activationDerivative = one.difference(hidden.elementProduct(hidden));
93
- break;
94
- case ActivationFunction_1.ActivationFunction.RELU:
95
- hidden.reluDerivative();
96
- activationDerivative = hidden;
97
- break;
98
- }
99
- let tmpHidden = tmph.elementProduct(activationDerivative);
100
- let deltaW = new Matrix_1.Matrix(tmpHidden, this.x);
101
- deltaV.multiplyWithConstant(learningRate);
102
- this.V.add(deltaV);
103
- deltaW.multiplyWithConstant(learningRate);
104
- this.W.add(deltaW);
105
- }
106
- let currentClassificationPerformance = this.testClassifier(validationSet);
107
- if (currentClassificationPerformance.getAccuracy() > bestClassificationPerformance.getAccuracy()) {
108
- bestClassificationPerformance = currentClassificationPerformance;
109
- bestW = this.W.clone();
110
- bestV = this.V.clone();
36
+ /**
37
+ * The calculateOutput method calculates the forward single hidden layer by using Matrices W and V.
38
+ */
39
+ calculateOutput() {
40
+ this.calculateForwardSingleHiddenLayer(this.W, this.V, this.activationFunction);
41
+ }
42
+ saveTxt(fileName) {
43
+ }
44
+ /**
45
+ * Training algorithm for the multilayer perceptron algorithm. 20 percent of the data is separated as cross-validation
46
+ * data used for selecting the best weights. 80 percent of the data is used for training the multilayer perceptron with
47
+ * gradient descent.
48
+ *
49
+ * @param train Training data given to the algorithm
50
+ * @param params Parameters of the multilayer perceptron.
51
+ */
52
+ train(train, params) {
53
+ this.initialize(train);
54
+ let parameters = params;
55
+ let partition = new Partition_1.Partition(train, parameters.getCrossValidationRatio(), true);
56
+ let trainSet = partition.get(1);
57
+ let validationSet = partition.get(1);
58
+ this.activationFunction = parameters.getActivationFunction();
59
+ this.allocateWeights(parameters.getHiddenNodes(), new Random_1.Random(parameters.getSeed()));
60
+ let bestW = this.W.clone();
61
+ let bestV = this.V.clone();
62
+ let bestClassificationPerformance = new ClassificationPerformance_1.ClassificationPerformance(0.0);
63
+ let epoch = parameters.getEpoch();
64
+ let learningRate = parameters.getLearningRate();
65
+ for (let i = 0; i < epoch; i++) {
66
+ trainSet.shuffle(new Random_1.Random(parameters.getSeed()));
67
+ for (let j = 0; j < trainSet.size(); j++) {
68
+ this.createInputVector(trainSet.get(j));
69
+ let hidden = this.calculateHidden(this.x, this.W, this.activationFunction);
70
+ let hiddenBiased = hidden.biased();
71
+ let rMinusY = this.calculateRMinusY(trainSet.get(j), hiddenBiased, this.V);
72
+ let deltaV = new Matrix_1.Matrix(rMinusY, hiddenBiased);
73
+ let tmph = this.V.multiplyWithVectorFromLeft(rMinusY);
74
+ tmph.remove(0);
75
+ let activationDerivative;
76
+ switch (this.activationFunction) {
77
+ case ActivationFunction_1.ActivationFunction.SIGMOID:
78
+ default:
79
+ let oneMinusHidden = this.calculateOneMinusHidden(hidden);
80
+ activationDerivative = oneMinusHidden.elementProduct(hidden);
81
+ break;
82
+ case ActivationFunction_1.ActivationFunction.TANH:
83
+ let one = new Vector_1.Vector(hidden.size(), 1.0);
84
+ hidden.tanh();
85
+ activationDerivative = one.difference(hidden.elementProduct(hidden));
86
+ break;
87
+ case ActivationFunction_1.ActivationFunction.RELU:
88
+ hidden.reluDerivative();
89
+ activationDerivative = hidden;
90
+ break;
111
91
  }
112
- learningRate *= parameters.getEtaDecrease();
92
+ let tmpHidden = tmph.elementProduct(activationDerivative);
93
+ let deltaW = new Matrix_1.Matrix(tmpHidden, this.x);
94
+ deltaV.multiplyWithConstant(learningRate);
95
+ this.V.add(deltaV);
96
+ deltaW.multiplyWithConstant(learningRate);
97
+ this.W.add(deltaW);
113
98
  }
114
- this.W = bestW;
115
- this.V = bestV;
116
- }
117
- /**
118
- * Loads the multi-layer perceptron model from an input file.
119
- * @param fileName File name of the multi-layer perceptron model.
120
- */
121
- loadModel(fileName) {
122
- this.constructor2(fileName);
99
+ let currentClassificationPerformance = this.testClassifier(validationSet);
100
+ if (currentClassificationPerformance.getAccuracy() > bestClassificationPerformance.getAccuracy()) {
101
+ bestClassificationPerformance = currentClassificationPerformance;
102
+ bestW = this.W.clone();
103
+ bestV = this.V.clone();
104
+ }
105
+ learningRate *= parameters.getEtaDecrease();
123
106
  }
107
+ this.W = bestW;
108
+ this.V = bestV;
109
+ }
110
+ /**
111
+ * Loads the multi-layer perceptron model from an input file.
112
+ * @param fileName File name of the multi-layer perceptron model.
113
+ */
114
+ loadModel(fileName) {
115
+ this.constructor2(fileName);
124
116
  }
125
- exports.MultiLayerPerceptronModel = MultiLayerPerceptronModel;
126
- });
117
+ }
118
+ exports.MultiLayerPerceptronModel = MultiLayerPerceptronModel;
127
119
  //# sourceMappingURL=MultiLayerPerceptronModel.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"MultiLayerPerceptronModel.js","sourceRoot":"","sources":["../../../source/Model/NeuralNetwork/MultiLayerPerceptronModel.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"MultiLayerPerceptronModel.js","sourceRoot":"","sources":["../../../source/Model/NeuralNetwork/MultiLayerPerceptronModel.ts"],"names":[],"mappings":"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"}