nlptoolkit-classification 1.0.7 → 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 (382) hide show
  1. package/README.md +1 -0
  2. package/dist/Attribute/Attribute.js +6 -16
  3. package/dist/Attribute/Attribute.js.map +1 -1
  4. package/dist/Attribute/AttributeType.js +22 -32
  5. package/dist/Attribute/AttributeType.js.map +1 -1
  6. package/dist/Attribute/BinaryAttribute.js +14 -24
  7. package/dist/Attribute/BinaryAttribute.js.map +1 -1
  8. package/dist/Attribute/ContinuousAttribute.js +46 -55
  9. package/dist/Attribute/ContinuousAttribute.js.map +1 -1
  10. package/dist/Attribute/DiscreteAttribute.d.ts +1 -1
  11. package/dist/Attribute/DiscreteAttribute.js +38 -48
  12. package/dist/Attribute/DiscreteAttribute.js.map +1 -1
  13. package/dist/Attribute/DiscreteIndexedAttribute.d.ts +2 -2
  14. package/dist/Attribute/DiscreteIndexedAttribute.js +47 -55
  15. package/dist/Attribute/DiscreteIndexedAttribute.js.map +1 -1
  16. package/dist/DataSet/DataDefinition.d.ts +11 -0
  17. package/dist/DataSet/DataDefinition.js +115 -112
  18. package/dist/DataSet/DataDefinition.js.map +1 -1
  19. package/dist/DataSet/DataSet.js +268 -245
  20. package/dist/DataSet/DataSet.js.map +1 -1
  21. package/dist/DistanceMetric/DistanceMetric.js +2 -12
  22. package/dist/DistanceMetric/EuclidianDistance.js +27 -37
  23. package/dist/DistanceMetric/EuclidianDistance.js.map +1 -1
  24. package/dist/DistanceMetric/MahalanobisDistance.js +27 -36
  25. package/dist/DistanceMetric/MahalanobisDistance.js.map +1 -1
  26. package/dist/Experiment/BootstrapRun.js +31 -40
  27. package/dist/Experiment/BootstrapRun.js.map +1 -1
  28. package/dist/Experiment/Experiment.d.ts +7 -7
  29. package/dist/Experiment/Experiment.js +46 -53
  30. package/dist/Experiment/Experiment.js.map +1 -1
  31. package/dist/Experiment/KFoldRun.d.ts +17 -2
  32. package/dist/Experiment/KFoldRun.js +45 -39
  33. package/dist/Experiment/KFoldRun.js.map +1 -1
  34. package/dist/Experiment/KFoldRunSeparateTest.d.ts +13 -2
  35. package/dist/Experiment/KFoldRunSeparateTest.js +48 -47
  36. package/dist/Experiment/KFoldRunSeparateTest.js.map +1 -1
  37. package/dist/Experiment/MultipleRun.js +2 -12
  38. package/dist/Experiment/MxKFoldRun.js +31 -40
  39. package/dist/Experiment/MxKFoldRun.js.map +1 -1
  40. package/dist/Experiment/MxKFoldRunSeparateTest.js +35 -44
  41. package/dist/Experiment/MxKFoldRunSeparateTest.js.map +1 -1
  42. package/dist/Experiment/SingleRun.js +2 -12
  43. package/dist/Experiment/SingleRunWithK.d.ts +18 -3
  44. package/dist/Experiment/SingleRunWithK.js +39 -33
  45. package/dist/Experiment/SingleRunWithK.js.map +1 -1
  46. package/dist/Experiment/StratifiedKFoldRun.js +26 -36
  47. package/dist/Experiment/StratifiedKFoldRun.js.map +1 -1
  48. package/dist/Experiment/StratifiedKFoldRunSeparateTest.js +30 -40
  49. package/dist/Experiment/StratifiedKFoldRunSeparateTest.js.map +1 -1
  50. package/dist/Experiment/StratifiedMxKFoldRun.js +29 -39
  51. package/dist/Experiment/StratifiedMxKFoldRun.js.map +1 -1
  52. package/dist/Experiment/StratifiedMxKFoldRunSeparateTest.js +34 -43
  53. package/dist/Experiment/StratifiedMxKFoldRunSeparateTest.js.map +1 -1
  54. package/dist/Experiment/StratifiedSingleRunWithK.js +27 -36
  55. package/dist/Experiment/StratifiedSingleRunWithK.js.map +1 -1
  56. package/dist/FeatureSelection/BackwardSelection.js +26 -36
  57. package/dist/FeatureSelection/BackwardSelection.js.map +1 -1
  58. package/dist/FeatureSelection/FeatureSubSet.js +72 -82
  59. package/dist/FeatureSelection/FeatureSubSet.js.map +1 -1
  60. package/dist/FeatureSelection/FloatingSelection.js +25 -35
  61. package/dist/FeatureSelection/FloatingSelection.js.map +1 -1
  62. package/dist/FeatureSelection/ForwardSelection.js +25 -35
  63. package/dist/FeatureSelection/ForwardSelection.js.map +1 -1
  64. package/dist/FeatureSelection/SubSetSelection.js +69 -78
  65. package/dist/FeatureSelection/SubSetSelection.js.map +1 -1
  66. package/dist/Filter/DiscreteToContinuous.js +50 -60
  67. package/dist/Filter/DiscreteToContinuous.js.map +1 -1
  68. package/dist/Filter/DiscreteToIndexed.js +40 -50
  69. package/dist/Filter/DiscreteToIndexed.js.map +1 -1
  70. package/dist/Filter/FeatureFilter.js +23 -32
  71. package/dist/Filter/FeatureFilter.js.map +1 -1
  72. package/dist/Filter/LaryFilter.d.ts +1 -1
  73. package/dist/Filter/LaryFilter.js +46 -55
  74. package/dist/Filter/LaryFilter.js.map +1 -1
  75. package/dist/Filter/LaryToBinary.js +48 -58
  76. package/dist/Filter/LaryToBinary.js.map +1 -1
  77. package/dist/Filter/Normalize.js +33 -41
  78. package/dist/Filter/Normalize.js.map +1 -1
  79. package/dist/Filter/Pca.js +86 -96
  80. package/dist/Filter/Pca.js.map +1 -1
  81. package/dist/Filter/TrainedFeatureFilter.d.ts +1 -1
  82. package/dist/Filter/TrainedFeatureFilter.js +14 -24
  83. package/dist/Filter/TrainedFeatureFilter.js.map +1 -1
  84. package/dist/Instance/CompositeInstance.js +46 -56
  85. package/dist/Instance/CompositeInstance.js.map +1 -1
  86. package/dist/Instance/Instance.js +145 -154
  87. package/dist/Instance/Instance.js.map +1 -1
  88. package/dist/InstanceList/InstanceList.js +466 -443
  89. package/dist/InstanceList/InstanceList.js.map +1 -1
  90. package/dist/InstanceList/InstanceListOfSameClass.js +23 -32
  91. package/dist/InstanceList/InstanceListOfSameClass.js.map +1 -1
  92. package/dist/InstanceList/Partition.d.ts +45 -0
  93. package/dist/InstanceList/Partition.js +176 -131
  94. package/dist/InstanceList/Partition.js.map +1 -1
  95. package/dist/Model/DecisionTree/DecisionCondition.d.ts +8 -0
  96. package/dist/Model/DecisionTree/DecisionCondition.js +71 -72
  97. package/dist/Model/DecisionTree/DecisionCondition.js.map +1 -1
  98. package/dist/Model/DecisionTree/DecisionNode.d.ts +38 -1
  99. package/dist/Model/DecisionTree/DecisionNode.js +302 -275
  100. package/dist/Model/DecisionTree/DecisionNode.js.map +1 -1
  101. package/dist/Model/DecisionTree/DecisionStump.d.ts +17 -0
  102. package/dist/Model/DecisionTree/DecisionStump.js +25 -0
  103. package/dist/Model/DecisionTree/DecisionStump.js.map +1 -0
  104. package/dist/Model/DecisionTree/DecisionTree.d.ts +24 -9
  105. package/dist/Model/DecisionTree/DecisionTree.js +90 -76
  106. package/dist/Model/DecisionTree/DecisionTree.js.map +1 -1
  107. package/dist/Model/DummyModel.d.ts +28 -3
  108. package/dist/Model/DummyModel.js +64 -50
  109. package/dist/Model/DummyModel.js.map +1 -1
  110. package/dist/{Classifier/Bagging.d.ts → Model/Ensemble/BaggingModel.d.ts} +8 -4
  111. package/dist/Model/Ensemble/BaggingModel.js +37 -0
  112. package/dist/Model/Ensemble/BaggingModel.js.map +1 -0
  113. package/dist/{Classifier/RandomForest.d.ts → Model/Ensemble/RandomForestModel.d.ts} +8 -4
  114. package/dist/Model/Ensemble/RandomForestModel.js +34 -0
  115. package/dist/Model/Ensemble/RandomForestModel.js.map +1 -0
  116. package/dist/Model/Ensemble/TreeEnsembleModel.d.ts +32 -0
  117. package/dist/Model/Ensemble/TreeEnsembleModel.js +61 -0
  118. package/dist/Model/Ensemble/TreeEnsembleModel.js.map +1 -0
  119. package/dist/Model/Model.d.ts +50 -0
  120. package/dist/Model/Model.js +131 -72
  121. package/dist/Model/Model.js.map +1 -1
  122. package/dist/Model/NeuralNetwork/DeepNetworkModel.d.ts +47 -0
  123. package/dist/Model/NeuralNetwork/DeepNetworkModel.js +180 -0
  124. package/dist/Model/NeuralNetwork/DeepNetworkModel.js.map +1 -0
  125. package/dist/Model/NeuralNetwork/LinearPerceptronModel.d.ts +31 -0
  126. package/dist/Model/NeuralNetwork/LinearPerceptronModel.js +75 -0
  127. package/dist/Model/NeuralNetwork/LinearPerceptronModel.js.map +1 -0
  128. package/dist/Model/NeuralNetwork/MultiLayerPerceptronModel.d.ts +39 -0
  129. package/dist/Model/NeuralNetwork/MultiLayerPerceptronModel.js +119 -0
  130. package/dist/Model/NeuralNetwork/MultiLayerPerceptronModel.js.map +1 -0
  131. package/dist/Model/{NeuralNetworkModel.d.ts → NeuralNetwork/NeuralNetworkModel.d.ts} +19 -5
  132. package/dist/Model/NeuralNetwork/NeuralNetworkModel.js +211 -0
  133. package/dist/Model/NeuralNetwork/NeuralNetworkModel.js.map +1 -0
  134. package/dist/Model/{KnnInstance.d.ts → NonParametric/KnnInstance.d.ts} +1 -1
  135. package/dist/Model/NonParametric/KnnInstance.js +25 -0
  136. package/dist/Model/NonParametric/KnnInstance.js.map +1 -0
  137. package/dist/Model/{KnnModel.d.ts → NonParametric/KnnModel.d.ts} +30 -6
  138. package/dist/Model/NonParametric/KnnModel.js +111 -0
  139. package/dist/Model/NonParametric/KnnModel.js.map +1 -0
  140. package/dist/Model/{GaussianModel.d.ts → Parametric/GaussianModel.d.ts} +20 -2
  141. package/dist/Model/Parametric/GaussianModel.js +95 -0
  142. package/dist/Model/Parametric/GaussianModel.js.map +1 -0
  143. package/dist/Model/Parametric/KMeansModel.d.ts +36 -0
  144. package/dist/Model/Parametric/KMeansModel.js +65 -0
  145. package/dist/Model/Parametric/KMeansModel.js.map +1 -0
  146. package/dist/Model/Parametric/LdaModel.d.ts +44 -0
  147. package/dist/Model/Parametric/LdaModel.js +90 -0
  148. package/dist/Model/Parametric/LdaModel.js.map +1 -0
  149. package/dist/Model/{NaiveBayesModel.d.ts → Parametric/NaiveBayesModel.d.ts} +30 -10
  150. package/dist/Model/Parametric/NaiveBayesModel.js +131 -0
  151. package/dist/Model/Parametric/NaiveBayesModel.js.map +1 -0
  152. package/dist/Model/Parametric/QdaModel.d.ts +30 -0
  153. package/dist/Model/Parametric/QdaModel.js +75 -0
  154. package/dist/Model/Parametric/QdaModel.js.map +1 -0
  155. package/dist/Model/RandomModel.d.ts +32 -2
  156. package/dist/Model/RandomModel.js +85 -60
  157. package/dist/Model/RandomModel.js.map +1 -1
  158. package/dist/Model/ValidatedModel.js +21 -31
  159. package/dist/Model/ValidatedModel.js.map +1 -1
  160. package/dist/Parameter/ActivationFunction.js +9 -19
  161. package/dist/Parameter/ActivationFunction.js.map +1 -1
  162. package/dist/Parameter/BaggingParameter.js +24 -33
  163. package/dist/Parameter/BaggingParameter.js.map +1 -1
  164. package/dist/Parameter/C45Parameter.d.ts +2 -2
  165. package/dist/Parameter/C45Parameter.js +34 -42
  166. package/dist/Parameter/C45Parameter.js.map +1 -1
  167. package/dist/Parameter/DeepNetworkParameter.d.ts +2 -2
  168. package/dist/Parameter/DeepNetworkParameter.js +48 -56
  169. package/dist/Parameter/DeepNetworkParameter.js.map +1 -1
  170. package/dist/Parameter/KMeansParameter.js +29 -38
  171. package/dist/Parameter/KMeansParameter.js.map +1 -1
  172. package/dist/Parameter/KnnParameter.d.ts +1 -1
  173. package/dist/Parameter/KnnParameter.js +25 -34
  174. package/dist/Parameter/KnnParameter.js.map +1 -1
  175. package/dist/Parameter/LinearPerceptronParameter.d.ts +4 -4
  176. package/dist/Parameter/LinearPerceptronParameter.js +56 -62
  177. package/dist/Parameter/LinearPerceptronParameter.js.map +1 -1
  178. package/dist/Parameter/MultiLayerPerceptronParameter.d.ts +2 -2
  179. package/dist/Parameter/MultiLayerPerceptronParameter.js +38 -46
  180. package/dist/Parameter/MultiLayerPerceptronParameter.js.map +1 -1
  181. package/dist/Parameter/Parameter.d.ts +1 -1
  182. package/dist/Parameter/Parameter.js +21 -30
  183. package/dist/Parameter/Parameter.js.map +1 -1
  184. package/dist/Parameter/RandomForestParameter.js +25 -34
  185. package/dist/Parameter/RandomForestParameter.js.map +1 -1
  186. package/dist/Performance/ClassificationPerformance.js +24 -33
  187. package/dist/Performance/ClassificationPerformance.js.map +1 -1
  188. package/dist/Performance/ConfusionMatrix.d.ts +1 -1
  189. package/dist/Performance/ConfusionMatrix.js +149 -158
  190. package/dist/Performance/ConfusionMatrix.js.map +1 -1
  191. package/dist/Performance/DetailedClassificationPerformance.js +23 -32
  192. package/dist/Performance/DetailedClassificationPerformance.js.map +1 -1
  193. package/dist/Performance/ExperimentPerformance.js +184 -161
  194. package/dist/Performance/ExperimentPerformance.js.map +1 -1
  195. package/dist/Performance/Performance.js +21 -30
  196. package/dist/Performance/Performance.js.map +1 -1
  197. package/dist/StatisticalTest/Combined5x2F.d.ts +12 -0
  198. package/dist/StatisticalTest/Combined5x2F.js +41 -39
  199. package/dist/StatisticalTest/Combined5x2F.js.map +1 -1
  200. package/dist/StatisticalTest/Combined5x2t.d.ts +13 -0
  201. package/dist/StatisticalTest/Combined5x2t.js +42 -39
  202. package/dist/StatisticalTest/Combined5x2t.js.map +1 -1
  203. package/dist/StatisticalTest/Paired5x2t.d.ts +12 -0
  204. package/dist/StatisticalTest/Paired5x2t.js +40 -38
  205. package/dist/StatisticalTest/Paired5x2t.js.map +1 -1
  206. package/dist/StatisticalTest/PairedTest.d.ts +12 -0
  207. package/dist/StatisticalTest/PairedTest.js +31 -29
  208. package/dist/StatisticalTest/PairedTest.js.map +1 -1
  209. package/dist/StatisticalTest/Pairedt.d.ts +12 -0
  210. package/dist/StatisticalTest/Pairedt.js +38 -36
  211. package/dist/StatisticalTest/Pairedt.js.map +1 -1
  212. package/dist/StatisticalTest/Sign.d.ts +17 -0
  213. package/dist/StatisticalTest/Sign.js +50 -43
  214. package/dist/StatisticalTest/Sign.js.map +1 -1
  215. package/dist/StatisticalTest/StatisticalTestResult.d.ts +30 -0
  216. package/dist/StatisticalTest/StatisticalTestResult.js +65 -43
  217. package/dist/StatisticalTest/StatisticalTestResult.js.map +1 -1
  218. package/dist/StatisticalTest/StatisticalTestResultType.js +11 -21
  219. package/dist/StatisticalTest/StatisticalTestResultType.js.map +1 -1
  220. package/dist/index.d.ts +88 -0
  221. package/dist/index.js +105 -0
  222. package/dist/index.js.map +1 -0
  223. package/package.json +9 -8
  224. package/source/Attribute/DiscreteAttribute.ts +1 -1
  225. package/source/Attribute/DiscreteIndexedAttribute.ts +2 -2
  226. package/source/DataSet/DataDefinition.ts +11 -0
  227. package/source/Experiment/BootstrapRun.ts +2 -2
  228. package/source/Experiment/Experiment.ts +10 -10
  229. package/source/Experiment/KFoldRun.ts +20 -5
  230. package/source/Experiment/KFoldRunSeparateTest.ts +16 -5
  231. package/source/Experiment/MxKFoldRun.ts +1 -1
  232. package/source/Experiment/MxKFoldRunSeparateTest.ts +1 -1
  233. package/source/Experiment/SingleRunWithK.ts +20 -5
  234. package/source/Experiment/StratifiedKFoldRun.ts +1 -1
  235. package/source/Experiment/StratifiedKFoldRunSeparateTest.ts +1 -1
  236. package/source/Experiment/StratifiedMxKFoldRun.ts +1 -1
  237. package/source/Experiment/StratifiedMxKFoldRunSeparateTest.ts +3 -3
  238. package/source/Experiment/StratifiedSingleRunWithK.ts +1 -1
  239. package/source/Filter/LaryFilter.ts +1 -1
  240. package/source/Filter/TrainedFeatureFilter.ts +1 -1
  241. package/source/InstanceList/Partition.ts +125 -65
  242. package/source/Model/DecisionTree/DecisionCondition.ts +8 -0
  243. package/source/Model/DecisionTree/DecisionNode.ts +56 -20
  244. package/source/Model/DecisionTree/DecisionStump.ts +26 -0
  245. package/source/Model/DecisionTree/DecisionTree.ts +44 -15
  246. package/source/Model/DummyModel.ts +40 -10
  247. package/source/{Classifier/Bagging.ts → Model/Ensemble/BaggingModel.ts} +15 -12
  248. package/source/{Classifier/RandomForest.ts → Model/Ensemble/RandomForestModel.ts} +14 -12
  249. package/source/Model/{TreeEnsembleModel.ts → Ensemble/TreeEnsembleModel.ts} +26 -18
  250. package/source/Model/Model.ts +77 -0
  251. package/source/Model/{DeepNetworkModel.ts → NeuralNetwork/DeepNetworkModel.ts} +59 -56
  252. package/source/Model/NeuralNetwork/LinearPerceptronModel.ts +81 -0
  253. package/source/Model/{MultiLayerPerceptronModel.ts → NeuralNetwork/MultiLayerPerceptronModel.ts} +46 -39
  254. package/source/Model/{NeuralNetworkModel.ts → NeuralNetwork/NeuralNetworkModel.ts} +20 -7
  255. package/source/Model/{KnnInstance.ts → NonParametric/KnnInstance.ts} +1 -1
  256. package/source/Model/{KnnModel.ts → NonParametric/KnnModel.ts} +48 -19
  257. package/source/Model/{GaussianModel.ts → Parametric/GaussianModel.ts} +21 -3
  258. package/source/Model/Parametric/KMeansModel.ts +72 -0
  259. package/source/Model/Parametric/LdaModel.ts +98 -0
  260. package/source/Model/{NaiveBayesModel.ts → Parametric/NaiveBayesModel.ts} +68 -25
  261. package/source/Model/Parametric/QdaModel.ts +83 -0
  262. package/source/Model/RandomModel.ts +54 -16
  263. package/source/Parameter/C45Parameter.ts +2 -2
  264. package/source/Parameter/DeepNetworkParameter.ts +2 -2
  265. package/source/Parameter/KnnParameter.ts +1 -1
  266. package/source/Parameter/LinearPerceptronParameter.ts +4 -4
  267. package/source/Parameter/MultiLayerPerceptronParameter.ts +2 -2
  268. package/source/Parameter/Parameter.ts +1 -1
  269. package/source/Performance/ConfusionMatrix.ts +1 -1
  270. package/source/StatisticalTest/Combined5x2F.ts +12 -0
  271. package/source/StatisticalTest/Combined5x2t.ts +13 -0
  272. package/source/StatisticalTest/Paired5x2t.ts +12 -0
  273. package/source/StatisticalTest/PairedTest.ts +12 -0
  274. package/source/StatisticalTest/Pairedt.ts +12 -0
  275. package/source/StatisticalTest/Sign.ts +17 -0
  276. package/source/StatisticalTest/StatisticalTestResult.ts +30 -0
  277. package/source/index.ts +88 -0
  278. package/tests/Classifier/C45Test.ts +2 -2
  279. package/tests/Classifier/DeepNetworkTest.ts +3 -5
  280. package/tests/Classifier/DummyTest.ts +2 -2
  281. package/tests/Classifier/KMeansTest.ts +2 -2
  282. package/tests/Classifier/KnnTest.ts +2 -2
  283. package/tests/Classifier/LdaTest.ts +2 -2
  284. package/tests/Classifier/LinearPerceptronTest.ts +2 -2
  285. package/tests/Classifier/MultiLayerPerceptronTest.ts +2 -3
  286. package/tests/Classifier/NaiveBayesTest.ts +2 -2
  287. package/tests/Classifier/QdaTest.ts +2 -2
  288. package/tests/Classifier/RandomForestTest.ts +2 -2
  289. package/tsconfig.json +4 -4
  290. package/dist/Classifier/Bagging.js +0 -45
  291. package/dist/Classifier/Bagging.js.map +0 -1
  292. package/dist/Classifier/C45.d.ts +0 -14
  293. package/dist/Classifier/C45.js +0 -43
  294. package/dist/Classifier/C45.js.map +0 -1
  295. package/dist/Classifier/C45Stump.d.ts +0 -13
  296. package/dist/Classifier/C45Stump.js +0 -32
  297. package/dist/Classifier/C45Stump.js.map +0 -1
  298. package/dist/Classifier/Classifier.d.ts +0 -40
  299. package/dist/Classifier/Classifier.js +0 -72
  300. package/dist/Classifier/Classifier.js.map +0 -1
  301. package/dist/Classifier/DeepNetwork.d.ts +0 -14
  302. package/dist/Classifier/DeepNetwork.js +0 -34
  303. package/dist/Classifier/DeepNetwork.js.map +0 -1
  304. package/dist/Classifier/Dummy.d.ts +0 -14
  305. package/dist/Classifier/Dummy.js +0 -32
  306. package/dist/Classifier/Dummy.js.map +0 -1
  307. package/dist/Classifier/KMeans.d.ts +0 -13
  308. package/dist/Classifier/KMeans.js +0 -39
  309. package/dist/Classifier/KMeans.js.map +0 -1
  310. package/dist/Classifier/Knn.d.ts +0 -14
  311. package/dist/Classifier/Knn.js +0 -32
  312. package/dist/Classifier/Knn.js.map +0 -1
  313. package/dist/Classifier/Lda.d.ts +0 -13
  314. package/dist/Classifier/Lda.js +0 -55
  315. package/dist/Classifier/Lda.js.map +0 -1
  316. package/dist/Classifier/LinearPerceptron.d.ts +0 -15
  317. package/dist/Classifier/LinearPerceptron.js +0 -35
  318. package/dist/Classifier/LinearPerceptron.js.map +0 -1
  319. package/dist/Classifier/MultiLayerPerceptron.d.ts +0 -15
  320. package/dist/Classifier/MultiLayerPerceptron.js +0 -35
  321. package/dist/Classifier/MultiLayerPerceptron.js.map +0 -1
  322. package/dist/Classifier/NaiveBayes.d.ts +0 -26
  323. package/dist/Classifier/NaiveBayes.js +0 -70
  324. package/dist/Classifier/NaiveBayes.js.map +0 -1
  325. package/dist/Classifier/Qda.d.ts +0 -13
  326. package/dist/Classifier/Qda.js +0 -53
  327. package/dist/Classifier/Qda.js.map +0 -1
  328. package/dist/Classifier/RandomClassifier.d.ts +0 -13
  329. package/dist/Classifier/RandomClassifier.js +0 -35
  330. package/dist/Classifier/RandomClassifier.js.map +0 -1
  331. package/dist/Classifier/RandomForest.js +0 -42
  332. package/dist/Classifier/RandomForest.js.map +0 -1
  333. package/dist/Model/DeepNetworkModel.d.ts +0 -45
  334. package/dist/Model/DeepNetworkModel.js +0 -187
  335. package/dist/Model/DeepNetworkModel.js.map +0 -1
  336. package/dist/Model/GaussianModel.js +0 -86
  337. package/dist/Model/GaussianModel.js.map +0 -1
  338. package/dist/Model/KMeansModel.d.ts +0 -28
  339. package/dist/Model/KMeansModel.js +0 -61
  340. package/dist/Model/KMeansModel.js.map +0 -1
  341. package/dist/Model/KnnInstance.js +0 -33
  342. package/dist/Model/KnnInstance.js.map +0 -1
  343. package/dist/Model/KnnModel.js +0 -95
  344. package/dist/Model/KnnModel.js.map +0 -1
  345. package/dist/Model/LdaModel.d.ts +0 -28
  346. package/dist/Model/LdaModel.js +0 -67
  347. package/dist/Model/LdaModel.js.map +0 -1
  348. package/dist/Model/LinearPerceptronModel.d.ts +0 -24
  349. package/dist/Model/LinearPerceptronModel.js +0 -91
  350. package/dist/Model/LinearPerceptronModel.js.map +0 -1
  351. package/dist/Model/MultiLayerPerceptronModel.d.ts +0 -33
  352. package/dist/Model/MultiLayerPerceptronModel.js +0 -123
  353. package/dist/Model/MultiLayerPerceptronModel.js.map +0 -1
  354. package/dist/Model/NaiveBayesModel.js +0 -107
  355. package/dist/Model/NaiveBayesModel.js.map +0 -1
  356. package/dist/Model/NeuralNetworkModel.js +0 -202
  357. package/dist/Model/NeuralNetworkModel.js.map +0 -1
  358. package/dist/Model/QdaModel.d.ts +0 -27
  359. package/dist/Model/QdaModel.js +0 -63
  360. package/dist/Model/QdaModel.js.map +0 -1
  361. package/dist/Model/TreeEnsembleModel.d.ts +0 -22
  362. package/dist/Model/TreeEnsembleModel.js +0 -64
  363. package/dist/Model/TreeEnsembleModel.js.map +0 -1
  364. package/index.js +0 -100
  365. package/source/Classifier/C45.ts +0 -34
  366. package/source/Classifier/C45Stump.ts +0 -23
  367. package/source/Classifier/Classifier.ts +0 -72
  368. package/source/Classifier/DeepNetwork.ts +0 -26
  369. package/source/Classifier/Dummy.ts +0 -23
  370. package/source/Classifier/KMeans.ts +0 -30
  371. package/source/Classifier/Knn.ts +0 -25
  372. package/source/Classifier/Lda.ts +0 -47
  373. package/source/Classifier/LinearPerceptron.ts +0 -27
  374. package/source/Classifier/MultiLayerPerceptron.ts +0 -27
  375. package/source/Classifier/NaiveBayes.ts +0 -66
  376. package/source/Classifier/Qda.ts +0 -46
  377. package/source/Classifier/RandomClassifier.ts +0 -26
  378. package/source/Model/KMeansModel.ts +0 -56
  379. package/source/Model/LdaModel.ts +0 -62
  380. package/source/Model/LinearPerceptronModel.ts +0 -83
  381. package/source/Model/QdaModel.ts +0 -57
  382. package/source/tsconfig.json +0 -13
