nlptoolkit-classification 1.0.0

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 (412) hide show
  1. package/README.md +161 -0
  2. package/datasets/bupa.data +345 -0
  3. package/datasets/car.data +1728 -0
  4. package/datasets/chess.data +28056 -0
  5. package/datasets/dermatology.data +366 -0
  6. package/datasets/iris.data +150 -0
  7. package/datasets/nursery.data +12960 -0
  8. package/datasets/tictactoe.data +958 -0
  9. package/dist/Attribute/Attribute.d.ts +4 -0
  10. package/dist/Attribute/Attribute.js +17 -0
  11. package/dist/Attribute/Attribute.js.map +1 -0
  12. package/dist/Attribute/AttributeType.d.ts +18 -0
  13. package/dist/Attribute/AttributeType.js +33 -0
  14. package/dist/Attribute/AttributeType.js.map +1 -0
  15. package/dist/Attribute/BinaryAttribute.d.ts +9 -0
  16. package/dist/Attribute/BinaryAttribute.js +26 -0
  17. package/dist/Attribute/BinaryAttribute.js.map +1 -0
  18. package/dist/Attribute/ContinuousAttribute.d.ts +30 -0
  19. package/dist/Attribute/ContinuousAttribute.js +59 -0
  20. package/dist/Attribute/ContinuousAttribute.js.map +1 -0
  21. package/dist/Attribute/DiscreteAttribute.d.ts +24 -0
  22. package/dist/Attribute/DiscreteAttribute.js +53 -0
  23. package/dist/Attribute/DiscreteAttribute.js.map +1 -0
  24. package/dist/Attribute/DiscreteIndexedAttribute.d.ts +27 -0
  25. package/dist/Attribute/DiscreteIndexedAttribute.js +61 -0
  26. package/dist/Attribute/DiscreteIndexedAttribute.js.map +1 -0
  27. package/dist/Classifier/Bagging.d.ts +16 -0
  28. package/dist/Classifier/Bagging.js +42 -0
  29. package/dist/Classifier/Bagging.js.map +1 -0
  30. package/dist/Classifier/C45.d.ts +13 -0
  31. package/dist/Classifier/C45.js +40 -0
  32. package/dist/Classifier/C45.js.map +1 -0
  33. package/dist/Classifier/C45Stump.d.ts +12 -0
  34. package/dist/Classifier/C45Stump.js +29 -0
  35. package/dist/Classifier/C45Stump.js.map +1 -0
  36. package/dist/Classifier/Classifier.d.ts +39 -0
  37. package/dist/Classifier/Classifier.js +72 -0
  38. package/dist/Classifier/Classifier.js.map +1 -0
  39. package/dist/Classifier/DeepNetwork.d.ts +13 -0
  40. package/dist/Classifier/DeepNetwork.js +31 -0
  41. package/dist/Classifier/DeepNetwork.js.map +1 -0
  42. package/dist/Classifier/Dummy.d.ts +13 -0
  43. package/dist/Classifier/Dummy.js +29 -0
  44. package/dist/Classifier/Dummy.js.map +1 -0
  45. package/dist/Classifier/KMeans.d.ts +12 -0
  46. package/dist/Classifier/KMeans.js +36 -0
  47. package/dist/Classifier/KMeans.js.map +1 -0
  48. package/dist/Classifier/Knn.d.ts +13 -0
  49. package/dist/Classifier/Knn.js +29 -0
  50. package/dist/Classifier/Knn.js.map +1 -0
  51. package/dist/Classifier/Lda.d.ts +12 -0
  52. package/dist/Classifier/Lda.js +52 -0
  53. package/dist/Classifier/Lda.js.map +1 -0
  54. package/dist/Classifier/LinearPerceptron.d.ts +14 -0
  55. package/dist/Classifier/LinearPerceptron.js +32 -0
  56. package/dist/Classifier/LinearPerceptron.js.map +1 -0
  57. package/dist/Classifier/MultiLayerPerceptron.d.ts +14 -0
  58. package/dist/Classifier/MultiLayerPerceptron.js +32 -0
  59. package/dist/Classifier/MultiLayerPerceptron.js.map +1 -0
  60. package/dist/Classifier/NaiveBayes.d.ts +25 -0
  61. package/dist/Classifier/NaiveBayes.js +67 -0
  62. package/dist/Classifier/NaiveBayes.js.map +1 -0
  63. package/dist/Classifier/Qda.d.ts +12 -0
  64. package/dist/Classifier/Qda.js +50 -0
  65. package/dist/Classifier/Qda.js.map +1 -0
  66. package/dist/Classifier/RandomClassifier.d.ts +12 -0
  67. package/dist/Classifier/RandomClassifier.js +32 -0
  68. package/dist/Classifier/RandomClassifier.js.map +1 -0
  69. package/dist/Classifier/RandomForest.d.ts +13 -0
  70. package/dist/Classifier/RandomForest.js +39 -0
  71. package/dist/Classifier/RandomForest.js.map +1 -0
  72. package/dist/DataSet/DataDefinition.d.ts +59 -0
  73. package/dist/DataSet/DataDefinition.js +108 -0
  74. package/dist/DataSet/DataDefinition.js.map +1 -0
  75. package/dist/DataSet/DataSet.d.ts +111 -0
  76. package/dist/DataSet/DataSet.js +286 -0
  77. package/dist/DataSet/DataSet.js.map +1 -0
  78. package/dist/DistanceMetric/DistanceMetric.d.ts +4 -0
  79. package/dist/DistanceMetric/DistanceMetric.js +13 -0
  80. package/dist/DistanceMetric/DistanceMetric.js.map +1 -0
  81. package/dist/DistanceMetric/EuclidianDistance.d.ts +13 -0
  82. package/dist/DistanceMetric/EuclidianDistance.js +43 -0
  83. package/dist/DistanceMetric/EuclidianDistance.js.map +1 -0
  84. package/dist/DistanceMetric/MahalanobisDistance.d.ts +20 -0
  85. package/dist/DistanceMetric/MahalanobisDistance.js +39 -0
  86. package/dist/DistanceMetric/MahalanobisDistance.js.map +1 -0
  87. package/dist/Experiment/BootstrapRun.d.ts +19 -0
  88. package/dist/Experiment/BootstrapRun.js +44 -0
  89. package/dist/Experiment/BootstrapRun.js.map +1 -0
  90. package/dist/Experiment/Experiment.d.ts +37 -0
  91. package/dist/Experiment/Experiment.js +57 -0
  92. package/dist/Experiment/Experiment.js.map +1 -0
  93. package/dist/Experiment/KFoldRun.d.ts +19 -0
  94. package/dist/Experiment/KFoldRun.js +43 -0
  95. package/dist/Experiment/KFoldRun.js.map +1 -0
  96. package/dist/Experiment/KFoldRunSeparateTest.d.ts +24 -0
  97. package/dist/Experiment/KFoldRunSeparateTest.js +51 -0
  98. package/dist/Experiment/KFoldRunSeparateTest.js.map +1 -0
  99. package/dist/Experiment/MultipleRun.d.ts +5 -0
  100. package/dist/Experiment/MultipleRun.js +13 -0
  101. package/dist/Experiment/MultipleRun.js.map +1 -0
  102. package/dist/Experiment/MxKFoldRun.d.ts +20 -0
  103. package/dist/Experiment/MxKFoldRun.js +44 -0
  104. package/dist/Experiment/MxKFoldRun.js.map +1 -0
  105. package/dist/Experiment/MxKFoldRunSeparateTest.d.ts +21 -0
  106. package/dist/Experiment/MxKFoldRunSeparateTest.js +48 -0
  107. package/dist/Experiment/MxKFoldRunSeparateTest.js.map +1 -0
  108. package/dist/Experiment/SingleRun.d.ts +5 -0
  109. package/dist/Experiment/SingleRun.js +13 -0
  110. package/dist/Experiment/SingleRun.js.map +1 -0
  111. package/dist/Experiment/SingleRunWithK.d.ts +19 -0
  112. package/dist/Experiment/SingleRunWithK.js +37 -0
  113. package/dist/Experiment/SingleRunWithK.js.map +1 -0
  114. package/dist/Experiment/StratifiedKFoldRun.d.ts +17 -0
  115. package/dist/Experiment/StratifiedKFoldRun.js +39 -0
  116. package/dist/Experiment/StratifiedKFoldRun.js.map +1 -0
  117. package/dist/Experiment/StratifiedKFoldRunSeparateTest.d.ts +18 -0
  118. package/dist/Experiment/StratifiedKFoldRunSeparateTest.js +43 -0
  119. package/dist/Experiment/StratifiedKFoldRunSeparateTest.js.map +1 -0
  120. package/dist/Experiment/StratifiedMxKFoldRun.d.ts +19 -0
  121. package/dist/Experiment/StratifiedMxKFoldRun.js +43 -0
  122. package/dist/Experiment/StratifiedMxKFoldRun.js.map +1 -0
  123. package/dist/Experiment/StratifiedMxKFoldRunSeparateTest.d.ts +20 -0
  124. package/dist/Experiment/StratifiedMxKFoldRunSeparateTest.js +47 -0
  125. package/dist/Experiment/StratifiedMxKFoldRunSeparateTest.js.map +1 -0
  126. package/dist/Experiment/StratifiedSingleRunWithK.d.ts +18 -0
  127. package/dist/Experiment/StratifiedSingleRunWithK.js +39 -0
  128. package/dist/Experiment/StratifiedSingleRunWithK.js.map +1 -0
  129. package/dist/FeatureSelection/BackwardSelection.d.ts +18 -0
  130. package/dist/FeatureSelection/BackwardSelection.js +39 -0
  131. package/dist/FeatureSelection/BackwardSelection.js.map +1 -0
  132. package/dist/FeatureSelection/FeatureSubSet.d.ts +47 -0
  133. package/dist/FeatureSelection/FeatureSubSet.js +89 -0
  134. package/dist/FeatureSelection/FeatureSubSet.js.map +1 -0
  135. package/dist/FeatureSelection/FloatingSelection.d.ts +16 -0
  136. package/dist/FeatureSelection/FloatingSelection.js +38 -0
  137. package/dist/FeatureSelection/FloatingSelection.js.map +1 -0
  138. package/dist/FeatureSelection/ForwardSelection.d.ts +17 -0
  139. package/dist/FeatureSelection/ForwardSelection.js +38 -0
  140. package/dist/FeatureSelection/ForwardSelection.js.map +1 -0
  141. package/dist/FeatureSelection/SubSetSelection.d.ts +37 -0
  142. package/dist/FeatureSelection/SubSetSelection.js +90 -0
  143. package/dist/FeatureSelection/SubSetSelection.js.map +1 -0
  144. package/dist/Filter/DiscreteToContinuous.d.ts +25 -0
  145. package/dist/Filter/DiscreteToContinuous.js +69 -0
  146. package/dist/Filter/DiscreteToContinuous.js.map +1 -0
  147. package/dist/Filter/DiscreteToIndexed.d.ts +21 -0
  148. package/dist/Filter/DiscreteToIndexed.js +56 -0
  149. package/dist/Filter/DiscreteToIndexed.js.map +1 -0
  150. package/dist/Filter/FeatureFilter.d.ts +18 -0
  151. package/dist/Filter/FeatureFilter.js +36 -0
  152. package/dist/Filter/FeatureFilter.js.map +1 -0
  153. package/dist/Filter/LaryFilter.d.ts +27 -0
  154. package/dist/Filter/LaryFilter.js +62 -0
  155. package/dist/Filter/LaryFilter.js.map +1 -0
  156. package/dist/Filter/LaryToBinary.d.ts +23 -0
  157. package/dist/Filter/LaryToBinary.js +67 -0
  158. package/dist/Filter/LaryToBinary.js.map +1 -0
  159. package/dist/Filter/Normalize.d.ts +21 -0
  160. package/dist/Filter/Normalize.js +47 -0
  161. package/dist/Filter/Normalize.js.map +1 -0
  162. package/dist/Filter/Pca.d.ts +44 -0
  163. package/dist/Filter/Pca.js +109 -0
  164. package/dist/Filter/Pca.js.map +1 -0
  165. package/dist/Filter/TrainedFeatureFilter.d.ts +11 -0
  166. package/dist/Filter/TrainedFeatureFilter.js +26 -0
  167. package/dist/Filter/TrainedFeatureFilter.js.map +1 -0
  168. package/dist/Instance/CompositeInstance.d.ts +32 -0
  169. package/dist/Instance/CompositeInstance.js +61 -0
  170. package/dist/Instance/CompositeInstance.js.map +1 -0
  171. package/dist/Instance/Instance.d.ts +89 -0
  172. package/dist/Instance/Instance.js +170 -0
  173. package/dist/Instance/Instance.js.map +1 -0
  174. package/dist/InstanceList/InstanceList.d.ts +188 -0
  175. package/dist/InstanceList/InstanceList.js +517 -0
  176. package/dist/InstanceList/InstanceList.js.map +1 -0
  177. package/dist/InstanceList/InstanceListOfSameClass.d.ts +16 -0
  178. package/dist/InstanceList/InstanceListOfSameClass.js +35 -0
  179. package/dist/InstanceList/InstanceListOfSameClass.js.map +1 -0
  180. package/dist/InstanceList/Partition.d.ts +31 -0
  181. package/dist/InstanceList/Partition.js +143 -0
  182. package/dist/InstanceList/Partition.js.map +1 -0
  183. package/dist/Model/DecisionTree/DecisionCondition.d.ts +34 -0
  184. package/dist/Model/DecisionTree/DecisionCondition.js +84 -0
  185. package/dist/Model/DecisionTree/DecisionCondition.js.map +1 -0
  186. package/dist/Model/DecisionTree/DecisionNode.d.ts +82 -0
  187. package/dist/Model/DecisionTree/DecisionNode.js +271 -0
  188. package/dist/Model/DecisionTree/DecisionNode.js.map +1 -0
  189. package/dist/Model/DecisionTree/DecisionTree.d.ts +37 -0
  190. package/dist/Model/DecisionTree/DecisionTree.js +75 -0
  191. package/dist/Model/DecisionTree/DecisionTree.js.map +1 -0
  192. package/dist/Model/DeepNetworkModel.d.ts +42 -0
  193. package/dist/Model/DeepNetworkModel.js +163 -0
  194. package/dist/Model/DeepNetworkModel.js.map +1 -0
  195. package/dist/Model/DummyModel.d.ts +20 -0
  196. package/dist/Model/DummyModel.js +46 -0
  197. package/dist/Model/DummyModel.js.map +1 -0
  198. package/dist/Model/GaussianModel.d.ts +24 -0
  199. package/dist/Model/GaussianModel.js +59 -0
  200. package/dist/Model/GaussianModel.js.map +1 -0
  201. package/dist/Model/KMeansModel.d.ts +27 -0
  202. package/dist/Model/KMeansModel.js +48 -0
  203. package/dist/Model/KMeansModel.js.map +1 -0
  204. package/dist/Model/KnnInstance.d.ts +14 -0
  205. package/dist/Model/KnnInstance.js +33 -0
  206. package/dist/Model/KnnInstance.js.map +1 -0
  207. package/dist/Model/KnnModel.d.ts +36 -0
  208. package/dist/Model/KnnModel.js +83 -0
  209. package/dist/Model/KnnModel.js.map +1 -0
  210. package/dist/Model/LdaModel.d.ts +25 -0
  211. package/dist/Model/LdaModel.js +45 -0
  212. package/dist/Model/LdaModel.js.map +1 -0
  213. package/dist/Model/LinearPerceptronModel.d.ts +21 -0
  214. package/dist/Model/LinearPerceptronModel.js +62 -0
  215. package/dist/Model/LinearPerceptronModel.js.map +1 -0
  216. package/dist/Model/Model.d.ts +12 -0
  217. package/dist/Model/Model.js +31 -0
  218. package/dist/Model/Model.js.map +1 -0
  219. package/dist/Model/MultiLayerPerceptronModel.d.ts +29 -0
  220. package/dist/Model/MultiLayerPerceptronModel.js +101 -0
  221. package/dist/Model/MultiLayerPerceptronModel.js.map +1 -0
  222. package/dist/Model/NaiveBayesModel.d.ts +47 -0
  223. package/dist/Model/NaiveBayesModel.js +95 -0
  224. package/dist/Model/NaiveBayesModel.js.map +1 -0
  225. package/dist/Model/NeuralNetworkModel.d.ts +99 -0
  226. package/dist/Model/NeuralNetworkModel.js +180 -0
  227. package/dist/Model/NeuralNetworkModel.js.map +1 -0
  228. package/dist/Model/QdaModel.d.ts +26 -0
  229. package/dist/Model/QdaModel.js +45 -0
  230. package/dist/Model/QdaModel.js.map +1 -0
  231. package/dist/Model/RandomModel.d.ts +16 -0
  232. package/dist/Model/RandomModel.js +51 -0
  233. package/dist/Model/RandomModel.js.map +1 -0
  234. package/dist/Model/TreeEnsembleModel.d.ts +21 -0
  235. package/dist/Model/TreeEnsembleModel.js +49 -0
  236. package/dist/Model/TreeEnsembleModel.js.map +1 -0
  237. package/dist/Model/ValidatedModel.d.ts +12 -0
  238. package/dist/Model/ValidatedModel.js +35 -0
  239. package/dist/Model/ValidatedModel.js.map +1 -0
  240. package/dist/Parameter/ActivationFunction.d.ts +5 -0
  241. package/dist/Parameter/ActivationFunction.js +20 -0
  242. package/dist/Parameter/ActivationFunction.js.map +1 -0
  243. package/dist/Parameter/BaggingParameter.d.ts +17 -0
  244. package/dist/Parameter/BaggingParameter.js +36 -0
  245. package/dist/Parameter/BaggingParameter.js.map +1 -0
  246. package/dist/Parameter/C45Parameter.d.ts +25 -0
  247. package/dist/Parameter/C45Parameter.js +46 -0
  248. package/dist/Parameter/C45Parameter.js.map +1 -0
  249. package/dist/Parameter/DeepNetworkParameter.d.ts +38 -0
  250. package/dist/Parameter/DeepNetworkParameter.js +60 -0
  251. package/dist/Parameter/DeepNetworkParameter.js.map +1 -0
  252. package/dist/Parameter/KMeansParameter.d.ts +18 -0
  253. package/dist/Parameter/KMeansParameter.js +42 -0
  254. package/dist/Parameter/KMeansParameter.js.map +1 -0
  255. package/dist/Parameter/KnnParameter.d.ts +19 -0
  256. package/dist/Parameter/KnnParameter.js +37 -0
  257. package/dist/Parameter/KnnParameter.js.map +1 -0
  258. package/dist/Parameter/LinearPerceptronParameter.d.ts +41 -0
  259. package/dist/Parameter/LinearPerceptronParameter.js +66 -0
  260. package/dist/Parameter/LinearPerceptronParameter.js.map +1 -0
  261. package/dist/Parameter/MultiLayerPerceptronParameter.d.ts +30 -0
  262. package/dist/Parameter/MultiLayerPerceptronParameter.js +50 -0
  263. package/dist/Parameter/MultiLayerPerceptronParameter.js.map +1 -0
  264. package/dist/Parameter/Parameter.d.ts +15 -0
  265. package/dist/Parameter/Parameter.js +33 -0
  266. package/dist/Parameter/Parameter.js.map +1 -0
  267. package/dist/Parameter/RandomForestParameter.d.ts +18 -0
  268. package/dist/Parameter/RandomForestParameter.js +37 -0
  269. package/dist/Parameter/RandomForestParameter.js.map +1 -0
  270. package/dist/Performance/ClassificationPerformance.d.ts +17 -0
  271. package/dist/Performance/ClassificationPerformance.js +36 -0
  272. package/dist/Performance/ClassificationPerformance.js.map +1 -0
  273. package/dist/Performance/ConfusionMatrix.d.ts +81 -0
  274. package/dist/Performance/ConfusionMatrix.js +178 -0
  275. package/dist/Performance/ConfusionMatrix.js.map +1 -0
  276. package/dist/Performance/DetailedClassificationPerformance.d.ts +17 -0
  277. package/dist/Performance/DetailedClassificationPerformance.js +35 -0
  278. package/dist/Performance/DetailedClassificationPerformance.js.map +1 -0
  279. package/dist/Performance/ExperimentPerformance.d.ts +88 -0
  280. package/dist/Performance/ExperimentPerformance.js +176 -0
  281. package/dist/Performance/ExperimentPerformance.js.map +1 -0
  282. package/dist/Performance/Performance.d.ts +15 -0
  283. package/dist/Performance/Performance.js +33 -0
  284. package/dist/Performance/Performance.js.map +1 -0
  285. package/dist/StatisticalTest/Combined5x2F.d.ts +7 -0
  286. package/dist/StatisticalTest/Combined5x2F.js +43 -0
  287. package/dist/StatisticalTest/Combined5x2F.js.map +1 -0
  288. package/dist/StatisticalTest/Combined5x2t.d.ts +7 -0
  289. package/dist/StatisticalTest/Combined5x2t.js +43 -0
  290. package/dist/StatisticalTest/Combined5x2t.js.map +1 -0
  291. package/dist/StatisticalTest/Paired5x2t.d.ts +7 -0
  292. package/dist/StatisticalTest/Paired5x2t.js +42 -0
  293. package/dist/StatisticalTest/Paired5x2t.js.map +1 -0
  294. package/dist/StatisticalTest/PairedTest.d.ts +6 -0
  295. package/dist/StatisticalTest/PairedTest.js +35 -0
  296. package/dist/StatisticalTest/PairedTest.js.map +1 -0
  297. package/dist/StatisticalTest/Pairedt.d.ts +7 -0
  298. package/dist/StatisticalTest/Pairedt.js +40 -0
  299. package/dist/StatisticalTest/Pairedt.js.map +1 -0
  300. package/dist/StatisticalTest/Sign.d.ts +8 -0
  301. package/dist/StatisticalTest/Sign.js +52 -0
  302. package/dist/StatisticalTest/Sign.js.map +1 -0
  303. package/dist/StatisticalTest/StatisticalTestResult.d.ts +9 -0
  304. package/dist/StatisticalTest/StatisticalTestResult.js +53 -0
  305. package/dist/StatisticalTest/StatisticalTestResult.js.map +1 -0
  306. package/dist/StatisticalTest/StatisticalTestResultType.d.ts +7 -0
  307. package/dist/StatisticalTest/StatisticalTestResultType.js +22 -0
  308. package/dist/StatisticalTest/StatisticalTestResultType.js.map +1 -0
  309. package/index.js +100 -0
  310. package/package.json +30 -0
  311. package/source/Attribute/Attribute.ts +6 -0
  312. package/source/Attribute/AttributeType.ts +18 -0
  313. package/source/Attribute/BinaryAttribute.ts +14 -0
  314. package/source/Attribute/ContinuousAttribute.ts +53 -0
  315. package/source/Attribute/DiscreteAttribute.ts +46 -0
  316. package/source/Attribute/DiscreteIndexedAttribute.ts +54 -0
  317. package/source/Classifier/Bagging.ts +32 -0
  318. package/source/Classifier/C45.ts +30 -0
  319. package/source/Classifier/C45Stump.ts +19 -0
  320. package/source/Classifier/Classifier.ts +71 -0
  321. package/source/Classifier/DeepNetwork.ts +22 -0
  322. package/source/Classifier/Dummy.ts +19 -0
  323. package/source/Classifier/KMeans.ts +26 -0
  324. package/source/Classifier/Knn.ts +21 -0
  325. package/source/Classifier/Lda.ts +43 -0
  326. package/source/Classifier/LinearPerceptron.ts +23 -0
  327. package/source/Classifier/MultiLayerPerceptron.ts +23 -0
  328. package/source/Classifier/NaiveBayes.ts +62 -0
  329. package/source/Classifier/Qda.ts +42 -0
  330. package/source/Classifier/RandomClassifier.ts +22 -0
  331. package/source/Classifier/RandomForest.ts +29 -0
  332. package/source/DataSet/DataDefinition.ts +106 -0
  333. package/source/DataSet/DataSet.ts +279 -0
  334. package/source/DistanceMetric/DistanceMetric.ts +6 -0
  335. package/source/DistanceMetric/EuclidianDistance.ts +32 -0
  336. package/source/DistanceMetric/MahalanobisDistance.ts +33 -0
  337. package/source/Experiment/BootstrapRun.ts +37 -0
  338. package/source/Experiment/Experiment.ts +57 -0
  339. package/source/Experiment/KFoldRun.ts +44 -0
  340. package/source/Experiment/KFoldRunSeparateTest.ts +50 -0
  341. package/source/Experiment/MultipleRun.ts +7 -0
  342. package/source/Experiment/MxKFoldRun.ts +37 -0
  343. package/source/Experiment/MxKFoldRunSeparateTest.ts +40 -0
  344. package/source/Experiment/SingleRun.ts +7 -0
  345. package/source/Experiment/SingleRunWithK.ts +39 -0
  346. package/source/Experiment/StratifiedKFoldRun.ts +30 -0
  347. package/source/Experiment/StratifiedKFoldRunSeparateTest.ts +33 -0
  348. package/source/Experiment/StratifiedMxKFoldRun.ts +34 -0
  349. package/source/Experiment/StratifiedMxKFoldRunSeparateTest.ts +40 -0
  350. package/source/Experiment/StratifiedSingleRunWithK.ts +33 -0
  351. package/source/FeatureSelection/BackwardSelection.ts +28 -0
  352. package/source/FeatureSelection/FeatureSubSet.ts +82 -0
  353. package/source/FeatureSelection/FloatingSelection.ts +27 -0
  354. package/source/FeatureSelection/ForwardSelection.ts +27 -0
  355. package/source/FeatureSelection/SubSetSelection.ts +88 -0
  356. package/source/Filter/DiscreteToContinuous.ts +59 -0
  357. package/source/Filter/DiscreteToIndexed.ts +48 -0
  358. package/source/Filter/FeatureFilter.ts +31 -0
  359. package/source/Filter/LaryFilter.ts +54 -0
  360. package/source/Filter/LaryToBinary.ts +57 -0
  361. package/source/Filter/Normalize.ts +42 -0
  362. package/source/Filter/Pca.ts +104 -0
  363. package/source/Filter/TrainedFeatureFilter.ts +17 -0
  364. package/source/Instance/CompositeInstance.ts +53 -0
  365. package/source/Instance/Instance.ts +170 -0
  366. package/source/InstanceList/InstanceList.ts +519 -0
  367. package/source/InstanceList/InstanceListOfSameClass.ts +25 -0
  368. package/source/InstanceList/Partition.ts +131 -0
  369. package/source/Model/DecisionTree/DecisionCondition.ts +74 -0
  370. package/source/Model/DecisionTree/DecisionNode.ts +257 -0
  371. package/source/Model/DecisionTree/DecisionTree.ts +71 -0
  372. package/source/Model/DeepNetworkModel.ts +156 -0
  373. package/source/Model/DummyModel.ts +40 -0
  374. package/source/Model/GaussianModel.ts +58 -0
  375. package/source/Model/KMeansModel.ts +44 -0
  376. package/source/Model/KnnInstance.ts +27 -0
  377. package/source/Model/KnnModel.ts +78 -0
  378. package/source/Model/LdaModel.ts +39 -0
  379. package/source/Model/LinearPerceptronModel.ts +55 -0
  380. package/source/Model/Model.ts +22 -0
  381. package/source/Model/MultiLayerPerceptronModel.ts +95 -0
  382. package/source/Model/NaiveBayesModel.ts +89 -0
  383. package/source/Model/NeuralNetworkModel.ts +187 -0
  384. package/source/Model/QdaModel.ts +39 -0
  385. package/source/Model/RandomModel.ts +44 -0
  386. package/source/Model/TreeEnsembleModel.ts +43 -0
  387. package/source/Model/ValidatedModel.ts +23 -0
  388. package/source/Parameter/ActivationFunction.ts +3 -0
  389. package/source/Parameter/BaggingParameter.ts +26 -0
  390. package/source/Parameter/C45Parameter.ts +38 -0
  391. package/source/Parameter/DeepNetworkParameter.ts +59 -0
  392. package/source/Parameter/KMeansParameter.ts +33 -0
  393. package/source/Parameter/KnnParameter.ts +28 -0
  394. package/source/Parameter/LinearPerceptronParameter.ts +66 -0
  395. package/source/Parameter/MultiLayerPerceptronParameter.ts +49 -0
  396. package/source/Parameter/Parameter.ts +22 -0
  397. package/source/Parameter/RandomForestParameter.ts +27 -0
  398. package/source/Performance/ClassificationPerformance.ts +26 -0
  399. package/source/Performance/ConfusionMatrix.ts +175 -0
  400. package/source/Performance/DetailedClassificationPerformance.ts +26 -0
  401. package/source/Performance/ExperimentPerformance.ts +175 -0
  402. package/source/Performance/Performance.ts +22 -0
  403. package/source/StatisticalTest/Combined5x2F.ts +33 -0
  404. package/source/StatisticalTest/Combined5x2t.ts +33 -0
  405. package/source/StatisticalTest/Paired5x2t.ts +32 -0
  406. package/source/StatisticalTest/PairedTest.ts +24 -0
  407. package/source/StatisticalTest/Pairedt.ts +30 -0
  408. package/source/StatisticalTest/Sign.ts +41 -0
  409. package/source/StatisticalTest/StatisticalTestResult.ts +42 -0
  410. package/source/StatisticalTest/StatisticalTestResultType.ts +6 -0
  411. package/source/tsconfig.json +13 -0
  412. package/tsconfig.json +15 -0
