nlptoolkit-classification 1.0.6 → 1.0.8

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 (310) hide show
  1. package/README.md +1 -0
  2. package/dist/Attribute/DiscreteAttribute.d.ts +1 -1
  3. package/dist/Attribute/DiscreteAttribute.js.map +1 -1
  4. package/dist/Attribute/DiscreteIndexedAttribute.d.ts +2 -2
  5. package/dist/DataSet/DataDefinition.d.ts +11 -0
  6. package/dist/DataSet/DataDefinition.js +11 -0
  7. package/dist/DataSet/DataDefinition.js.map +1 -1
  8. package/dist/Experiment/BootstrapRun.js +2 -2
  9. package/dist/Experiment/BootstrapRun.js.map +1 -1
  10. package/dist/Experiment/Experiment.d.ts +7 -7
  11. package/dist/Experiment/Experiment.js +6 -6
  12. package/dist/Experiment/Experiment.js.map +1 -1
  13. package/dist/Experiment/KFoldRun.d.ts +17 -2
  14. package/dist/Experiment/KFoldRun.js +19 -4
  15. package/dist/Experiment/KFoldRun.js.map +1 -1
  16. package/dist/Experiment/KFoldRunSeparateTest.d.ts +13 -2
  17. package/dist/Experiment/KFoldRunSeparateTest.js +15 -4
  18. package/dist/Experiment/KFoldRunSeparateTest.js.map +1 -1
  19. package/dist/Experiment/MxKFoldRun.js +1 -1
  20. package/dist/Experiment/MxKFoldRun.js.map +1 -1
  21. package/dist/Experiment/MxKFoldRunSeparateTest.js +1 -1
  22. package/dist/Experiment/MxKFoldRunSeparateTest.js.map +1 -1
  23. package/dist/Experiment/SingleRunWithK.d.ts +18 -3
  24. package/dist/Experiment/SingleRunWithK.js +18 -3
  25. package/dist/Experiment/SingleRunWithK.js.map +1 -1
  26. package/dist/Experiment/StratifiedKFoldRun.js +1 -1
  27. package/dist/Experiment/StratifiedKFoldRun.js.map +1 -1
  28. package/dist/Experiment/StratifiedKFoldRunSeparateTest.js +1 -1
  29. package/dist/Experiment/StratifiedKFoldRunSeparateTest.js.map +1 -1
  30. package/dist/Experiment/StratifiedMxKFoldRun.js +1 -1
  31. package/dist/Experiment/StratifiedMxKFoldRun.js.map +1 -1
  32. package/dist/Experiment/StratifiedMxKFoldRunSeparateTest.js +3 -3
  33. package/dist/Experiment/StratifiedMxKFoldRunSeparateTest.js.map +1 -1
  34. package/dist/Experiment/StratifiedSingleRunWithK.js +1 -1
  35. package/dist/Experiment/StratifiedSingleRunWithK.js.map +1 -1
  36. package/dist/Filter/LaryFilter.d.ts +1 -1
  37. package/dist/Filter/LaryFilter.js +1 -1
  38. package/dist/Filter/TrainedFeatureFilter.d.ts +1 -1
  39. package/dist/Filter/TrainedFeatureFilter.js +1 -1
  40. package/dist/InstanceList/Partition.d.ts +45 -0
  41. package/dist/InstanceList/Partition.js +125 -70
  42. package/dist/InstanceList/Partition.js.map +1 -1
  43. package/dist/Model/DecisionTree/DecisionCondition.d.ts +8 -0
  44. package/dist/Model/DecisionTree/DecisionCondition.js +8 -0
  45. package/dist/Model/DecisionTree/DecisionCondition.js.map +1 -1
  46. package/dist/Model/DecisionTree/DecisionNode.d.ts +39 -1
  47. package/dist/Model/DecisionTree/DecisionNode.js +64 -22
  48. package/dist/Model/DecisionTree/DecisionNode.js.map +1 -1
  49. package/dist/Model/DecisionTree/DecisionStump.d.ts +17 -0
  50. package/dist/{Classifier/C45Stump.js → Model/DecisionTree/DecisionStump.js} +13 -10
  51. package/dist/Model/DecisionTree/DecisionStump.js.map +1 -0
  52. package/dist/Model/DecisionTree/DecisionTree.d.ts +24 -9
  53. package/dist/Model/DecisionTree/DecisionTree.js +39 -16
  54. package/dist/Model/DecisionTree/DecisionTree.js.map +1 -1
  55. package/dist/Model/DummyModel.d.ts +28 -3
  56. package/dist/Model/DummyModel.js +36 -23
  57. package/dist/Model/DummyModel.js.map +1 -1
  58. package/dist/{Classifier/Bagging.d.ts → Model/Ensemble/BaggingModel.d.ts} +8 -4
  59. package/dist/{Classifier/Bagging.js → Model/Ensemble/BaggingModel.js} +16 -14
  60. package/dist/Model/Ensemble/BaggingModel.js.map +1 -0
  61. package/dist/{Classifier/RandomForest.d.ts → Model/Ensemble/RandomForestModel.d.ts} +8 -4
  62. package/dist/{Classifier/RandomForest.js → Model/Ensemble/RandomForestModel.js} +16 -14
  63. package/dist/Model/Ensemble/RandomForestModel.js.map +1 -0
  64. package/dist/Model/Ensemble/TreeEnsembleModel.d.ts +32 -0
  65. package/dist/Model/{TreeEnsembleModel.js → Ensemble/TreeEnsembleModel.js} +23 -17
  66. package/dist/Model/Ensemble/TreeEnsembleModel.js.map +1 -0
  67. package/dist/Model/Model.d.ts +52 -0
  68. package/dist/Model/Model.js +84 -1
  69. package/dist/Model/Model.js.map +1 -1
  70. package/dist/Model/NeuralNetwork/DeepNetworkModel.d.ts +47 -0
  71. package/dist/Model/{DeepNetworkModel.js → NeuralNetwork/DeepNetworkModel.js} +55 -55
  72. package/dist/Model/NeuralNetwork/DeepNetworkModel.js.map +1 -0
  73. package/dist/Model/NeuralNetwork/LinearPerceptronModel.d.ts +31 -0
  74. package/dist/Model/NeuralNetwork/LinearPerceptronModel.js +84 -0
  75. package/dist/Model/NeuralNetwork/LinearPerceptronModel.js.map +1 -0
  76. package/dist/Model/NeuralNetwork/MultiLayerPerceptronModel.d.ts +39 -0
  77. package/dist/Model/{MultiLayerPerceptronModel.js → NeuralNetwork/MultiLayerPerceptronModel.js} +41 -37
  78. package/dist/Model/NeuralNetwork/MultiLayerPerceptronModel.js.map +1 -0
  79. package/dist/Model/{NeuralNetworkModel.d.ts → NeuralNetwork/NeuralNetworkModel.d.ts} +19 -5
  80. package/dist/Model/{NeuralNetworkModel.js → NeuralNetwork/NeuralNetworkModel.js} +19 -6
  81. package/dist/Model/NeuralNetwork/NeuralNetworkModel.js.map +1 -0
  82. package/dist/Model/{KnnInstance.d.ts → NonParametric/KnnInstance.d.ts} +1 -1
  83. package/dist/Model/NonParametric/KnnInstance.js.map +1 -0
  84. package/dist/Model/{KnnModel.d.ts → NonParametric/KnnModel.d.ts} +30 -6
  85. package/dist/Model/{KnnModel.js → NonParametric/KnnModel.js} +42 -19
  86. package/dist/Model/NonParametric/KnnModel.js.map +1 -0
  87. package/dist/Model/{GaussianModel.d.ts → Parametric/GaussianModel.d.ts} +20 -2
  88. package/dist/Model/{GaussianModel.js → Parametric/GaussianModel.js} +21 -3
  89. package/dist/Model/Parametric/GaussianModel.js.map +1 -0
  90. package/dist/Model/Parametric/KMeansModel.d.ts +36 -0
  91. package/dist/Model/Parametric/KMeansModel.js +73 -0
  92. package/dist/Model/Parametric/KMeansModel.js.map +1 -0
  93. package/dist/Model/Parametric/LdaModel.d.ts +44 -0
  94. package/dist/Model/Parametric/LdaModel.js +98 -0
  95. package/dist/Model/Parametric/LdaModel.js.map +1 -0
  96. package/dist/Model/{NaiveBayesModel.d.ts → Parametric/NaiveBayesModel.d.ts} +30 -10
  97. package/dist/Model/{NaiveBayesModel.js → Parametric/NaiveBayesModel.js} +64 -27
  98. package/dist/Model/Parametric/NaiveBayesModel.js.map +1 -0
  99. package/dist/Model/Parametric/QdaModel.d.ts +30 -0
  100. package/dist/Model/Parametric/QdaModel.js +84 -0
  101. package/dist/Model/Parametric/QdaModel.js.map +1 -0
  102. package/dist/Model/RandomModel.d.ts +32 -2
  103. package/dist/Model/RandomModel.js +48 -16
  104. package/dist/Model/RandomModel.js.map +1 -1
  105. package/dist/Parameter/C45Parameter.d.ts +2 -2
  106. package/dist/Parameter/DeepNetworkParameter.d.ts +2 -2
  107. package/dist/Parameter/KnnParameter.d.ts +1 -1
  108. package/dist/Parameter/LinearPerceptronParameter.d.ts +4 -4
  109. package/dist/Parameter/MultiLayerPerceptronParameter.d.ts +2 -2
  110. package/dist/Parameter/Parameter.d.ts +1 -1
  111. package/dist/Performance/ConfusionMatrix.d.ts +1 -1
  112. package/dist/StatisticalTest/Combined5x2F.d.ts +12 -0
  113. package/dist/StatisticalTest/Combined5x2F.js +12 -0
  114. package/dist/StatisticalTest/Combined5x2F.js.map +1 -1
  115. package/dist/StatisticalTest/Combined5x2t.d.ts +13 -0
  116. package/dist/StatisticalTest/Combined5x2t.js +13 -0
  117. package/dist/StatisticalTest/Combined5x2t.js.map +1 -1
  118. package/dist/StatisticalTest/Paired5x2t.d.ts +12 -0
  119. package/dist/StatisticalTest/Paired5x2t.js +12 -0
  120. package/dist/StatisticalTest/Paired5x2t.js.map +1 -1
  121. package/dist/StatisticalTest/PairedTest.d.ts +12 -0
  122. package/dist/StatisticalTest/PairedTest.js +12 -0
  123. package/dist/StatisticalTest/PairedTest.js.map +1 -1
  124. package/dist/StatisticalTest/Pairedt.d.ts +12 -0
  125. package/dist/StatisticalTest/Pairedt.js +12 -0
  126. package/dist/StatisticalTest/Pairedt.js.map +1 -1
  127. package/dist/StatisticalTest/Sign.d.ts +17 -0
  128. package/dist/StatisticalTest/Sign.js +17 -0
  129. package/dist/StatisticalTest/Sign.js.map +1 -1
  130. package/dist/StatisticalTest/StatisticalTestResult.d.ts +30 -0
  131. package/dist/StatisticalTest/StatisticalTestResult.js +30 -0
  132. package/dist/StatisticalTest/StatisticalTestResult.js.map +1 -1
  133. package/dist/index.d.ts +88 -0
  134. package/dist/index.js +111 -0
  135. package/dist/index.js.map +1 -0
  136. package/models/bagging-bupa.txt +10346 -0
  137. package/models/bagging-car.txt +40752 -0
  138. package/models/bagging-dermatology.txt +2990 -0
  139. package/models/bagging-iris.txt +1332 -0
  140. package/models/bagging-tictactoe.txt +29442 -0
  141. package/models/c45-bupa.txt +3 -0
  142. package/models/c45-car.txt +212 -0
  143. package/models/c45-carIndexed.txt +92 -0
  144. package/models/c45-dermatology.txt +22 -0
  145. package/models/c45-iris.txt +7 -0
  146. package/models/c45-tictactoe.txt +147 -0
  147. package/models/c45-tictactoeIndexed.txt +79 -0
  148. package/models/c45stump-bupa.txt +6 -0
  149. package/models/c45stump-car.txt +11 -0
  150. package/models/c45stump-chess.txt +35 -0
  151. package/models/c45stump-dermatology.txt +11 -0
  152. package/models/c45stump-iris.txt +5 -0
  153. package/models/c45stump-nursery.txt +10 -0
  154. package/models/c45stump-tictactoe.txt +9 -0
  155. package/models/randomforest-bupa.txt +10346 -0
  156. package/models/randomforest-car.txt +40752 -0
  157. package/models/randomforest-carIndexed.txt +15594 -0
  158. package/models/randomforest-dermatology.txt +2990 -0
  159. package/models/randomforest-iris.txt +1332 -0
  160. package/models/randomforest-tictactoe.txt +29442 -0
  161. package/package.json +7 -7
  162. package/source/Attribute/DiscreteAttribute.ts +1 -1
  163. package/source/Attribute/DiscreteIndexedAttribute.ts +2 -2
  164. package/source/DataSet/DataDefinition.ts +11 -0
  165. package/source/Experiment/BootstrapRun.ts +2 -2
  166. package/source/Experiment/Experiment.ts +10 -10
  167. package/source/Experiment/KFoldRun.ts +20 -5
  168. package/source/Experiment/KFoldRunSeparateTest.ts +16 -5
  169. package/source/Experiment/MxKFoldRun.ts +1 -1
  170. package/source/Experiment/MxKFoldRunSeparateTest.ts +1 -1
  171. package/source/Experiment/SingleRunWithK.ts +20 -5
  172. package/source/Experiment/StratifiedKFoldRun.ts +1 -1
  173. package/source/Experiment/StratifiedKFoldRunSeparateTest.ts +1 -1
  174. package/source/Experiment/StratifiedMxKFoldRun.ts +1 -1
  175. package/source/Experiment/StratifiedMxKFoldRunSeparateTest.ts +3 -3
  176. package/source/Experiment/StratifiedSingleRunWithK.ts +1 -1
  177. package/source/Filter/LaryFilter.ts +1 -1
  178. package/source/Filter/TrainedFeatureFilter.ts +1 -1
  179. package/source/InstanceList/Partition.ts +125 -65
  180. package/source/Model/DecisionTree/DecisionCondition.ts +8 -0
  181. package/source/Model/DecisionTree/DecisionNode.ts +65 -22
  182. package/source/Model/DecisionTree/DecisionStump.ts +26 -0
  183. package/source/Model/DecisionTree/DecisionTree.ts +44 -15
  184. package/source/Model/DummyModel.ts +40 -19
  185. package/source/{Classifier/Bagging.ts → Model/Ensemble/BaggingModel.ts} +15 -12
  186. package/source/{Classifier/RandomForest.ts → Model/Ensemble/RandomForestModel.ts} +14 -12
  187. package/source/Model/{TreeEnsembleModel.ts → Ensemble/TreeEnsembleModel.ts} +26 -18
  188. package/source/Model/Model.ts +92 -0
  189. package/source/Model/{DeepNetworkModel.ts → NeuralNetwork/DeepNetworkModel.ts} +59 -56
  190. package/source/Model/NeuralNetwork/LinearPerceptronModel.ts +81 -0
  191. package/source/Model/{MultiLayerPerceptronModel.ts → NeuralNetwork/MultiLayerPerceptronModel.ts} +46 -39
  192. package/source/Model/{NeuralNetworkModel.ts → NeuralNetwork/NeuralNetworkModel.ts} +20 -7
  193. package/source/Model/{KnnInstance.ts → NonParametric/KnnInstance.ts} +1 -1
  194. package/source/Model/{KnnModel.ts → NonParametric/KnnModel.ts} +48 -19
  195. package/source/Model/{GaussianModel.ts → Parametric/GaussianModel.ts} +21 -3
  196. package/source/Model/Parametric/KMeansModel.ts +72 -0
  197. package/source/Model/Parametric/LdaModel.ts +98 -0
  198. package/source/Model/{NaiveBayesModel.ts → Parametric/NaiveBayesModel.ts} +68 -25
  199. package/source/Model/Parametric/QdaModel.ts +83 -0
  200. package/source/Model/RandomModel.ts +54 -16
  201. package/source/Parameter/C45Parameter.ts +2 -2
  202. package/source/Parameter/DeepNetworkParameter.ts +2 -2
  203. package/source/Parameter/KnnParameter.ts +1 -1
  204. package/source/Parameter/LinearPerceptronParameter.ts +4 -4
  205. package/source/Parameter/MultiLayerPerceptronParameter.ts +2 -2
  206. package/source/Parameter/Parameter.ts +1 -1
  207. package/source/Performance/ConfusionMatrix.ts +1 -1
  208. package/source/StatisticalTest/Combined5x2F.ts +12 -0
  209. package/source/StatisticalTest/Combined5x2t.ts +13 -0
  210. package/source/StatisticalTest/Paired5x2t.ts +12 -0
  211. package/source/StatisticalTest/PairedTest.ts +12 -0
  212. package/source/StatisticalTest/Pairedt.ts +12 -0
  213. package/source/StatisticalTest/Sign.ts +17 -0
  214. package/source/StatisticalTest/StatisticalTestResult.ts +30 -0
  215. package/source/index.ts +88 -0
  216. package/source/tsconfig.json +1 -1
  217. package/tests/Classifier/C45Test.ts +2 -2
  218. package/tests/Classifier/DeepNetworkTest.ts +3 -5
  219. package/tests/Classifier/DummyTest.ts +2 -2
  220. package/tests/Classifier/KMeansTest.ts +2 -2
  221. package/tests/Classifier/KnnTest.ts +2 -2
  222. package/tests/Classifier/LdaTest.ts +2 -2
  223. package/tests/Classifier/LinearPerceptronTest.ts +2 -2
  224. package/tests/Classifier/MultiLayerPerceptronTest.ts +2 -3
  225. package/tests/Classifier/NaiveBayesTest.ts +2 -2
  226. package/tests/Classifier/QdaTest.ts +2 -2
  227. package/tests/Classifier/RandomForestTest.ts +2 -2
  228. package/tsconfig.json +1 -2
  229. package/dist/Classifier/Bagging.js.map +0 -1
  230. package/dist/Classifier/C45.d.ts +0 -14
  231. package/dist/Classifier/C45.js +0 -43
  232. package/dist/Classifier/C45.js.map +0 -1
  233. package/dist/Classifier/C45Stump.d.ts +0 -13
  234. package/dist/Classifier/C45Stump.js.map +0 -1
  235. package/dist/Classifier/Classifier.d.ts +0 -40
  236. package/dist/Classifier/Classifier.js +0 -72
  237. package/dist/Classifier/Classifier.js.map +0 -1
  238. package/dist/Classifier/DeepNetwork.d.ts +0 -14
  239. package/dist/Classifier/DeepNetwork.js +0 -34
  240. package/dist/Classifier/DeepNetwork.js.map +0 -1
  241. package/dist/Classifier/Dummy.d.ts +0 -14
  242. package/dist/Classifier/Dummy.js +0 -32
  243. package/dist/Classifier/Dummy.js.map +0 -1
  244. package/dist/Classifier/KMeans.d.ts +0 -13
  245. package/dist/Classifier/KMeans.js +0 -39
  246. package/dist/Classifier/KMeans.js.map +0 -1
  247. package/dist/Classifier/Knn.d.ts +0 -14
  248. package/dist/Classifier/Knn.js +0 -32
  249. package/dist/Classifier/Knn.js.map +0 -1
  250. package/dist/Classifier/Lda.d.ts +0 -13
  251. package/dist/Classifier/Lda.js +0 -55
  252. package/dist/Classifier/Lda.js.map +0 -1
  253. package/dist/Classifier/LinearPerceptron.d.ts +0 -15
  254. package/dist/Classifier/LinearPerceptron.js +0 -35
  255. package/dist/Classifier/LinearPerceptron.js.map +0 -1
  256. package/dist/Classifier/MultiLayerPerceptron.d.ts +0 -15
  257. package/dist/Classifier/MultiLayerPerceptron.js +0 -35
  258. package/dist/Classifier/MultiLayerPerceptron.js.map +0 -1
  259. package/dist/Classifier/NaiveBayes.d.ts +0 -26
  260. package/dist/Classifier/NaiveBayes.js +0 -70
  261. package/dist/Classifier/NaiveBayes.js.map +0 -1
  262. package/dist/Classifier/Qda.d.ts +0 -13
  263. package/dist/Classifier/Qda.js +0 -53
  264. package/dist/Classifier/Qda.js.map +0 -1
  265. package/dist/Classifier/RandomClassifier.d.ts +0 -13
  266. package/dist/Classifier/RandomClassifier.js +0 -35
  267. package/dist/Classifier/RandomClassifier.js.map +0 -1
  268. package/dist/Classifier/RandomForest.js.map +0 -1
  269. package/dist/Model/DeepNetworkModel.d.ts +0 -45
  270. package/dist/Model/DeepNetworkModel.js.map +0 -1
  271. package/dist/Model/GaussianModel.js.map +0 -1
  272. package/dist/Model/KMeansModel.d.ts +0 -28
  273. package/dist/Model/KMeansModel.js +0 -61
  274. package/dist/Model/KMeansModel.js.map +0 -1
  275. package/dist/Model/KnnInstance.js.map +0 -1
  276. package/dist/Model/KnnModel.js.map +0 -1
  277. package/dist/Model/LdaModel.d.ts +0 -28
  278. package/dist/Model/LdaModel.js +0 -67
  279. package/dist/Model/LdaModel.js.map +0 -1
  280. package/dist/Model/LinearPerceptronModel.d.ts +0 -24
  281. package/dist/Model/LinearPerceptronModel.js +0 -91
  282. package/dist/Model/LinearPerceptronModel.js.map +0 -1
  283. package/dist/Model/MultiLayerPerceptronModel.d.ts +0 -33
  284. package/dist/Model/MultiLayerPerceptronModel.js.map +0 -1
  285. package/dist/Model/NaiveBayesModel.js.map +0 -1
  286. package/dist/Model/NeuralNetworkModel.js.map +0 -1
  287. package/dist/Model/QdaModel.d.ts +0 -27
  288. package/dist/Model/QdaModel.js +0 -63
  289. package/dist/Model/QdaModel.js.map +0 -1
  290. package/dist/Model/TreeEnsembleModel.d.ts +0 -22
  291. package/dist/Model/TreeEnsembleModel.js.map +0 -1
  292. package/index.js +0 -100
  293. package/source/Classifier/C45.ts +0 -34
  294. package/source/Classifier/C45Stump.ts +0 -23
  295. package/source/Classifier/Classifier.ts +0 -72
  296. package/source/Classifier/DeepNetwork.ts +0 -26
  297. package/source/Classifier/Dummy.ts +0 -23
  298. package/source/Classifier/KMeans.ts +0 -30
  299. package/source/Classifier/Knn.ts +0 -25
  300. package/source/Classifier/Lda.ts +0 -47
  301. package/source/Classifier/LinearPerceptron.ts +0 -27
  302. package/source/Classifier/MultiLayerPerceptron.ts +0 -27
  303. package/source/Classifier/NaiveBayes.ts +0 -66
  304. package/source/Classifier/Qda.ts +0 -46
  305. package/source/Classifier/RandomClassifier.ts +0 -26
  306. package/source/Model/KMeansModel.ts +0 -56
  307. package/source/Model/LdaModel.ts +0 -62
  308. package/source/Model/LinearPerceptronModel.ts +0 -83
  309. package/source/Model/QdaModel.ts +0 -57
  310. /package/dist/Model/{KnnInstance.js → NonParametric/KnnInstance.js} +0 -0