@@ -0,0 +1,211 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.NeuralNetworkModel = void 0;
4
+ const ValidatedModel_1 = require("../ValidatedModel");
5
+ const Vector_1 = require("nlptoolkit-math/dist/Vector");
6
+ const Matrix_1 = require("nlptoolkit-math/dist/Matrix");
7
+ const ActivationFunction_1 = require("../../Parameter/ActivationFunction");
8
+ const CompositeInstance_1 = require("../../Instance/CompositeInstance");
9
+ class NeuralNetworkModel extends ValidatedModel_1.ValidatedModel {
10
+ classLabels;
11
+ K;
12
+ d;
13
+ x;
14
+ y;
15
+ r;
16
+ /**
17
+ * Constructor that sets the class labels, their sizes as K and the size of the continuous attributes as d.
18
+ *
19
+ * @param trainSet {@link InstanceList} to use as train set.
20
+ */
21
+ initialize(trainSet) {
22
+ if (trainSet != undefined) {
23
+ this.classLabels = trainSet.getDistinctClassLabels();
24
+ this.K = this.classLabels.length;
25
+ this.d = trainSet.get(0).continuousAttributeSize();
26
+ }
27
+ }
28
+ /**
29
+ * The allocateLayerWeights method returns a new {@link Matrix} with random weights.
30
+ *
31
+ * @param row Number of rows.
32
+ * @param column Number of columns.
33
+ * @param random Random function to set weights.
34
+ * @return Matrix with random weights.
35
+ */
36
+ allocateLayerWeights(row, column, random) {
37
+ return new Matrix_1.Matrix(row, column, -0.01, +0.01, random);
38
+ }
39
+ /**
40
+ * The normalizeOutput method takes an input {@link Vector} o, gets the result for e^o of each element of o,
41
+ * then sums them up. At the end, divides each e^o by the summation.
42
+ *
43
+ * @param o Vector to normalize.
44
+ * @return Normalized vector.
45
+ */
46
+ normalizeOutput(o) {
47
+ let sum = 0.0;
48
+ let values = new Array();
49
+ for (let i = 0; i < o.size(); i++) {
50
+ sum += Math.exp(o.getValue(i));
51
+ }
52
+ for (let i = 0; i < o.size(); i++) {
53
+ values.push(Math.exp(o.getValue(i)) / sum);
54
+ }
55
+ return new Vector_1.Vector(values);
56
+ }
57
+ /**
58
+ * The createInputVector method takes an {@link Instance} as an input. It converts given Instance to the {@link Vector}
59
+ * and insert 1.0 to the first element.
60
+ *
61
+ * @param instance Instance to insert 1.0.
62
+ */
63
+ createInputVector(instance) {
64
+ this.x = instance.toVector();
65
+ this.x.insert(0, 1.0);
66
+ }
67
+ /**
68
+ * The calculateHidden method takes a {@link Vector} input and {@link Matrix} weights, It multiplies the weights
69
+ * Matrix with given input Vector than applies the sigmoid function and returns the result.
70
+ *
71
+ * @param input Vector to multiply weights.
72
+ * @param weights Matrix is multiplied with input Vector.
73
+ * @param activationFunction Activation function.
74
+ * @return Result of sigmoid function.
75
+ */
76
+ calculateHidden(input, weights, activationFunction) {
77
+ let z = weights.multiplyWithVectorFromRight(input);
78
+ switch (activationFunction) {
79
+ case ActivationFunction_1.ActivationFunction.SIGMOID:
80
+ default:
81
+ z.sigmoid();
82
+ break;
83
+ case ActivationFunction_1.ActivationFunction.TANH:
84
+ z.tanh();
85
+ break;
86
+ case ActivationFunction_1.ActivationFunction.RELU:
87
+ z.relu();
88
+ break;
89
+ }
90
+ return z;
91
+ }
92
+ /**
93
+ * The calculateOneMinusHidden method takes a {@link Vector} as input. It creates a Vector of ones and
94
+ * returns the difference between given Vector.
95
+ *
96
+ * @param hidden Vector to find difference.
97
+ * @return Returns the difference between one's Vector and input Vector.
98
+ */
99
+ calculateOneMinusHidden(hidden) {
100
+ let one = new Vector_1.Vector(hidden.size(), 1.0);
101
+ return one.difference(hidden);
102
+ }
103
+ /**
104
+ * The calculateForwardSingleHiddenLayer method takes two matrices W and V. First it multiplies W with x, then
105
+ * multiplies V with the result of the previous multiplication.
106
+ *
107
+ * @param W Matrix to multiply with x.
108
+ * @param V Matrix to multiply.
109
+ * @param activationFunction Activation function.
110
+ */
111
+ calculateForwardSingleHiddenLayer(W, V, activationFunction) {
112
+ let hidden = this.calculateHidden(this.x, W, activationFunction);
113
+ let hiddenBiased = hidden.biased();
114
+ this.y = V.multiplyWithVectorFromRight(hiddenBiased);
115
+ }
116
+ /**
117
+ * The calculateRMinusY method creates a new {@link Vector} with given Instance, then it multiplies given
118
+ * input Vector with given weights Matrix. After normalizing the output, it returns the difference between the newly created
119
+ * Vector and normalized output.
120
+ *
121
+ * @param instance Instance is used to get class labels.
122
+ * @param input Vector to multiply weights.
123
+ * @param weights Matrix of weights/
124
+ * @return Difference between newly created Vector and normalized output.
125
+ */
126
+ calculateRMinusY(instance, input, weights) {
127
+ this.r = new Vector_1.Vector(this.K, 1.0, this.classLabels.indexOf(instance.getClassLabel()));
128
+ let o = weights.multiplyWithVectorFromRight(input);
129
+ this.y = this.normalizeOutput(o);
130
+ return this.r.difference(this.y);
131
+ }
132
+ /**
133
+ * The predictWithCompositeInstance method takes an ArrayList possibleClassLabels. It returns the class label
134
+ * which has the maximum value of y.
135
+ *
136
+ * @param possibleClassLabels ArrayList that has the class labels.
137
+ * @return The class label which has the maximum value of y.
138
+ */
139
+ predictWithCompositeInstance(possibleClassLabels) {
140
+ let predictedClass = possibleClassLabels[0];
141
+ let maxY = Number.NEGATIVE_INFINITY;
142
+ for (let i = 0; i < this.classLabels.length; i++) {
143
+ if (possibleClassLabels.includes(this.classLabels[i]) && this.y.getValue(i) > maxY) {
144
+ maxY = this.y.getValue(i);
145
+ predictedClass = this.classLabels[i];
146
+ }
147
+ }
148
+ return predictedClass;
149
+ }
150
+ /**
151
+ * The predict method takes an {@link Instance} as an input, converts it to a Vector and calculates the {@link Matrix} y by
152
+ * multiplying Matrix W with {@link Vector} x. Then it returns the class label which has the maximum y value.
153
+ *
154
+ * @param instance Instance to predict.
155
+ * @return The class label which has the maximum y.
156
+ */
157
+ predict(instance) {
158
+ this.createInputVector(instance);
159
+ this.calculateOutput();
160
+ if (instance instanceof CompositeInstance_1.CompositeInstance) {
161
+ return this.predictWithCompositeInstance(instance.getPossibleClassLabels());
162
+ }
163
+ else {
164
+ return this.classLabels[this.y.maxIndex()];
165
+ }
166
+ }
167
+ /**
168
+ * Calculates the posterior probability distribution for the given instance according to neural network model.
169
+ * @param instance Instance for which posterior probability distribution is calculated.
170
+ * @return Posterior probability distribution for the given instance.
171
+ */
172
+ predictProbability(instance) {
173
+ this.createInputVector(instance);
174
+ this.calculateOutput();
175
+ let result = new Map();
176
+ for (let i = 0; i < this.classLabels.length; i++) {
177
+ result.set(this.classLabels[i], this.y.getValue(i));
178
+ }
179
+ return result;
180
+ }
181
+ /**
182
+ * Loads the class labels from input model file.
183
+ * @param input Input model file.
184
+ */
185
+ loadClassLabels(input) {
186
+ let items = input.readLine().split(" ");
187
+ this.K = parseInt(items[0]);
188
+ this.d = parseInt(items[1]);
189
+ this.classLabels = new Array();
190
+ for (let i = 0; i < this.K; i++) {
191
+ this.classLabels.push(input.readLine());
192
+ }
193
+ }
194
+ /**
195
+ * Loads the activation function from an input model file.
196
+ * @param input Input model file.
197
+ * @return Activation function read.
198
+ */
199
+ loadActivationFunction(input) {
200
+ switch (input.readLine()) {
201
+ case "TANH":
202
+ return ActivationFunction_1.ActivationFunction.TANH;
203
+ case "RELU":
204
+ return ActivationFunction_1.ActivationFunction.RELU;
205
+ default:
206
+ return ActivationFunction_1.ActivationFunction.SIGMOID;
207
+ }
208
+ }
209
+ }
210
+ exports.NeuralNetworkModel = NeuralNetworkModel;
211
+ //# sourceMappingURL=NeuralNetworkModel.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"NeuralNetworkModel.js","sourceRoot":"","sources":["../../../source/Model/NeuralNetwork/NeuralNetworkModel.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import { Instance } from "../Instance/Instance";
1
+ import { Instance } from "../../Instance/Instance";
2
2
  export declare class KnnInstance {
3
3
  private readonly distance;
4
4
  private readonly instance;
@@ -0,0 +1,25 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.KnnInstance = void 0;
4
+ class KnnInstance {
5
+ distance;
6
+ instance;
7
+ /**
8
+ * The constructor that sets the instance and distance value.
9
+ *
10
+ * @param instance {@link Instance} input.
11
+ * @param distance Double distance value.
12
+ */
13
+ constructor(instance, distance) {
14
+ this.instance = instance;
15
+ this.distance = distance;
16
+ }
17
+ getInstance() {
18
+ return this.instance;
19
+ }
20
+ getDistance() {
21
+ return this.distance;
22
+ }
23
+ }
24
+ exports.KnnInstance = KnnInstance;
25
+ //# sourceMappingURL=KnnInstance.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"KnnInstance.js","sourceRoot":"","sources":["../../../source/Model/NonParametric/KnnInstance.ts"],"names":[],"mappings":";;;AAEA,MAAa,WAAW;IAEH,QAAQ,CAAQ;IAChB,QAAQ,CAAU;IAEnC;;;;;OAKG;IACH,YAAY,QAAkB,EAAE,QAAgB;QAC5C,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QACzB,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;IAC7B,CAAC;IAED,WAAW;QACP,OAAO,IAAI,CAAC,QAAQ,CAAA;IACxB,CAAC;IAED,WAAW;QACP,OAAO,IAAI,CAAC,QAAQ,CAAA;IACxB,CAAC;CAEJ;AAxBD,kCAwBC"}
@@ -1,7 +1,8 @@
1
- import { Model } from "./Model";
2
- import { InstanceList } from "../InstanceList/InstanceList";
3
- import { Instance } from "../Instance/Instance";
4
- import { DistanceMetric } from "../DistanceMetric/DistanceMetric";
1
+ import { Model } from "../Model";
2
+ import { InstanceList } from "../../InstanceList/InstanceList";
3
+ import { Instance } from "../../Instance/Instance";
4
+ import { DistanceMetric } from "../../DistanceMetric/DistanceMetric";
5
+ import { Parameter } from "../../Parameter/Parameter";
5
6
  export declare class KnnModel extends Model {
6
7
  private data;
7
8
  private k;
@@ -9,11 +10,16 @@ export declare class KnnModel extends Model {
9
10
  /**
10
11
  * Constructor that sets the data {@link InstanceList}, k value and the {@link DistanceMetric}.
11
12
  *
12
- * @param dataOrFileName {@link InstanceList} input.
13
+ * @param data {@link InstanceList} input.
13
14
  * @param k K value.
14
15
  * @param distanceMetric {@link DistanceMetric} input.
15
16
  */
16
- constructor(dataOrFileName: InstanceList | string, k?: number, distanceMetric?: DistanceMetric);
17
+ constructor1(data: InstanceList, k: number, distanceMetric: DistanceMetric): void;
18
+ /**
19
+ * Loads a K-nearest neighbor model from an input model file.
20
+ * @param fileName Model file name.
21
+ */
22
+ constructor2(fileName: string): void;
17
23
  /**
18
24
  * The predict method takes an {@link Instance} as an input and finds the nearest neighbors of given instance. Then
19
25
  * it returns the first possible class label as the predicted class.
@@ -22,6 +28,11 @@ export declare class KnnModel extends Model {
22
28
  * @return The first possible class label as the predicted class.
23
29
  */
24
30
  predict(instance: Instance): string;
31
+ /**
32
+ * Calculates the posterior probability distribution for the given instance according to K-means model.
33
+ * @param instance Instance for which posterior probability distribution is calculated.
34
+ * @return Posterior probability distribution for the given instance.
35
+ */
25
36
  predictProbability(instance: Instance): Map<string, number>;
26
37
  /**
27
38
  * The nearestNeighbors method takes an {@link Instance} as an input. First it gets the possible class labels, then loops
@@ -34,4 +45,17 @@ export declare class KnnModel extends Model {
34
45
  */
35
46
  nearestNeighbors(instance: Instance): InstanceList;
36
47
  saveTxt(fileName: string): void;
48
+ /**
49
+ * Training algorithm for K-nearest neighbor classifier.
50
+ *
51
+ * @param trainSet Training data given to the algorithm.
52
+ * @param parameters K: k parameter of the K-nearest neighbor algorithm
53
+ * distanceMetric: distance metric used to calculate the distance between two instances.
54
+ */
55
+ train(trainSet: InstanceList, parameters: Parameter): void;
56
+ /**
57
+ * Loads the K-nearest neighbor model from an input file.
58
+ * @param fileName File name of the K-nearest neighbor model.
59
+ */
60
+ loadModel(fileName: string): void;
37
61
  }
@@ -0,0 +1,111 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.KnnModel = void 0;
4
+ const Model_1 = require("../Model");
5
+ const InstanceList_1 = require("../../InstanceList/InstanceList");
6
+ const CompositeInstance_1 = require("../../Instance/CompositeInstance");
7
+ const KnnInstance_1 = require("./KnnInstance");
8
+ const EuclidianDistance_1 = require("../../DistanceMetric/EuclidianDistance");
9
+ const FileContents_1 = require("nlptoolkit-util/dist/FileContents");
10
+ class KnnModel extends Model_1.Model {
11
+ data;
12
+ k;
13
+ distanceMetric;
14
+ /**
15
+ * Constructor that sets the data {@link InstanceList}, k value and the {@link DistanceMetric}.
16
+ *
17
+ * @param data {@link InstanceList} input.
18
+ * @param k K value.
19
+ * @param distanceMetric {@link DistanceMetric} input.
20
+ */
21
+ constructor1(data, k, distanceMetric) {
22
+ this.data = data;
23
+ this.k = k;
24
+ this.distanceMetric = distanceMetric;
25
+ }
26
+ /**
27
+ * Loads a K-nearest neighbor model from an input model file.
28
+ * @param fileName Model file name.
29
+ */
30
+ constructor2(fileName) {
31
+ this.distanceMetric = new EuclidianDistance_1.EuclidianDistance();
32
+ let input = new FileContents_1.FileContents(fileName);
33
+ this.k = parseInt(input.readLine());
34
+ this.data = this.loadInstanceList(input);
35
+ }
36
+ /**
37
+ * The predict method takes an {@link Instance} as an input and finds the nearest neighbors of given instance. Then
38
+ * it returns the first possible class label as the predicted class.
39
+ *
40
+ * @param instance {@link Instance} to make prediction.
41
+ * @return The first possible class label as the predicted class.
42
+ */
43
+ predict(instance) {
44
+ let nearestNeighbors = this.nearestNeighbors(instance);
45
+ let predictedClass;
46
+ if (instance instanceof CompositeInstance_1.CompositeInstance && nearestNeighbors.size() == 0) {
47
+ predictedClass = instance.getPossibleClassLabels()[0];
48
+ }
49
+ else {
50
+ predictedClass = Model_1.Model.getMaximum(nearestNeighbors.getClassLabels());
51
+ }
52
+ return predictedClass;
53
+ }
54
+ /**
55
+ * Calculates the posterior probability distribution for the given instance according to K-means model.
56
+ * @param instance Instance for which posterior probability distribution is calculated.
57
+ * @return Posterior probability distribution for the given instance.
58
+ */
59
+ predictProbability(instance) {
60
+ let nearestNeighbors = this.nearestNeighbors(instance);
61
+ return nearestNeighbors.classDistribution().getProbabilityDistribution();
62
+ }
63
+ /**
64
+ * The nearestNeighbors method takes an {@link Instance} as an input. First it gets the possible class labels, then loops
65
+ * through the data {@link InstanceList} and creates new {@link Array} of {@link KnnInstance}s and adds the corresponding data with
66
+ * the distance between data and given instance. After sorting this newly created ArrayList, it loops k times and
67
+ * returns the first k instances as an {@link InstanceList}.
68
+ *
69
+ * @param instance {@link Instance} to find nearest neighbors/
70
+ * @return The first k instances which are nearest to the given instance as an {@link InstanceList}.
71
+ */
72
+ nearestNeighbors(instance) {
73
+ let result = new InstanceList_1.InstanceList();
74
+ let instances = new Array();
75
+ let possibleClassLabels = undefined;
76
+ if (instance instanceof CompositeInstance_1.CompositeInstance) {
77
+ possibleClassLabels = instance.getPossibleClassLabels();
78
+ }
79
+ for (let i = 0; i < this.data.size(); i++) {
80
+ if (!(instance instanceof CompositeInstance_1.CompositeInstance) || possibleClassLabels.includes(this.data.get(i).getClassLabel())) {
81
+ instances.push(new KnnInstance_1.KnnInstance(this.data.get(i), this.distanceMetric.distance(this.data.get(i), instance)));
82
+ }
83
+ }
84
+ instances.sort((a, b) => a.getDistance() < b.getDistance() ? -1 : a.getDistance() > b.getDistance() ? 1 : 0);
85
+ for (let i = 0; i < Math.min(this.k, instances.length); i++) {
86
+ result.add(instances[i].getInstance());
87
+ }
88
+ return result;
89
+ }
90
+ saveTxt(fileName) {
91
+ }
92
+ /**
93
+ * Training algorithm for K-nearest neighbor classifier.
94
+ *
95
+ * @param trainSet Training data given to the algorithm.
96
+ * @param parameters K: k parameter of the K-nearest neighbor algorithm
97
+ * distanceMetric: distance metric used to calculate the distance between two instances.
98
+ */
99
+ train(trainSet, parameters) {
100
+ this.constructor1(trainSet, parameters.getK(), parameters.getDistanceMetric());
101
+ }
102
+ /**
103
+ * Loads the K-nearest neighbor model from an input file.
104
+ * @param fileName File name of the K-nearest neighbor model.
105
+ */
106
+ loadModel(fileName) {
107
+ this.constructor2(fileName);
108
+ }
109
+ }
110
+ exports.KnnModel = KnnModel;
111
+ //# sourceMappingURL=KnnModel.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"KnnModel.js","sourceRoot":"","sources":["../../../source/Model/NonParametric/KnnModel.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,6 @@
1
1
  import { DiscreteDistribution } from "nlptoolkit-math/dist/DiscreteDistribution";
2
- import { Instance } from "../Instance/Instance";
3
- import { ValidatedModel } from "./ValidatedModel";
2
+ import { Instance } from "../../Instance/Instance";
3
+ import { ValidatedModel } from "../ValidatedModel";
4
4
  import { FileContents } from "nlptoolkit-util/dist/FileContents";
5
5
  import { Vector } from "nlptoolkit-math/dist/Vector";
6
6
  export declare abstract class GaussianModel extends ValidatedModel {
@@ -22,7 +22,25 @@ export declare abstract class GaussianModel extends ValidatedModel {
22
22
  * @return The class which has the maximum value of metric.
23
23
  */
24
24
  predict(instance: Instance): string;
25
+ /**
26
+ * Loads the prior probability distribution from an input model file.
27
+ * @param input Input model file.
28
+ * @return Prior probability distribution.
29
+ * @throws IOException If the input file can not be read, the method throws IOException.
30
+ */
25
31
  loadPriorDistribution(input: FileContents): number;
32
+ /**
33
+ * Loads hash map of vectors from input model file.
34
+ * @param input Input model file.
35
+ * @param size Number of vectors to be read from input model file.
36
+ * @return Hash map of vectors.
37
+ * @throws IOException If the input file can not be read, the method throws IOException.
38
+ */
26
39
  loadVectors(input: FileContents, size: number): Map<string, Vector>;
40
+ /**
41
+ * Calculates the posterior probability distribution for the given instance according to Gaussian model.
42
+ * @param instance Instance for which posterior probability distribution is calculated.
43
+ * @return Posterior probability distribution for the given instance.
44
+ */
27
45
  predictProbability(instance: Instance): Map<string, number>;
28
46
  }
@@ -0,0 +1,95 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.GaussianModel = void 0;
4
+ const DiscreteDistribution_1 = require("nlptoolkit-math/dist/DiscreteDistribution");
5
+ const ValidatedModel_1 = require("../ValidatedModel");
6
+ const CompositeInstance_1 = require("../../Instance/CompositeInstance");
7
+ const Vector_1 = require("nlptoolkit-math/dist/Vector");
8
+ class GaussianModel extends ValidatedModel_1.ValidatedModel {
9
+ priorDistribution;
10
+ /**
11
+ * The predict method takes an Instance as an input. First it gets the size of prior distribution and loops this size times.
12
+ * Then it gets the possible class labels and and calculates metric value. At the end, it returns the class which has the
13
+ * maximum value of metric.
14
+ *
15
+ * @param instance {@link Instance} to predict.
16
+ * @return The class which has the maximum value of metric.
17
+ */
18
+ predict(instance) {
19
+ let maxMetric = Number.NEGATIVE_INFINITY;
20
+ let predictedClass, size;
21
+ if (instance instanceof CompositeInstance_1.CompositeInstance) {
22
+ predictedClass = instance.getPossibleClassLabels()[0];
23
+ size = instance.getPossibleClassLabels().length;
24
+ }
25
+ else {
26
+ predictedClass = this.priorDistribution.getMaxItem();
27
+ size = this.priorDistribution.size;
28
+ }
29
+ for (let i = 0; i < size; i++) {
30
+ let Ci;
31
+ if (instance instanceof CompositeInstance_1.CompositeInstance) {
32
+ Ci = instance.getPossibleClassLabels()[i];
33
+ }
34
+ else {
35
+ Ci = this.priorDistribution.getItem(i);
36
+ }
37
+ if (this.priorDistribution.containsItem(Ci)) {
38
+ let metric = this.calculateMetric(instance, Ci);
39
+ if (metric > maxMetric) {
40
+ maxMetric = metric;
41
+ predictedClass = Ci;
42
+ }
43
+ }
44
+ }
45
+ return predictedClass;
46
+ }
47
+ /**
48
+ * Loads the prior probability distribution from an input model file.
49
+ * @param input Input model file.
50
+ * @return Prior probability distribution.
51
+ * @throws IOException If the input file can not be read, the method throws IOException.
52
+ */
53
+ loadPriorDistribution(input) {
54
+ let size = parseInt(input.readLine());
55
+ this.priorDistribution = new DiscreteDistribution_1.DiscreteDistribution();
56
+ for (let i = 0; i < size; i++) {
57
+ let line = input.readLine();
58
+ let items = line.split(" ");
59
+ for (let j = 0; j < parseInt(items[1]); j++) {
60
+ this.priorDistribution.addItem(items[0]);
61
+ }
62
+ }
63
+ return size;
64
+ }
65
+ /**
66
+ * Loads hash map of vectors from input model file.
67
+ * @param input Input model file.
68
+ * @param size Number of vectors to be read from input model file.
69
+ * @return Hash map of vectors.
70
+ * @throws IOException If the input file can not be read, the method throws IOException.
71
+ */
72
+ loadVectors(input, size) {
73
+ let map = new Map();
74
+ for (let i = 0; i < size; i++) {
75
+ let line = input.readLine();
76
+ let items = line.split(" ");
77
+ let vector = new Vector_1.Vector(parseInt(items[1]), 0);
78
+ for (let j = 2; j < items.length; j++) {
79
+ vector.setValue(j - 2, parseFloat(items[j]));
80
+ }
81
+ map.set(items[0], vector);
82
+ }
83
+ return map;
84
+ }
85
+ /**
86
+ * Calculates the posterior probability distribution for the given instance according to Gaussian model.
87
+ * @param instance Instance for which posterior probability distribution is calculated.
88
+ * @return Posterior probability distribution for the given instance.
89
+ */
90
+ predictProbability(instance) {
91
+ return undefined;
92
+ }
93
+ }
94
+ exports.GaussianModel = GaussianModel;
95
+ //# sourceMappingURL=GaussianModel.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"GaussianModel.js","sourceRoot":"","sources":["../../../source/Model/Parametric/GaussianModel.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,36 @@
1
+ import { GaussianModel } from "./GaussianModel";
2
+ import { InstanceList } from "../../InstanceList/InstanceList";
3
+ import { Instance } from "../../Instance/Instance";
4
+ import { Parameter } from "../../Parameter/Parameter";
5
+ export declare class KMeansModel extends GaussianModel {
6
+ private classMeans;
7
+ private distanceMetric;
8
+ /**
9
+ * Loads a K-means model from an input model file.
10
+ * @param fileName Model file name.
11
+ */
12
+ constructor2(fileName: string): void;
13
+ /**
14
+ * The calculateMetric method takes an {@link Instance} and a String as inputs. It loops through the class means, if
15
+ * the corresponding class label is same as the given String it returns the negated distance between given instance and the
16
+ * current item of class means. Otherwise it returns the smallest negative number.
17
+ *
18
+ * @param instance {@link Instance} input.
19
+ * @param Ci String input.
20
+ * @return The negated distance between given instance and the current item of class means.
21
+ */
22
+ calculateMetric(instance: Instance, Ci: string): number;
23
+ saveTxt(fileName: string): void;
24
+ /**
25
+ * Training algorithm for K-Means classifier. K-Means finds the mean of each class for training.
26
+ *
27
+ * @param trainSet Training data given to the algorithm.
28
+ * @param parameters distanceMetric: distance metric used to calculate the distance between two instances.
29
+ */
30
+ train(trainSet: InstanceList, parameters: Parameter): void;
31
+ /**
32
+ * Loads the K-means model from an input file.
33
+ * @param fileName File name of the K-means model.
34
+ */
35
+ loadModel(fileName: string): void;
36
+ }