@@ -0,0 +1,48 @@
1
+ import {LaryFilter} from "./LaryFilter";
2
+ import {Instance} from "../Instance/Instance";
3
+ import {DataSet} from "../DataSet/DataSet";
4
+ import {DiscreteIndexedAttribute} from "../Attribute/DiscreteIndexedAttribute";
5
+ import {AttributeType} from "../Attribute/AttributeType";
6
+
7
+ export class DiscreteToIndexed extends LaryFilter{
8
+
9
+ /**
10
+ * Converts the data definition with discrete attributes, to data definition with DISCRETE_INDEXED attributes.
11
+ */
12
+ convertDataDefinition(): void {
13
+ let dataDefinition = this.dataSet.getDataDefinition();
14
+ let size = dataDefinition.attributeCount();
15
+ for (let i = 0; i < size; i++) {
16
+ if (this.attributeDistributions[i].size > 0) {
17
+ dataDefinition.addAttribute(AttributeType.DISCRETE_INDEXED);
18
+ }
19
+ }
20
+ this.removeDiscreteAttributesFromDataDefinition(size);
21
+ }
22
+
23
+ /**
24
+ * Converts discrete attributes of a single instance to indexed version.
25
+ *
26
+ * @param instance The instance to be converted.
27
+ */
28
+ convertInstance(instance: Instance): void {
29
+ let size = instance.attributeSize();
30
+ for (let i = 0; i < size; i++) {
31
+ if (this.attributeDistributions[i].size > 0) {
32
+ let index = this.attributeDistributions[i].getIndex(instance.getAttribute(i).toString());
33
+ instance.addAttribute(new DiscreteIndexedAttribute(instance.getAttribute(i).toString(), index,
34
+ this.attributeDistributions[i].size));
35
+ }
36
+ }
37
+ this.removeDiscreteAttributesFromInstance(instance, size);
38
+ }
39
+
40
+ /**
41
+ * Constructor for discrete to indexed filter.
42
+ *
43
+ * @param dataSet The dataSet whose instances whose discrete attributes will be converted to indexed attributes
44
+ */
45
+ constructor(dataSet: DataSet) {
46
+ super(dataSet);
47
+ }
48
+ }
@@ -0,0 +1,31 @@
1
+ import {DataSet} from "../DataSet/DataSet";
2
+ import {Instance} from "../Instance/Instance";
3
+
4
+ export abstract class FeatureFilter {
5
+
6
+ protected dataSet: DataSet
7
+
8
+ abstract convertInstance(instance: Instance): void
9
+ abstract convertDataDefinition(): void
10
+
11
+ /**
12
+ * Constructor that sets the dataSet.
13
+ *
14
+ * @param dataSet DataSet that will bu used.
15
+ */
16
+ constructor(dataSet: DataSet) {
17
+ this.dataSet = dataSet
18
+ }
19
+
20
+ /**
21
+ * Feature converter for a list of instances. Using the abstract method convertInstance, each instance in the
22
+ * instance list will be converted.
23
+ */
24
+ convert(){
25
+ let instances = this.dataSet.getInstances();
26
+ for (let instance of instances) {
27
+ this.convertInstance(instance);
28
+ }
29
+ this.convertDataDefinition();
30
+ }
31
+ }
@@ -0,0 +1,54 @@
1
+ import {FeatureFilter} from "./FeatureFilter";
2
+ import {DiscreteDistribution} from "nlptoolkit-math/dist/DiscreteDistribution";
3
+ import {DataSet} from "../DataSet/DataSet";
4
+ import {Instance} from "../Instance/Instance";
5
+
6
+ export abstract class LaryFilter extends FeatureFilter{
7
+
8
+ protected attributeDistributions: Array<DiscreteDistribution>
9
+
10
+ /**
11
+ * Constructor that sets the dataSet and all the attributes distributions.
12
+ *
13
+ * @param dataSet DataSet that will bu used.
14
+ */
15
+ constructor(dataSet: DataSet) {
16
+ super(dataSet);
17
+ this.attributeDistributions = dataSet.getInstanceList().allAttributesDistribution()
18
+ }
19
+
20
+ /**
21
+ * The removeDiscreteAttributes method takes an {@link Instance} as an input, and removes the discrete attributes from
22
+ * given instance.
23
+ *
24
+ * @param instance Instance to removes attributes from.
25
+ * @param size Size of the given instance.
26
+ */
27
+ protected removeDiscreteAttributesFromInstance(instance: Instance, size: number){
28
+ let k = 0;
29
+ for (let i = 0; i < size; i++) {
30
+ if (this.attributeDistributions[i].size > 0) {
31
+ instance.removeAttribute(k);
32
+ } else {
33
+ k++;
34
+ }
35
+ }
36
+ }
37
+
38
+ /**
39
+ * The removeDiscreteAttributes method removes the discrete attributes from dataDefinition.
40
+ *
41
+ * @param size Size of item that attributes will be removed.
42
+ */
43
+ protected removeDiscreteAttributesFromDataDefinition(size: number){
44
+ let dataDefinition = this.dataSet.getDataDefinition();
45
+ let k = 0;
46
+ for (let i = 0; i < size; i++) {
47
+ if (this.attributeDistributions[i].size > 0) {
48
+ dataDefinition.removeAttribute(k);
49
+ } else {
50
+ k++;
51
+ }
52
+ }
53
+ }
54
+ }
@@ -0,0 +1,57 @@
1
+ import {LaryFilter} from "./LaryFilter";
2
+ import {Instance} from "../Instance/Instance";
3
+ import {DataSet} from "../DataSet/DataSet";
4
+ import {BinaryAttribute} from "../Attribute/BinaryAttribute";
5
+ import {AttributeType} from "../Attribute/AttributeType";
6
+
7
+ export class LaryToBinary extends LaryFilter{
8
+
9
+ /**
10
+ * Converts the data definition with L-ary discrete attributes, to data definition with binary discrete attributes.
11
+ */
12
+ convertDataDefinition(): void {
13
+ let dataDefinition = this.dataSet.getDataDefinition();
14
+ let size = dataDefinition.attributeCount();
15
+ for (let i = 0; i < size; i++) {
16
+ if (this.attributeDistributions[i].size > 0) {
17
+ for (let j = 0; j < this.attributeDistributions[i].size; j++) {
18
+ dataDefinition.addAttribute(AttributeType.BINARY);
19
+ }
20
+ }
21
+ }
22
+ this.removeDiscreteAttributesFromDataDefinition(size);
23
+ }
24
+
25
+ /**
26
+ * Converts discrete attributes of a single instance to binary discrete version using 1-of-L encoding. For example, if
27
+ * an attribute has values red, green, blue; this attribute will be converted to 3 binary attributes where
28
+ * red will have the value true false false, green will have the value false true false, and blue will have the value false false true.
29
+ *
30
+ * @param instance The instance to be converted.
31
+ */
32
+ convertInstance(instance: Instance): void {
33
+ let size = instance.attributeSize();
34
+ for (let i = 0; i < size; i++) {
35
+ if (this.attributeDistributions[i].size > 0) {
36
+ let index = this.attributeDistributions[i].getIndex(instance.getAttribute(i).toString());
37
+ for (let j = 0; j < this.attributeDistributions[i].size; j++) {
38
+ if (j != index) {
39
+ instance.addAttribute(new BinaryAttribute(false));
40
+ } else {
41
+ instance.addAttribute(new BinaryAttribute(true));
42
+ }
43
+ }
44
+ }
45
+ }
46
+ this.removeDiscreteAttributesFromInstance(instance, size);
47
+ }
48
+
49
+ /**
50
+ * Constructor for L-ary discrete to binary discrete filter.
51
+ *
52
+ * @param dataSet The instances whose L-ary discrete attributes will be converted to binary discrete attributes.
53
+ */
54
+ constructor(dataSet: DataSet) {
55
+ super(dataSet);
56
+ }
57
+ }
@@ -0,0 +1,42 @@
1
+ import {FeatureFilter} from "./FeatureFilter";
2
+ import {Instance} from "../Instance/Instance";
3
+ import {DataSet} from "../DataSet/DataSet";
4
+ import {ContinuousAttribute} from "../Attribute/ContinuousAttribute";
5
+
6
+ export class Normalize extends FeatureFilter{
7
+
8
+ private averageInstance: Instance
9
+ private standardDeviationInstance: Instance
10
+
11
+ /**
12
+ * Constructor for normalize feature filter. It calculates and stores the mean (m) and standard deviation (s) of
13
+ * the sample.
14
+ *
15
+ * @param dataSet Instances whose continuous attribute values will be normalized.
16
+ */
17
+ constructor(dataSet: DataSet) {
18
+ super(dataSet);
19
+ this.averageInstance = dataSet.getInstanceList().average();
20
+ this.standardDeviationInstance = dataSet.getInstanceList().standardDeviation();
21
+ }
22
+
23
+ convertDataDefinition(): void {
24
+ }
25
+
26
+ /**
27
+ * Normalizes the continuous attributes of a single instance. For all i, new x_i = (x_i - m_i) / s_i.
28
+ *
29
+ * @param instance Instance whose attributes will be normalized.
30
+ */
31
+ convertInstance(instance: Instance): void {
32
+ for (let i = 0; i < instance.attributeSize(); i++) {
33
+ if (instance.getAttribute(i) instanceof ContinuousAttribute) {
34
+ let xi = <ContinuousAttribute> instance.getAttribute(i);
35
+ let mi = <ContinuousAttribute> this.averageInstance.getAttribute(i);
36
+ let si = <ContinuousAttribute> this.standardDeviationInstance.getAttribute(i);
37
+ xi.setValue((xi.getValue() - mi.getValue()) / si.getValue());
38
+ }
39
+ }
40
+ }
41
+
42
+ }
@@ -0,0 +1,104 @@
1
+ import {TrainedFeatureFilter} from "./TrainedFeatureFilter";
2
+ import {Eigenvector} from "nlptoolkit-math/dist/Eigenvector";
3
+ import {Instance} from "../Instance/Instance";
4
+ import {DataSet} from "../DataSet/DataSet";
5
+ import {Vector} from "nlptoolkit-math/dist/Vector";
6
+ import {ContinuousAttribute} from "../Attribute/ContinuousAttribute";
7
+ import {Matrix} from "nlptoolkit-math/dist/Matrix";
8
+ import {AttributeType} from "../Attribute/AttributeType";
9
+
10
+ export class Pca extends TrainedFeatureFilter{
11
+
12
+ private readonly covarianceExplained: number = 0.99
13
+ private eigenvectors: Array<Eigenvector> = new Array<Eigenvector>()
14
+ private readonly numberOfDimensions : number = -1
15
+
16
+ /**
17
+ * The convertDataDefinition method gets the data definitions of the dataSet and removes all the attributes. Then adds
18
+ * new attributes as CONTINUOUS.
19
+ */
20
+ convertDataDefinition(): void {
21
+ let dataDefinition = this.dataSet.getDataDefinition();
22
+ dataDefinition.removeAllAttributes();
23
+ for (let i = 0; i < this.eigenvectors.length; i++) {
24
+ dataDefinition.addAttribute(AttributeType.CONTINUOUS);
25
+ }
26
+ }
27
+
28
+ /**
29
+ * The convertInstance method takes an {@link Instance} as an input and creates a {@link Vector} attributes from continuousAttributes.
30
+ * After removing all attributes of given instance, it then adds new {@link ContinuousAttribute} by using the dot
31
+ * product of attribute Vector and the eigenvectors.
32
+ *
33
+ * @param instance Instance that will be converted to {@link ContinuousAttribute} by using eigenvectors.
34
+ */
35
+ convertInstance(instance: Instance): void {
36
+ let attributes : Vector = new Vector(instance.continuousAttributes());
37
+ instance.removeAllAttributes();
38
+ for (let eigenvector of this.eigenvectors) {
39
+ instance.addAttribute(new ContinuousAttribute(attributes.dotProduct(eigenvector)));
40
+ }
41
+ }
42
+
43
+ /**
44
+ * The train method creates an averageVector from continuousAttributeAverage and a covariance {@link Matrix} from that averageVector.
45
+ * Then finds the eigenvectors of that covariance matrix and removes its unnecessary eigenvectors.
46
+ */
47
+ protected train(): void {
48
+ let averageVector : Vector = new Vector(this.dataSet.getInstanceList().continuousAttributeAverage());
49
+ let covariance : Matrix = this.dataSet.getInstanceList().covariance(averageVector);
50
+ this.eigenvectors = covariance.characteristics();
51
+ if (this.numberOfDimensions != -1) {
52
+ this.removeAllEigenvectorsExceptTheMostImportantK();
53
+ } else {
54
+ this.removeUnnecessaryEigenvectors();
55
+ }
56
+ }
57
+
58
+ /**
59
+ * Constructor that sets the dataSet and dimension. Then calls train method.
60
+ *
61
+ * @param dataSet DataSet that will be used.
62
+ * @param numberOfDimensionsOrCovarianceExplained Dimension number.
63
+ */
64
+ constructor(dataSet: DataSet, numberOfDimensionsOrCovarianceExplained?: number) {
65
+ super(dataSet);
66
+ if (numberOfDimensionsOrCovarianceExplained != undefined){
67
+ if (Number.isInteger(numberOfDimensionsOrCovarianceExplained)){
68
+ this.numberOfDimensions = numberOfDimensionsOrCovarianceExplained
69
+ } else {
70
+ this.covarianceExplained = numberOfDimensionsOrCovarianceExplained
71
+ }
72
+ }
73
+ this.train()
74
+ }
75
+
76
+ /**
77
+ * The removeUnnecessaryEigenvectors methods takes an ArrayList of Eigenvectors. It first calculates the summation
78
+ * of eigenValues. Then it finds the eigenvectors which have lesser summation than covarianceExplained and removes these
79
+ * eigenvectors.
80
+ */
81
+ private removeUnnecessaryEigenvectors(){
82
+ let sum = 0.0, currentSum = 0.0;
83
+ for (let eigenvector of this.eigenvectors) {
84
+ sum += eigenvector.getEigenValue();
85
+ }
86
+ for (let i = 0; i < this.eigenvectors.length; i++) {
87
+ if (currentSum / sum < this.covarianceExplained) {
88
+ currentSum += this.eigenvectors[i].getEigenValue();
89
+ } else {
90
+ this.eigenvectors.splice(i, 1);
91
+ i--;
92
+ }
93
+ }
94
+ }
95
+
96
+ /**
97
+ * The removeAllEigenvectorsExceptTheMostImportantK method takes an {@link Array} of {@link Eigenvector}s and removes the
98
+ * surplus eigenvectors when the number of eigenvectors is greater than the dimension.
99
+ */
100
+ private removeAllEigenvectorsExceptTheMostImportantK(){
101
+ this.eigenvectors.splice(this.numberOfDimensions, this.eigenvectors.length - this.numberOfDimensions)
102
+ }
103
+
104
+ }
@@ -0,0 +1,17 @@
1
+ import {FeatureFilter} from "./FeatureFilter";
2
+ import {DataSet} from "../DataSet/DataSet";
3
+
4
+ export abstract class TrainedFeatureFilter extends FeatureFilter{
5
+
6
+ protected abstract train(): void;
7
+
8
+ /**
9
+ * Constructor that sets the dataSet.
10
+ *
11
+ * @param dataSet DataSet that will bu used.
12
+ */
13
+ constructor(dataSet: DataSet) {
14
+ super(dataSet);
15
+ }
16
+
17
+ }
@@ -0,0 +1,53 @@
1
+ import {Instance} from "./Instance";
2
+ import {Attribute} from "../Attribute/Attribute";
3
+
4
+ export class CompositeInstance extends Instance{
5
+
6
+ private possibleClassLabels: Array<string> = new Array<string>()
7
+
8
+ /**
9
+ * Constructor of {@link CompositeInstance} class which takes a class label, attributes and an {@link ArrayList} of
10
+ * possible labels as inputs. It generates a new composite instance with given labels, attributes and possible labels.
11
+ *
12
+ * @param classLabel Class label of the composite instance.
13
+ * @param attributes Attributes of the composite instance.
14
+ * @param possibleClassLabels Possible labels of the composite instance.
15
+ */
16
+ constructor(classLabel: string, attributes?: Array<Attribute>, possibleClassLabels?: Array<string>) {
17
+ super(classLabel, attributes);
18
+ if (possibleClassLabels != undefined){
19
+ this.possibleClassLabels = possibleClassLabels
20
+ }
21
+ }
22
+
23
+ /**
24
+ * Accessor for the possible class labels.
25
+ *
26
+ * @return Possible class labels of the composite instance.
27
+ */
28
+ getPossibleClassLabels(): Array<string>{
29
+ return this.possibleClassLabels
30
+ }
31
+
32
+ /**
33
+ * Mutator method for possible class labels.
34
+ *
35
+ * @param possibleClassLabels Ner value of possible class labels.
36
+ */
37
+ setPossibleClassLabels(possibleClassLabels: Array<string>){
38
+ this.possibleClassLabels = possibleClassLabels
39
+ }
40
+
41
+ /**
42
+ * Converts composite instance to {@link String}.
43
+ *
44
+ * @return String representation of composite instance.
45
+ */
46
+ toString(): string{
47
+ let result = super.toString();
48
+ for (let possibleClassLabel of this.possibleClassLabels) {
49
+ result += ";" + possibleClassLabel;
50
+ }
51
+ return result.toString();
52
+ }
53
+ }
@@ -0,0 +1,170 @@
1
+ import {Attribute} from "../Attribute/Attribute";
2
+ import {ContinuousAttribute} from "../Attribute/ContinuousAttribute";
3
+ import {DiscreteAttribute} from "../Attribute/DiscreteAttribute";
4
+ import {Vector} from "nlptoolkit-math/dist/Vector";
5
+ import {FeatureSubSet} from "../FeatureSelection/FeatureSubSet";
6
+
7
+ export class Instance {
8
+
9
+ private readonly classLabel: string
10
+ private attributes: Array<Attribute> = new Array<Attribute>()
11
+
12
+ /**
13
+ * Constructor for a single instance. Given the attributes and class label, it generates a new instance.
14
+ *
15
+ * @param classLabel Class label of the instance.
16
+ * @param attributes Attributes of the instance.
17
+ */
18
+ constructor(classLabel: string, attributes?: Array<Attribute>) {
19
+ this.classLabel = classLabel
20
+ if (attributes != undefined){
21
+ this.attributes = attributes
22
+ }
23
+ }
24
+
25
+ /**
26
+ * Adds a new attribute.
27
+ *
28
+ * @param value Attribute to be added.
29
+ */
30
+ addAttribute(value: any){
31
+ if (value instanceof Attribute){
32
+ this.attributes.push(value)
33
+ } else {
34
+ if (!Number.isNaN(value)){
35
+ this.attributes.push(new ContinuousAttribute(value))
36
+ } else {
37
+ this.attributes.push(new DiscreteAttribute(value))
38
+ }
39
+ }
40
+ }
41
+
42
+ /**
43
+ * Adds a {@link Vector} of continuous attributes.
44
+ *
45
+ * @param vector {@link Vector} that has the continuous attributes.
46
+ */
47
+ addVectorAttribute(vector: Vector){
48
+ for (let i = 0; i < vector.size(); i++){
49
+ this.attributes.push(new ContinuousAttribute(vector.getValue(i)))
50
+ }
51
+ }
52
+
53
+ /**
54
+ * Removes attribute with the given index from the attributes list.
55
+ *
56
+ * @param index Index of the attribute to be removed.
57
+ */
58
+ removeAttribute(index: number){
59
+ this.attributes.splice(index, 1)
60
+ }
61
+
62
+ /**
63
+ * Removes all the attributes from the attributes list.
64
+ */
65
+ removeAllAttributes(){
66
+ this.attributes = new Array<Attribute>()
67
+ }
68
+
69
+ /**
70
+ * Accessor for a single attribute.
71
+ *
72
+ * @param index Index of the attribute to be accessed.
73
+ * @return Attribute with index 'index'.
74
+ */
75
+ getAttribute(index: number): Attribute{
76
+ return this.attributes[index]
77
+ }
78
+
79
+ /**
80
+ * Returns the number of attributes in the attributes list.
81
+ *
82
+ * @return Number of attributes in the attributes list.
83
+ */
84
+ attributeSize(): number{
85
+ return this.attributes.length
86
+ }
87
+
88
+ /**
89
+ * Returns the number of continuous and discrete indexed attributes in the attributes list.
90
+ *
91
+ * @return Number of continuous and discrete indexed attributes in the attributes list.
92
+ */
93
+ continuousAttributeSize(): number{
94
+ let size = 0;
95
+ for (let attribute of this.attributes) {
96
+ size += attribute.continuousAttributeSize();
97
+ }
98
+ return size;
99
+ }
100
+
101
+ /**
102
+ * The continuousAttributes method creates a new {@link Array} result and it adds the continuous attributes of the
103
+ * attributes list and also it adds 1 for the discrete indexed attributes
104
+ * .
105
+ *
106
+ * @return result {@link Array} that has continuous and discrete indexed attributes.
107
+ */
108
+ continuousAttributes(): Array<number>{
109
+ let result = new Array<number>();
110
+ for (let attribute of this.attributes) {
111
+ for (let continuousAttribute of attribute.continuousAttributes()){
112
+ result.push(continuousAttribute);
113
+ }
114
+ }
115
+ return result;
116
+ }
117
+
118
+ /**
119
+ * Accessor for the class label.
120
+ *
121
+ * @return Class label of the instance.
122
+ */
123
+ getClassLabel(): string{
124
+ return this.classLabel
125
+ }
126
+
127
+ /**
128
+ * Converts instance to a {@link String}.
129
+ *
130
+ * @return A string of attributes separated with comma character.
131
+ */
132
+ toString(): string{
133
+ let result = "";
134
+ for (let attribute of this.attributes) {
135
+ result = result + attribute.toString() + ",";
136
+ }
137
+ result = result + this.classLabel;
138
+ return result;
139
+ }
140
+
141
+ /**
142
+ * The getSubSetOfFeatures method takes a {@link FeatureSubSet} as an input. First it creates a result {@link Instance}
143
+ * with the class label, and adds the attributes of the given featureSubSet to it.
144
+ *
145
+ * @param featureSubSet {@link FeatureSubSet} an {@link Array} of indices.
146
+ * @return result Instance.
147
+ */
148
+ getSubSetOfFeatures(featureSubSet: FeatureSubSet): Instance{
149
+ let result = new Instance(this.classLabel);
150
+ for (let i = 0; i < featureSubSet.size(); i++) {
151
+ result.addAttribute(this.attributes[featureSubSet.get(i)]);
152
+ }
153
+ return result;
154
+ }
155
+
156
+ /**
157
+ * The toVector method returns a {@link Vector} of continuous attributes and discrete indexed attributes.
158
+ *
159
+ * @return {@link Vector} of continuous attributes and discrete indexed attributes.
160
+ */
161
+ toVector(): Vector{
162
+ let values = new Array<number>();
163
+ for (let attribute of this.attributes) {
164
+ for (let continuousAttribute of attribute.continuousAttributes()){
165
+ values.push(continuousAttribute);
166
+ }
167
+ }
168
+ return new Vector(values);
169
+ }
170
+ }