@@ -4,35 +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", "./DecisionTree/DecisionTree", "nlptoolkit-math/dist/DiscreteDistribution", "nlptoolkit-util/dist/FileContents", "./DecisionTree/DecisionNode"], 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
- const Model_1 = require("./Model");
14
- const DecisionTree_1 = require("./DecisionTree/DecisionTree");
13
+ const Model_1 = require("../Model");
14
+ const DecisionTree_1 = require("../DecisionTree/DecisionTree");
15
15
  const DiscreteDistribution_1 = require("nlptoolkit-math/dist/DiscreteDistribution");
16
16
  const FileContents_1 = require("nlptoolkit-util/dist/FileContents");
17
- const DecisionNode_1 = require("./DecisionTree/DecisionNode");
17
+ const DecisionNode_1 = require("../DecisionTree/DecisionNode");
18
18
  class TreeEnsembleModel extends Model_1.Model {
19
19
  /**
20
20
  * A constructor which sets the {@link Array} of {@link DecisionTree} with given input.
21
21
  *
22
- * @param forestOrFileName An {@link Array} of {@link DecisionTree}.
22
+ * @param forest An {@link Array} of {@link DecisionTree}.
23
23
  */
24
- constructor(forestOrFileName) {
25
- super();
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
- }
24
+ constructor1(forest) {
25
+ this.forest = forest;
26
+ }
27
+ /**
28
+ * Loads a tree ensemble model such as Random Forest model or Bagging model from an input model file.
29
+ * @param fileName Model file name.
30
+ */
31
+ constructor2(fileName) {
32
+ let input = new FileContents_1.FileContents(fileName);
33
+ let numberOfTrees = parseInt(input.readLine());
34
+ this.forest = new Array();
35
+ for (let i = 0; i < numberOfTrees; i++) {
36
+ this.forest.push(new DecisionTree_1.DecisionTree(new DecisionNode_1.DecisionNode(input)));
36
37
  }
37
38
  }
38
39
  /**
@@ -49,6 +50,11 @@
49
50
  }
50
51
  return distribution.getMaxItem();
51
52
  }
53
+ /**
54
+ * Calculates the posterior probability distribution for the given instance according to ensemble tree model.
55
+ * @param instance Instance for which posterior probability distribution is calculated.
56
+ * @return Posterior probability distribution for the given instance.
57
+ */
52
58
  predictProbability(instance) {
53
59
  let distribution = new DiscreteDistribution_1.DiscreteDistribution();
54
60
  for (let tree of this.forest) {
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TreeEnsembleModel.js","sourceRoot":"","sources":["../../../source/Model/Ensemble/TreeEnsembleModel.ts"],"names":[],"mappings":";;;;;;;;;;;;IAAA,oCAA+B;IAE/B,+DAA0D;IAC1D,oFAA+E;IAC/E,oEAA+D;IAC/D,+DAA0D;IAE1D,MAAsB,iBAAkB,SAAQ,aAAK;QAIjD;;;;WAIG;QACH,YAAY,CAAC,MAA2B;YACpC,IAAI,CAAC,MAAM,GAAG,MAAM,CAAA;QACxB,CAAC;QAED;;;WAGG;QACH,YAAY,CAAC,QAAgB;YACzB,IAAI,KAAK,GAAG,IAAI,2BAAY,CAAC,QAAQ,CAAC,CAAA;YACtC,IAAI,aAAa,GAAG,QAAQ,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAA;YAC9C,IAAI,CAAC,MAAM,GAAG,IAAI,KAAK,EAAgB,CAAA;YACvC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,aAAa,EAAE,CAAC,EAAE,EAAC;gBACnC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,2BAAY,CAAC,IAAI,2BAAY,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA;aAC9D;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;;;;WAIG;QACH,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;IAzDD,8CAyDC"}
@@ -2,10 +2,15 @@ import { Instance } from "../Instance/Instance";
2
2
  import { FileContents } from "nlptoolkit-util/dist/FileContents";
3
3
  import { InstanceList } from "../InstanceList/InstanceList";
4
4
  import { Matrix } from "nlptoolkit-math/dist/Matrix";
5
+ import { DiscreteDistribution } from "nlptoolkit-math/dist/DiscreteDistribution";
6
+ import { Parameter } from "../Parameter/Parameter";
7
+ import { Performance } from "../Performance/Performance";
5
8
  export declare abstract class Model {
6
9
  abstract predict(instance: Instance): string;
7
10
  abstract predictProbability(instance: Instance): Map<string, number>;
8
11
  abstract saveTxt(fileName: String): void;
12
+ abstract train(trainSet: InstanceList, parameters: Parameter): void;
13
+ abstract loadModel(fileName: string): void;
9
14
  /**
10
15
  * Given an array of class labels, returns the maximum occurred one.
11
16
  *
@@ -13,7 +18,54 @@ export declare abstract class Model {
13
18
  * @return The class label that occurs most in the array of class labels (mod of class label list).
14
19
  */
15
20
  static getMaximum(classLabels: Array<string>): string;
21
+ /**
22
+ * Loads a single instance from a single line.
23
+ * @param line Line containing the instance.
24
+ * @param attributeTypes Type of the attributes of the instance. If th attribute is discrete, it is "DISCRETE",
25
+ * otherwise it is "CONTINUOUS".
26
+ * @return Instance read from the line.
27
+ */
16
28
  loadInstance(line: string, attributeTypes: string[]): Instance;
29
+ /**
30
+ * Loads a discrete distribution from an input model file
31
+ * @param input Input model file.
32
+ * @return Discrete distribution read from an input model file.
33
+ */
34
+ static loadDiscreteDistribution(input: FileContents): DiscreteDistribution;
35
+ /**
36
+ * Loads an instance list from an input model file.
37
+ * @param input Input model file.
38
+ * @return Instance list read from an input model file.
39
+ */
17
40
  loadInstanceList(input: FileContents): InstanceList;
41
+ /**
42
+ * Loads a matrix from an input model file.
43
+ * @param input Input model file.
44
+ * @return Matrix read from the input model file.
45
+ */
18
46
  loadMatrix(input: FileContents): Matrix;
47
+ /**
48
+ * Checks given instance's attribute and returns true if it is a discrete indexed attribute, false otherwise.
49
+ *
50
+ * @param instance Instance to check.
51
+ * @return True if instance is a discrete indexed attribute, false otherwise.
52
+ */
53
+ discreteCheck(instance: Instance): boolean;
54
+ /**
55
+ * TestClassification an instance list with the current model.
56
+ *
57
+ * @param testSet Test data (list of instances) to be tested.
58
+ * @return The accuracy (and error) of the model as an instance of Performance class.
59
+ */
60
+ test(testSet: InstanceList): Performance;
61
+ /**
62
+ * Runs current classifier with the given train and test data.
63
+ *
64
+ * @param parameter Parameter of the classifier to be trained.
65
+ * @param trainSet Training data to be used in training the classifier.
66
+ * @param testSet Test data to be tested after training the model.
67
+ * @return The accuracy (and error) of the trained model as an instance of Performance class.
68
+ * @throws DiscreteFeaturesNotAllowed Exception for discrete features.
69
+ */
70
+ singleRun(parameter: Parameter, trainSet: InstanceList, testSet: InstanceList): Performance;
19
71
  }
@@ -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", "../Instance/Instance", "nlptoolkit-datastructure/dist/CounterHashMap", "../InstanceList/InstanceList", "nlptoolkit-math/dist/Matrix"], factory);
7
+ define(["require", "exports", "../Instance/Instance", "nlptoolkit-datastructure/dist/CounterHashMap", "../InstanceList/InstanceList", "nlptoolkit-math/dist/Matrix", "nlptoolkit-math/dist/DiscreteDistribution", "../Attribute/DiscreteAttribute", "../Attribute/DiscreteIndexedAttribute", "../Performance/ConfusionMatrix", "../Performance/DetailedClassificationPerformance"], factory);
8
8
  }
9
9
  })(function (require, exports) {
10
10
  "use strict";
@@ -14,6 +14,11 @@
14
14
  const CounterHashMap_1 = require("nlptoolkit-datastructure/dist/CounterHashMap");
15
15
  const InstanceList_1 = require("../InstanceList/InstanceList");
16
16
  const Matrix_1 = require("nlptoolkit-math/dist/Matrix");
17
+ const DiscreteDistribution_1 = require("nlptoolkit-math/dist/DiscreteDistribution");
18
+ const DiscreteAttribute_1 = require("../Attribute/DiscreteAttribute");
19
+ const DiscreteIndexedAttribute_1 = require("../Attribute/DiscreteIndexedAttribute");
20
+ const ConfusionMatrix_1 = require("../Performance/ConfusionMatrix");
21
+ const DetailedClassificationPerformance_1 = require("../Performance/DetailedClassificationPerformance");
17
22
  class Model {
18
23
  /**
19
24
  * Given an array of class labels, returns the maximum occurred one.
@@ -28,6 +33,13 @@
28
33
  }
29
34
  return frequencies.max();
30
35
  }
36
+ /**
37
+ * Loads a single instance from a single line.
38
+ * @param line Line containing the instance.
39
+ * @param attributeTypes Type of the attributes of the instance. If th attribute is discrete, it is "DISCRETE",
40
+ * otherwise it is "CONTINUOUS".
41
+ * @return Instance read from the line.
42
+ */
31
43
  loadInstance(line, attributeTypes) {
32
44
  let items = line.split(",");
33
45
  let instance = new Instance_1.Instance(items[items.length - 1]);
@@ -43,6 +55,29 @@
43
55
  }
44
56
  return instance;
45
57
  }
58
+ /**
59
+ * Loads a discrete distribution from an input model file
60
+ * @param input Input model file.
61
+ * @return Discrete distribution read from an input model file.
62
+ */
63
+ static loadDiscreteDistribution(input) {
64
+ let distribution = new DiscreteDistribution_1.DiscreteDistribution();
65
+ let size = parseInt(input.readLine());
66
+ for (let i = 0; i < size; i++) {
67
+ let line = input.readLine();
68
+ let items = line.split(" ");
69
+ let count = parseInt(items[1]);
70
+ for (let j = 0; j < count; j++) {
71
+ distribution.addItem(items[0]);
72
+ }
73
+ }
74
+ return distribution;
75
+ }
76
+ /**
77
+ * Loads an instance list from an input model file.
78
+ * @param input Input model file.
79
+ * @return Instance list read from an input model file.
80
+ */
46
81
  loadInstanceList(input) {
47
82
  let types = input.readLine().split(" ");
48
83
  let instanceCount = parseInt(input.readLine());
@@ -52,6 +87,11 @@
52
87
  }
53
88
  return instanceList;
54
89
  }
90
+ /**
91
+ * Loads a matrix from an input model file.
92
+ * @param input Input model file.
93
+ * @return Matrix read from the input model file.
94
+ */
55
95
  loadMatrix(input) {
56
96
  let items = input.readLine().split(" ");
57
97
  let matrix = new Matrix_1.Matrix(parseInt(items[0]), parseInt(items[1]));
@@ -64,6 +104,49 @@
64
104
  }
65
105
  return matrix;
66
106
  }
107
+ /**
108
+ * Checks given instance's attribute and returns true if it is a discrete indexed attribute, false otherwise.
109
+ *
110
+ * @param instance Instance to check.
111
+ * @return True if instance is a discrete indexed attribute, false otherwise.
112
+ */
113
+ discreteCheck(instance) {
114
+ for (let i = 0; i < instance.attributeSize(); i++) {
115
+ if (instance.getAttribute(i) instanceof DiscreteAttribute_1.DiscreteAttribute &&
116
+ !(instance.getAttribute(i) instanceof DiscreteIndexedAttribute_1.DiscreteIndexedAttribute)) {
117
+ return false;
118
+ }
119
+ }
120
+ return true;
121
+ }
122
+ /**
123
+ * TestClassification an instance list with the current model.
124
+ *
125
+ * @param testSet Test data (list of instances) to be tested.
126
+ * @return The accuracy (and error) of the model as an instance of Performance class.
127
+ */
128
+ test(testSet) {
129
+ let classLabels = testSet.getUnionOfPossibleClassLabels();
130
+ let confusion = new ConfusionMatrix_1.ConfusionMatrix(classLabels);
131
+ for (let i = 0; i < testSet.size(); i++) {
132
+ let instance = testSet.get(i);
133
+ confusion.classify(instance.getClassLabel(), this.predict(instance));
134
+ }
135
+ return new DetailedClassificationPerformance_1.DetailedClassificationPerformance(confusion);
136
+ }
137
+ /**
138
+ * Runs current classifier with the given train and test data.
139
+ *
140
+ * @param parameter Parameter of the classifier to be trained.
141
+ * @param trainSet Training data to be used in training the classifier.
142
+ * @param testSet Test data to be tested after training the model.
143
+ * @return The accuracy (and error) of the trained model as an instance of Performance class.
144
+ * @throws DiscreteFeaturesNotAllowed Exception for discrete features.
145
+ */
146
+ singleRun(parameter, trainSet, testSet) {
147
+ this.train(trainSet, parameter);
148
+ return this.test(testSet);
149
+ }
67
150
  }
68
151
  exports.Model = Model;
69
152
  });
@@ -1 +1 @@
1
- {"version":3,"file":"Model.js","sourceRoot":"","sources":["../../source/Model/Model.ts"],"names":[],"mappings":";;;;;;;;;;;;IAAA,mDAA8C;IAC9C,iFAA4E;IAE5E,+DAA0D;IAC1D,wDAAmD;IAEnD,MAAsB,KAAK;QAMvB;;;;;WAKG;QACH,MAAM,CAAC,UAAU,CAAC,WAA0B;YACxC,IAAI,WAAW,GAAG,IAAI,+BAAc,EAAU,CAAC;YAC/C,KAAK,IAAI,KAAK,IAAI,WAAW,EAAE;gBAC3B,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;aAC1B;YACD,OAAO,WAAW,CAAC,GAAG,EAAE,CAAC;QAC7B,CAAC;QAED,YAAY,CAAC,IAAY,EAAE,cAAwB;YAC/C,IAAI,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;YAC3B,IAAI,QAAQ,GAAG,IAAI,mBAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAA;YACpD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,EAAE,EAAC;gBACtC,QAAQ,cAAc,CAAC,CAAC,CAAC,EAAC;oBACtB,KAAK,UAAU;wBACX,QAAQ,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAA;wBAC/B,MAAK;oBACT,KAAK,YAAY;wBACb,QAAQ,CAAC,YAAY,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;wBAC3C,MAAK;iBACZ;aACJ;YACD,OAAO,QAAQ,CAAA;QACnB,CAAC;QAED,gBAAgB,CAAC,KAAmB;YAChC,IAAI,KAAK,GAAG,KAAK,CAAC,QAAQ,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;YACvC,IAAI,aAAa,GAAG,QAAQ,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAA;YAC9C,IAAI,YAAY,GAAG,IAAI,2BAAY,EAAE,CAAA;YACrC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,aAAa,EAAE,CAAC,EAAE,EAAC;gBACnC,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,QAAQ,EAAE,EAAE,KAAK,CAAC,CAAC,CAAA;aAC/D;YACD,OAAO,YAAY,CAAC;QACxB,CAAC;QAED,UAAU,CAAC,KAAmB;YAC1B,IAAI,KAAK,GAAG,KAAK,CAAC,QAAQ,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;YACvC,IAAI,MAAM,GAAG,IAAI,eAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;YAC/D,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,EAAE,CAAC,EAAE,EAAC;gBACrC,IAAI,IAAI,GAAG,KAAK,CAAC,QAAQ,EAAE,CAAA;gBAC3B,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;gBACvB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,SAAS,EAAE,EAAE,CAAC,EAAE,EAAC;oBACxC,MAAM,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAE,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;iBAC9C;aACJ;YACD,OAAO,MAAM,CAAA;QACjB,CAAC;KACJ;IA1DD,sBA0DC"}
1
+ {"version":3,"file":"Model.js","sourceRoot":"","sources":["../../source/Model/Model.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,47 @@
1
+ import { NeuralNetworkModel } from "./NeuralNetworkModel";
2
+ import { InstanceList } from "../../InstanceList/InstanceList";
3
+ import { Parameter } from "../../Parameter/Parameter";
4
+ export declare class DeepNetworkModel extends NeuralNetworkModel {
5
+ private weights;
6
+ private hiddenLayerSize;
7
+ private activationFunction;
8
+ /**
9
+ * The allocateWeights method takes {@link DeepNetworkParameter}s as an input. First it adds random weights to the {@link Array}
10
+ * of {@link Matrix} weights' first layer. Then it loops through the layers and adds random weights till the last layer.
11
+ * At the end it adds random weights to the last layer and also sets the hiddenLayerSize value.
12
+ *
13
+ * @param parameters {@link DeepNetworkParameter} input.
14
+ */
15
+ private allocateWeights;
16
+ /**
17
+ * The setBestWeights method creates an {@link Array} of Matrix as bestWeights and clones the values of weights {@link Array}
18
+ * into this newly created {@link Array}.
19
+ *
20
+ * @return An {@link Array} clones from the weights ArrayList.
21
+ */
22
+ private setBestWeights;
23
+ /**
24
+ * Loads a deep network model from an input model file.
25
+ * @param fileName Model file name.
26
+ */
27
+ constructor2(fileName: string): void;
28
+ /**
29
+ * The calculateOutput method loops size of the weights times and calculate one hidden layer at a time and adds bias term.
30
+ * At the end it updates the output y value.
31
+ */
32
+ protected calculateOutput(): void;
33
+ saveTxt(fileName: string): void;
34
+ /**
35
+ * Training algorithm for deep network classifier.
36
+ *
37
+ * @param train Training data given to the algorithm.
38
+ * @param params Parameters of the deep network algorithm. crossValidationRatio and seed are used as parameters.
39
+ * @throws DiscreteFeaturesNotAllowed Exception for discrete features.
40
+ */
41
+ train(train: InstanceList, params: Parameter): void;
42
+ /**
43
+ * Loads the deep network model from an input file.
44
+ * @param fileName File name of the deep network model.
45
+ */
46
+ loadModel(fileName: string): void;
47
+ }
@@ -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", "./NeuralNetworkModel", "nlptoolkit-math/dist/Matrix", "../Parameter/ActivationFunction", "../InstanceList/InstanceList", "nlptoolkit-math/dist/Vector", "../Performance/ClassificationPerformance", "nlptoolkit-util/dist/Random", "nlptoolkit-util/dist/FileContents"], factory);
7
+ define(["require", "exports", "./NeuralNetworkModel", "nlptoolkit-math/dist/Matrix", "../../Parameter/ActivationFunction", "nlptoolkit-math/dist/Vector", "../../Performance/ClassificationPerformance", "nlptoolkit-util/dist/Random", "nlptoolkit-util/dist/FileContents", "../../InstanceList/Partition"], factory);
8
8
  }
9
9
  })(function (require, exports) {
10
10
  "use strict";
@@ -12,36 +12,13 @@
12
12
  exports.DeepNetworkModel = void 0;
13
13
  const NeuralNetworkModel_1 = require("./NeuralNetworkModel");
14
14
  const Matrix_1 = require("nlptoolkit-math/dist/Matrix");
15
- const ActivationFunction_1 = require("../Parameter/ActivationFunction");
16
- const InstanceList_1 = require("../InstanceList/InstanceList");
15
+ const ActivationFunction_1 = require("../../Parameter/ActivationFunction");
17
16
  const Vector_1 = require("nlptoolkit-math/dist/Vector");
18
- const ClassificationPerformance_1 = require("../Performance/ClassificationPerformance");
17
+ const ClassificationPerformance_1 = require("../../Performance/ClassificationPerformance");
19
18
  const Random_1 = require("nlptoolkit-util/dist/Random");
20
19
  const FileContents_1 = require("nlptoolkit-util/dist/FileContents");
20
+ const Partition_1 = require("../../InstanceList/Partition");
21
21
  class DeepNetworkModel extends NeuralNetworkModel_1.NeuralNetworkModel {
22
- /**
23
- * Constructor that takes two {@link InstanceList} train set and validation set and {@link DeepNetworkParameter} as inputs.
24
- * First it sets the class labels, their sizes as K and the size of the continuous attributes as d of given train set and
25
- * allocates weights and sets the best weights. At each epoch, it shuffles the train set and loops through the each item of that train set,
26
- * it multiplies the weights Matrix with input Vector than applies the sigmoid function and stores the result as hidden and add bias.
27
- * Then updates weights and at the end it compares the performance of these weights with validation set. It updates the bestClassificationPerformance and
28
- * bestWeights according to the current situation. At the end it updates the learning rate via etaDecrease value and finishes
29
- * with clearing the weights.
30
- *
31
- * @param trainSetOrFileName {@link InstanceList} to be used as trainSet.
32
- * @param validationSet {@link InstanceList} to be used as validationSet.
33
- * @param parameters {@link DeepNetworkParameter} input.
34
- */
35
- constructor(trainSetOrFileName, validationSet, parameters) {
36
- if (trainSetOrFileName instanceof InstanceList_1.InstanceList) {
37
- super(trainSetOrFileName);
38
- this.constructor1(trainSetOrFileName, validationSet, parameters);
39
- }
40
- else {
41
- super();
42
- this.constructor2(trainSetOrFileName);
43
- }
44
- }
45
22
  /**
46
23
  * The allocateWeights method takes {@link DeepNetworkParameter}s as an input. First it adds random weights to the {@link Array}
47
24
  * of {@link Matrix} weights' first layer. Then it loops through the layers and adds random weights till the last layer.
@@ -71,7 +48,53 @@
71
48
  }
72
49
  return bestWeights;
73
50
  }
74
- constructor1(trainSet, validationSet, parameters) {
51
+ /**
52
+ * Loads a deep network model from an input model file.
53
+ * @param fileName Model file name.
54
+ */
55
+ constructor2(fileName) {
56
+ let input = new FileContents_1.FileContents(fileName);
57
+ this.loadClassLabels(input);
58
+ this.hiddenLayerSize = parseInt(input.readLine());
59
+ this.weights = new Array();
60
+ for (let i = 0; i < this.hiddenLayerSize + 1; i++) {
61
+ this.weights.push(this.loadMatrix(input));
62
+ }
63
+ this.activationFunction = this.loadActivationFunction(input);
64
+ }
65
+ /**
66
+ * The calculateOutput method loops size of the weights times and calculate one hidden layer at a time and adds bias term.
67
+ * At the end it updates the output y value.
68
+ */
69
+ calculateOutput() {
70
+ let hiddenBiased;
71
+ for (let i = 0; i < this.weights.length - 1; i++) {
72
+ let hidden;
73
+ if (i == 0) {
74
+ hidden = this.calculateHidden(this.x, this.weights[i], this.activationFunction);
75
+ }
76
+ else {
77
+ hidden = this.calculateHidden(hiddenBiased, this.weights[i], this.activationFunction);
78
+ }
79
+ hiddenBiased = hidden.biased();
80
+ }
81
+ this.y = this.weights[this.weights.length - 1].multiplyWithVectorFromRight(hiddenBiased);
82
+ }
83
+ saveTxt(fileName) {
84
+ }
85
+ /**
86
+ * Training algorithm for deep network classifier.
87
+ *
88
+ * @param train Training data given to the algorithm.
89
+ * @param params Parameters of the deep network algorithm. crossValidationRatio and seed are used as parameters.
90
+ * @throws DiscreteFeaturesNotAllowed Exception for discrete features.
91
+ */
92
+ train(train, params) {
93
+ this.initialize(train);
94
+ let parameters = params;
95
+ let partition = new Partition_1.Partition(train, parameters.getCrossValidationRatio(), true);
96
+ let trainSet = partition.get(1);
97
+ let validationSet = partition.get(0);
75
98
  let tmpHidden = new Vector_1.Vector(0, 0);
76
99
  let deltaWeights = new Array();
77
100
  let hidden = new Array();
@@ -151,35 +174,12 @@
151
174
  this.weights.push(m);
152
175
  }
153
176
  }
154
- constructor2(fileName) {
155
- let input = new FileContents_1.FileContents(fileName);
156
- this.loadClassLabels(input);
157
- this.hiddenLayerSize = parseInt(input.readLine());
158
- this.weights = new Array();
159
- for (let i = 0; i < this.hiddenLayerSize + 1; i++) {
160
- this.weights.push(this.loadMatrix(input));
161
- }
162
- this.activationFunction = this.loadActivationFunction(input);
163
- }
164
177
  /**
165
- * The calculateOutput method loops size of the weights times and calculate one hidden layer at a time and adds bias term.
166
- * At the end it updates the output y value.
178
+ * Loads the deep network model from an input file.
179
+ * @param fileName File name of the deep network model.
167
180
  */
168
- calculateOutput() {
169
- let hiddenBiased;
170
- for (let i = 0; i < this.weights.length - 1; i++) {
171
- let hidden;
172
- if (i == 0) {
173
- hidden = this.calculateHidden(this.x, this.weights[i], this.activationFunction);
174
- }
175
- else {
176
- hidden = this.calculateHidden(hiddenBiased, this.weights[i], this.activationFunction);
177
- }
178
- hiddenBiased = hidden.biased();
179
- }
180
- this.y = this.weights[this.weights.length - 1].multiplyWithVectorFromRight(hiddenBiased);
181
- }
182
- saveTxt(fileName) {
181
+ loadModel(fileName) {
182
+ this.constructor2(fileName);
183
183
  }
184
184
  }
185
185
  exports.DeepNetworkModel = DeepNetworkModel;
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DeepNetworkModel.js","sourceRoot":"","sources":["../../../source/Model/NeuralNetwork/DeepNetworkModel.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,31 @@
1
+ import { NeuralNetworkModel } from "./NeuralNetworkModel";
2
+ import { Matrix } from "nlptoolkit-math/dist/Matrix";
3
+ import { InstanceList } from "../../InstanceList/InstanceList";
4
+ import { Parameter } from "../../Parameter/Parameter";
5
+ export declare class LinearPerceptronModel extends NeuralNetworkModel {
6
+ protected W: Matrix;
7
+ /**
8
+ * Loads a linear perceptron model from an input model file.
9
+ * @param fileName Model file name.
10
+ */
11
+ constructor2(fileName: string): void;
12
+ /**
13
+ * The calculateOutput method calculates the {@link Matrix} y by multiplying Matrix W with {@link Vector} x.
14
+ */
15
+ protected calculateOutput(): void;
16
+ saveTxt(fileName: string): void;
17
+ /**
18
+ * Training algorithm for the linear perceptron algorithm. 20 percent of the data is separated as cross-validation
19
+ * data used for selecting the best weights. 80 percent of the data is used for training the linear perceptron with
20
+ * gradient descent.
21
+ *
22
+ * @param train Training data given to the algorithm
23
+ * @param params Parameters of the linear perceptron.
24
+ */
25
+ train(train: InstanceList, params: Parameter): void;
26
+ /**
27
+ * Loads the linear perceptron model from an input file.
28
+ * @param fileName File name of the linear perceptron model.
29
+ */
30
+ loadModel(fileName: string): void;
31
+ }
@@ -0,0 +1,84 @@
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;
5
+ }
6
+ else if (typeof define === "function" && define.amd) {
7
+ define(["require", "exports", "./NeuralNetworkModel", "nlptoolkit-math/dist/Matrix", "../../Performance/ClassificationPerformance", "nlptoolkit-util/dist/Random", "nlptoolkit-util/dist/FileContents", "../../InstanceList/Partition"], factory);
8
+ }
9
+ })(function (require, exports) {
10
+ "use strict";
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.LinearPerceptronModel = void 0;
13
+ const NeuralNetworkModel_1 = require("./NeuralNetworkModel");
14
+ const Matrix_1 = require("nlptoolkit-math/dist/Matrix");
15
+ const ClassificationPerformance_1 = require("../../Performance/ClassificationPerformance");
16
+ const Random_1 = require("nlptoolkit-util/dist/Random");
17
+ const FileContents_1 = require("nlptoolkit-util/dist/FileContents");
18
+ const Partition_1 = require("../../InstanceList/Partition");
19
+ class LinearPerceptronModel extends NeuralNetworkModel_1.NeuralNetworkModel {
20
+ /**
21
+ * Loads a linear perceptron model from an input model file.
22
+ * @param fileName Model file name.
23
+ */
24
+ constructor2(fileName) {
25
+ let input = new FileContents_1.FileContents(fileName);
26
+ this.loadClassLabels(input);
27
+ this.W = this.loadMatrix(input);
28
+ }
29
+ /**
30
+ * The calculateOutput method calculates the {@link Matrix} y by multiplying Matrix W with {@link Vector} x.
31
+ */
32
+ calculateOutput() {
33
+ this.y = this.W.multiplyWithVectorFromRight(this.x);
34
+ }
35
+ saveTxt(fileName) {
36
+ }
37
+ /**
38
+ * Training algorithm for the linear perceptron algorithm. 20 percent of the data is separated as cross-validation
39
+ * data used for selecting the best weights. 80 percent of the data is used for training the linear perceptron with
40
+ * gradient descent.
41
+ *
42
+ * @param train Training data given to the algorithm
43
+ * @param params Parameters of the linear perceptron.
44
+ */
45
+ train(train, params) {
46
+ this.initialize(train);
47
+ let parameters = params;
48
+ let partition = new Partition_1.Partition(train, parameters.getCrossValidationRatio(), true);
49
+ let trainSet = partition.get(1);
50
+ let validationSet = partition.get(0);
51
+ this.W = this.allocateLayerWeights(this.K, this.d + 1, new Random_1.Random(parameters.getSeed()));
52
+ let bestW = this.W.clone();
53
+ let bestClassificationPerformance = new ClassificationPerformance_1.ClassificationPerformance(0.0);
54
+ let epoch = parameters.getEpoch();
55
+ let learningRate = parameters.getLearningRate();
56
+ for (let i = 0; i < epoch; i++) {
57
+ trainSet.shuffle(new Random_1.Random(parameters.getSeed()));
58
+ for (let j = 0; j < trainSet.size(); j++) {
59
+ this.createInputVector(trainSet.get(j));
60
+ let rMinusY = this.calculateRMinusY(trainSet.get(j), this.x, this.W);
61
+ let deltaW = new Matrix_1.Matrix(rMinusY, this.x);
62
+ deltaW.multiplyWithConstant(learningRate);
63
+ this.W.add(deltaW);
64
+ }
65
+ let currentClassificationPerformance = this.testClassifier(validationSet);
66
+ if (currentClassificationPerformance.getAccuracy() > bestClassificationPerformance.getAccuracy()) {
67
+ bestClassificationPerformance = currentClassificationPerformance;
68
+ bestW = this.W.clone();
69
+ }
70
+ learningRate *= parameters.getEtaDecrease();
71
+ }
72
+ this.W = bestW;
73
+ }
74
+ /**
75
+ * Loads the linear perceptron model from an input file.
76
+ * @param fileName File name of the linear perceptron model.
77
+ */
78
+ loadModel(fileName) {
79
+ this.constructor2(fileName);
80
+ }
81
+ }
82
+ exports.LinearPerceptronModel = LinearPerceptronModel;
83
+ });
84
+ //# sourceMappingURL=LinearPerceptronModel.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"LinearPerceptronModel.js","sourceRoot":"","sources":["../../../source/Model/NeuralNetwork/LinearPerceptronModel.ts"],"names":[],"mappings":"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"}