nlptoolkit-classification 1.0.6 → 1.0.8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (310) hide show
  1. package/README.md +1 -0
  2. package/dist/Attribute/DiscreteAttribute.d.ts +1 -1
  3. package/dist/Attribute/DiscreteAttribute.js.map +1 -1
  4. package/dist/Attribute/DiscreteIndexedAttribute.d.ts +2 -2
  5. package/dist/DataSet/DataDefinition.d.ts +11 -0
  6. package/dist/DataSet/DataDefinition.js +11 -0
  7. package/dist/DataSet/DataDefinition.js.map +1 -1
  8. package/dist/Experiment/BootstrapRun.js +2 -2
  9. package/dist/Experiment/BootstrapRun.js.map +1 -1
  10. package/dist/Experiment/Experiment.d.ts +7 -7
  11. package/dist/Experiment/Experiment.js +6 -6
  12. package/dist/Experiment/Experiment.js.map +1 -1
  13. package/dist/Experiment/KFoldRun.d.ts +17 -2
  14. package/dist/Experiment/KFoldRun.js +19 -4
  15. package/dist/Experiment/KFoldRun.js.map +1 -1
  16. package/dist/Experiment/KFoldRunSeparateTest.d.ts +13 -2
  17. package/dist/Experiment/KFoldRunSeparateTest.js +15 -4
  18. package/dist/Experiment/KFoldRunSeparateTest.js.map +1 -1
  19. package/dist/Experiment/MxKFoldRun.js +1 -1
  20. package/dist/Experiment/MxKFoldRun.js.map +1 -1
  21. package/dist/Experiment/MxKFoldRunSeparateTest.js +1 -1
  22. package/dist/Experiment/MxKFoldRunSeparateTest.js.map +1 -1
  23. package/dist/Experiment/SingleRunWithK.d.ts +18 -3
  24. package/dist/Experiment/SingleRunWithK.js +18 -3
  25. package/dist/Experiment/SingleRunWithK.js.map +1 -1
  26. package/dist/Experiment/StratifiedKFoldRun.js +1 -1
  27. package/dist/Experiment/StratifiedKFoldRun.js.map +1 -1
  28. package/dist/Experiment/StratifiedKFoldRunSeparateTest.js +1 -1
  29. package/dist/Experiment/StratifiedKFoldRunSeparateTest.js.map +1 -1
  30. package/dist/Experiment/StratifiedMxKFoldRun.js +1 -1
  31. package/dist/Experiment/StratifiedMxKFoldRun.js.map +1 -1
  32. package/dist/Experiment/StratifiedMxKFoldRunSeparateTest.js +3 -3
  33. package/dist/Experiment/StratifiedMxKFoldRunSeparateTest.js.map +1 -1
  34. package/dist/Experiment/StratifiedSingleRunWithK.js +1 -1
  35. package/dist/Experiment/StratifiedSingleRunWithK.js.map +1 -1
  36. package/dist/Filter/LaryFilter.d.ts +1 -1
  37. package/dist/Filter/LaryFilter.js +1 -1
  38. package/dist/Filter/TrainedFeatureFilter.d.ts +1 -1
  39. package/dist/Filter/TrainedFeatureFilter.js +1 -1
  40. package/dist/InstanceList/Partition.d.ts +45 -0
  41. package/dist/InstanceList/Partition.js +125 -70
  42. package/dist/InstanceList/Partition.js.map +1 -1
  43. package/dist/Model/DecisionTree/DecisionCondition.d.ts +8 -0
  44. package/dist/Model/DecisionTree/DecisionCondition.js +8 -0
  45. package/dist/Model/DecisionTree/DecisionCondition.js.map +1 -1
  46. package/dist/Model/DecisionTree/DecisionNode.d.ts +39 -1
  47. package/dist/Model/DecisionTree/DecisionNode.js +64 -22
  48. package/dist/Model/DecisionTree/DecisionNode.js.map +1 -1
  49. package/dist/Model/DecisionTree/DecisionStump.d.ts +17 -0
  50. package/dist/{Classifier/C45Stump.js → Model/DecisionTree/DecisionStump.js} +13 -10
  51. package/dist/Model/DecisionTree/DecisionStump.js.map +1 -0
  52. package/dist/Model/DecisionTree/DecisionTree.d.ts +24 -9
  53. package/dist/Model/DecisionTree/DecisionTree.js +39 -16
  54. package/dist/Model/DecisionTree/DecisionTree.js.map +1 -1
  55. package/dist/Model/DummyModel.d.ts +28 -3
  56. package/dist/Model/DummyModel.js +36 -23
  57. package/dist/Model/DummyModel.js.map +1 -1
  58. package/dist/{Classifier/Bagging.d.ts → Model/Ensemble/BaggingModel.d.ts} +8 -4
  59. package/dist/{Classifier/Bagging.js → Model/Ensemble/BaggingModel.js} +16 -14
  60. package/dist/Model/Ensemble/BaggingModel.js.map +1 -0
  61. package/dist/{Classifier/RandomForest.d.ts → Model/Ensemble/RandomForestModel.d.ts} +8 -4
  62. package/dist/{Classifier/RandomForest.js → Model/Ensemble/RandomForestModel.js} +16 -14
  63. package/dist/Model/Ensemble/RandomForestModel.js.map +1 -0
  64. package/dist/Model/Ensemble/TreeEnsembleModel.d.ts +32 -0
  65. package/dist/Model/{TreeEnsembleModel.js → Ensemble/TreeEnsembleModel.js} +23 -17
  66. package/dist/Model/Ensemble/TreeEnsembleModel.js.map +1 -0
  67. package/dist/Model/Model.d.ts +52 -0
  68. package/dist/Model/Model.js +84 -1
  69. package/dist/Model/Model.js.map +1 -1
  70. package/dist/Model/NeuralNetwork/DeepNetworkModel.d.ts +47 -0
  71. package/dist/Model/{DeepNetworkModel.js → NeuralNetwork/DeepNetworkModel.js} +55 -55
  72. package/dist/Model/NeuralNetwork/DeepNetworkModel.js.map +1 -0
  73. package/dist/Model/NeuralNetwork/LinearPerceptronModel.d.ts +31 -0
  74. package/dist/Model/NeuralNetwork/LinearPerceptronModel.js +84 -0
  75. package/dist/Model/NeuralNetwork/LinearPerceptronModel.js.map +1 -0
  76. package/dist/Model/NeuralNetwork/MultiLayerPerceptronModel.d.ts +39 -0
  77. package/dist/Model/{MultiLayerPerceptronModel.js → NeuralNetwork/MultiLayerPerceptronModel.js} +41 -37
  78. package/dist/Model/NeuralNetwork/MultiLayerPerceptronModel.js.map +1 -0
  79. package/dist/Model/{NeuralNetworkModel.d.ts → NeuralNetwork/NeuralNetworkModel.d.ts} +19 -5
  80. package/dist/Model/{NeuralNetworkModel.js → NeuralNetwork/NeuralNetworkModel.js} +19 -6
  81. package/dist/Model/NeuralNetwork/NeuralNetworkModel.js.map +1 -0
  82. package/dist/Model/{KnnInstance.d.ts → NonParametric/KnnInstance.d.ts} +1 -1
  83. package/dist/Model/NonParametric/KnnInstance.js.map +1 -0
  84. package/dist/Model/{KnnModel.d.ts → NonParametric/KnnModel.d.ts} +30 -6
  85. package/dist/Model/{KnnModel.js → NonParametric/KnnModel.js} +42 -19
  86. package/dist/Model/NonParametric/KnnModel.js.map +1 -0
  87. package/dist/Model/{GaussianModel.d.ts → Parametric/GaussianModel.d.ts} +20 -2
  88. package/dist/Model/{GaussianModel.js → Parametric/GaussianModel.js} +21 -3
  89. package/dist/Model/Parametric/GaussianModel.js.map +1 -0
  90. package/dist/Model/Parametric/KMeansModel.d.ts +36 -0
  91. package/dist/Model/Parametric/KMeansModel.js +73 -0
  92. package/dist/Model/Parametric/KMeansModel.js.map +1 -0
  93. package/dist/Model/Parametric/LdaModel.d.ts +44 -0
  94. package/dist/Model/Parametric/LdaModel.js +98 -0
  95. package/dist/Model/Parametric/LdaModel.js.map +1 -0
  96. package/dist/Model/{NaiveBayesModel.d.ts → Parametric/NaiveBayesModel.d.ts} +30 -10
  97. package/dist/Model/{NaiveBayesModel.js → Parametric/NaiveBayesModel.js} +64 -27
  98. package/dist/Model/Parametric/NaiveBayesModel.js.map +1 -0
  99. package/dist/Model/Parametric/QdaModel.d.ts +30 -0
  100. package/dist/Model/Parametric/QdaModel.js +84 -0
  101. package/dist/Model/Parametric/QdaModel.js.map +1 -0
  102. package/dist/Model/RandomModel.d.ts +32 -2
  103. package/dist/Model/RandomModel.js +48 -16
  104. package/dist/Model/RandomModel.js.map +1 -1
  105. package/dist/Parameter/C45Parameter.d.ts +2 -2
  106. package/dist/Parameter/DeepNetworkParameter.d.ts +2 -2
  107. package/dist/Parameter/KnnParameter.d.ts +1 -1
  108. package/dist/Parameter/LinearPerceptronParameter.d.ts +4 -4
  109. package/dist/Parameter/MultiLayerPerceptronParameter.d.ts +2 -2
  110. package/dist/Parameter/Parameter.d.ts +1 -1
  111. package/dist/Performance/ConfusionMatrix.d.ts +1 -1
  112. package/dist/StatisticalTest/Combined5x2F.d.ts +12 -0
  113. package/dist/StatisticalTest/Combined5x2F.js +12 -0
  114. package/dist/StatisticalTest/Combined5x2F.js.map +1 -1
  115. package/dist/StatisticalTest/Combined5x2t.d.ts +13 -0
  116. package/dist/StatisticalTest/Combined5x2t.js +13 -0
  117. package/dist/StatisticalTest/Combined5x2t.js.map +1 -1
  118. package/dist/StatisticalTest/Paired5x2t.d.ts +12 -0
  119. package/dist/StatisticalTest/Paired5x2t.js +12 -0
  120. package/dist/StatisticalTest/Paired5x2t.js.map +1 -1
  121. package/dist/StatisticalTest/PairedTest.d.ts +12 -0
  122. package/dist/StatisticalTest/PairedTest.js +12 -0
  123. package/dist/StatisticalTest/PairedTest.js.map +1 -1
  124. package/dist/StatisticalTest/Pairedt.d.ts +12 -0
  125. package/dist/StatisticalTest/Pairedt.js +12 -0
  126. package/dist/StatisticalTest/Pairedt.js.map +1 -1
  127. package/dist/StatisticalTest/Sign.d.ts +17 -0
  128. package/dist/StatisticalTest/Sign.js +17 -0
  129. package/dist/StatisticalTest/Sign.js.map +1 -1
  130. package/dist/StatisticalTest/StatisticalTestResult.d.ts +30 -0
  131. package/dist/StatisticalTest/StatisticalTestResult.js +30 -0
  132. package/dist/StatisticalTest/StatisticalTestResult.js.map +1 -1
  133. package/dist/index.d.ts +88 -0
  134. package/dist/index.js +111 -0
  135. package/dist/index.js.map +1 -0
  136. package/models/bagging-bupa.txt +10346 -0
  137. package/models/bagging-car.txt +40752 -0
  138. package/models/bagging-dermatology.txt +2990 -0
  139. package/models/bagging-iris.txt +1332 -0
  140. package/models/bagging-tictactoe.txt +29442 -0
  141. package/models/c45-bupa.txt +3 -0
  142. package/models/c45-car.txt +212 -0
  143. package/models/c45-carIndexed.txt +92 -0
  144. package/models/c45-dermatology.txt +22 -0
  145. package/models/c45-iris.txt +7 -0
  146. package/models/c45-tictactoe.txt +147 -0
  147. package/models/c45-tictactoeIndexed.txt +79 -0
  148. package/models/c45stump-bupa.txt +6 -0
  149. package/models/c45stump-car.txt +11 -0
  150. package/models/c45stump-chess.txt +35 -0
  151. package/models/c45stump-dermatology.txt +11 -0
  152. package/models/c45stump-iris.txt +5 -0
  153. package/models/c45stump-nursery.txt +10 -0
  154. package/models/c45stump-tictactoe.txt +9 -0
  155. package/models/randomforest-bupa.txt +10346 -0
  156. package/models/randomforest-car.txt +40752 -0
  157. package/models/randomforest-carIndexed.txt +15594 -0
  158. package/models/randomforest-dermatology.txt +2990 -0
  159. package/models/randomforest-iris.txt +1332 -0
  160. package/models/randomforest-tictactoe.txt +29442 -0
  161. package/package.json +7 -7
  162. package/source/Attribute/DiscreteAttribute.ts +1 -1
  163. package/source/Attribute/DiscreteIndexedAttribute.ts +2 -2
  164. package/source/DataSet/DataDefinition.ts +11 -0
  165. package/source/Experiment/BootstrapRun.ts +2 -2
  166. package/source/Experiment/Experiment.ts +10 -10
  167. package/source/Experiment/KFoldRun.ts +20 -5
  168. package/source/Experiment/KFoldRunSeparateTest.ts +16 -5
  169. package/source/Experiment/MxKFoldRun.ts +1 -1
  170. package/source/Experiment/MxKFoldRunSeparateTest.ts +1 -1
  171. package/source/Experiment/SingleRunWithK.ts +20 -5
  172. package/source/Experiment/StratifiedKFoldRun.ts +1 -1
  173. package/source/Experiment/StratifiedKFoldRunSeparateTest.ts +1 -1
  174. package/source/Experiment/StratifiedMxKFoldRun.ts +1 -1
  175. package/source/Experiment/StratifiedMxKFoldRunSeparateTest.ts +3 -3
  176. package/source/Experiment/StratifiedSingleRunWithK.ts +1 -1
  177. package/source/Filter/LaryFilter.ts +1 -1
  178. package/source/Filter/TrainedFeatureFilter.ts +1 -1
  179. package/source/InstanceList/Partition.ts +125 -65
  180. package/source/Model/DecisionTree/DecisionCondition.ts +8 -0
  181. package/source/Model/DecisionTree/DecisionNode.ts +65 -22
  182. package/source/Model/DecisionTree/DecisionStump.ts +26 -0
  183. package/source/Model/DecisionTree/DecisionTree.ts +44 -15
  184. package/source/Model/DummyModel.ts +40 -19
  185. package/source/{Classifier/Bagging.ts → Model/Ensemble/BaggingModel.ts} +15 -12
  186. package/source/{Classifier/RandomForest.ts → Model/Ensemble/RandomForestModel.ts} +14 -12
  187. package/source/Model/{TreeEnsembleModel.ts → Ensemble/TreeEnsembleModel.ts} +26 -18
  188. package/source/Model/Model.ts +92 -0
  189. package/source/Model/{DeepNetworkModel.ts → NeuralNetwork/DeepNetworkModel.ts} +59 -56
  190. package/source/Model/NeuralNetwork/LinearPerceptronModel.ts +81 -0
  191. package/source/Model/{MultiLayerPerceptronModel.ts → NeuralNetwork/MultiLayerPerceptronModel.ts} +46 -39
  192. package/source/Model/{NeuralNetworkModel.ts → NeuralNetwork/NeuralNetworkModel.ts} +20 -7
  193. package/source/Model/{KnnInstance.ts → NonParametric/KnnInstance.ts} +1 -1
  194. package/source/Model/{KnnModel.ts → NonParametric/KnnModel.ts} +48 -19
  195. package/source/Model/{GaussianModel.ts → Parametric/GaussianModel.ts} +21 -3
  196. package/source/Model/Parametric/KMeansModel.ts +72 -0
  197. package/source/Model/Parametric/LdaModel.ts +98 -0
  198. package/source/Model/{NaiveBayesModel.ts → Parametric/NaiveBayesModel.ts} +68 -25
  199. package/source/Model/Parametric/QdaModel.ts +83 -0
  200. package/source/Model/RandomModel.ts +54 -16
  201. package/source/Parameter/C45Parameter.ts +2 -2
  202. package/source/Parameter/DeepNetworkParameter.ts +2 -2
  203. package/source/Parameter/KnnParameter.ts +1 -1
  204. package/source/Parameter/LinearPerceptronParameter.ts +4 -4
  205. package/source/Parameter/MultiLayerPerceptronParameter.ts +2 -2
  206. package/source/Parameter/Parameter.ts +1 -1
  207. package/source/Performance/ConfusionMatrix.ts +1 -1
  208. package/source/StatisticalTest/Combined5x2F.ts +12 -0
  209. package/source/StatisticalTest/Combined5x2t.ts +13 -0
  210. package/source/StatisticalTest/Paired5x2t.ts +12 -0
  211. package/source/StatisticalTest/PairedTest.ts +12 -0
  212. package/source/StatisticalTest/Pairedt.ts +12 -0
  213. package/source/StatisticalTest/Sign.ts +17 -0
  214. package/source/StatisticalTest/StatisticalTestResult.ts +30 -0
  215. package/source/index.ts +88 -0
  216. package/source/tsconfig.json +1 -1
  217. package/tests/Classifier/C45Test.ts +2 -2
  218. package/tests/Classifier/DeepNetworkTest.ts +3 -5
  219. package/tests/Classifier/DummyTest.ts +2 -2
  220. package/tests/Classifier/KMeansTest.ts +2 -2
  221. package/tests/Classifier/KnnTest.ts +2 -2
  222. package/tests/Classifier/LdaTest.ts +2 -2
  223. package/tests/Classifier/LinearPerceptronTest.ts +2 -2
  224. package/tests/Classifier/MultiLayerPerceptronTest.ts +2 -3
  225. package/tests/Classifier/NaiveBayesTest.ts +2 -2
  226. package/tests/Classifier/QdaTest.ts +2 -2
  227. package/tests/Classifier/RandomForestTest.ts +2 -2
  228. package/tsconfig.json +1 -2
  229. package/dist/Classifier/Bagging.js.map +0 -1
  230. package/dist/Classifier/C45.d.ts +0 -14
  231. package/dist/Classifier/C45.js +0 -43
  232. package/dist/Classifier/C45.js.map +0 -1
  233. package/dist/Classifier/C45Stump.d.ts +0 -13
  234. package/dist/Classifier/C45Stump.js.map +0 -1
  235. package/dist/Classifier/Classifier.d.ts +0 -40
  236. package/dist/Classifier/Classifier.js +0 -72
  237. package/dist/Classifier/Classifier.js.map +0 -1
  238. package/dist/Classifier/DeepNetwork.d.ts +0 -14
  239. package/dist/Classifier/DeepNetwork.js +0 -34
  240. package/dist/Classifier/DeepNetwork.js.map +0 -1
  241. package/dist/Classifier/Dummy.d.ts +0 -14
  242. package/dist/Classifier/Dummy.js +0 -32
  243. package/dist/Classifier/Dummy.js.map +0 -1
  244. package/dist/Classifier/KMeans.d.ts +0 -13
  245. package/dist/Classifier/KMeans.js +0 -39
  246. package/dist/Classifier/KMeans.js.map +0 -1
  247. package/dist/Classifier/Knn.d.ts +0 -14
  248. package/dist/Classifier/Knn.js +0 -32
  249. package/dist/Classifier/Knn.js.map +0 -1
  250. package/dist/Classifier/Lda.d.ts +0 -13
  251. package/dist/Classifier/Lda.js +0 -55
  252. package/dist/Classifier/Lda.js.map +0 -1
  253. package/dist/Classifier/LinearPerceptron.d.ts +0 -15
  254. package/dist/Classifier/LinearPerceptron.js +0 -35
  255. package/dist/Classifier/LinearPerceptron.js.map +0 -1
  256. package/dist/Classifier/MultiLayerPerceptron.d.ts +0 -15
  257. package/dist/Classifier/MultiLayerPerceptron.js +0 -35
  258. package/dist/Classifier/MultiLayerPerceptron.js.map +0 -1
  259. package/dist/Classifier/NaiveBayes.d.ts +0 -26
  260. package/dist/Classifier/NaiveBayes.js +0 -70
  261. package/dist/Classifier/NaiveBayes.js.map +0 -1
  262. package/dist/Classifier/Qda.d.ts +0 -13
  263. package/dist/Classifier/Qda.js +0 -53
  264. package/dist/Classifier/Qda.js.map +0 -1
  265. package/dist/Classifier/RandomClassifier.d.ts +0 -13
  266. package/dist/Classifier/RandomClassifier.js +0 -35
  267. package/dist/Classifier/RandomClassifier.js.map +0 -1
  268. package/dist/Classifier/RandomForest.js.map +0 -1
  269. package/dist/Model/DeepNetworkModel.d.ts +0 -45
  270. package/dist/Model/DeepNetworkModel.js.map +0 -1
  271. package/dist/Model/GaussianModel.js.map +0 -1
  272. package/dist/Model/KMeansModel.d.ts +0 -28
  273. package/dist/Model/KMeansModel.js +0 -61
  274. package/dist/Model/KMeansModel.js.map +0 -1
  275. package/dist/Model/KnnInstance.js.map +0 -1
  276. package/dist/Model/KnnModel.js.map +0 -1
  277. package/dist/Model/LdaModel.d.ts +0 -28
  278. package/dist/Model/LdaModel.js +0 -67
  279. package/dist/Model/LdaModel.js.map +0 -1
  280. package/dist/Model/LinearPerceptronModel.d.ts +0 -24
  281. package/dist/Model/LinearPerceptronModel.js +0 -91
  282. package/dist/Model/LinearPerceptronModel.js.map +0 -1
  283. package/dist/Model/MultiLayerPerceptronModel.d.ts +0 -33
  284. package/dist/Model/MultiLayerPerceptronModel.js.map +0 -1
  285. package/dist/Model/NaiveBayesModel.js.map +0 -1
  286. package/dist/Model/NeuralNetworkModel.js.map +0 -1
  287. package/dist/Model/QdaModel.d.ts +0 -27
  288. package/dist/Model/QdaModel.js +0 -63
  289. package/dist/Model/QdaModel.js.map +0 -1
  290. package/dist/Model/TreeEnsembleModel.d.ts +0 -22
  291. package/dist/Model/TreeEnsembleModel.js.map +0 -1
  292. package/index.js +0 -100
  293. package/source/Classifier/C45.ts +0 -34
  294. package/source/Classifier/C45Stump.ts +0 -23
  295. package/source/Classifier/Classifier.ts +0 -72
  296. package/source/Classifier/DeepNetwork.ts +0 -26
  297. package/source/Classifier/Dummy.ts +0 -23
  298. package/source/Classifier/KMeans.ts +0 -30
  299. package/source/Classifier/Knn.ts +0 -25
  300. package/source/Classifier/Lda.ts +0 -47
  301. package/source/Classifier/LinearPerceptron.ts +0 -27
  302. package/source/Classifier/MultiLayerPerceptron.ts +0 -27
  303. package/source/Classifier/NaiveBayes.ts +0 -66
  304. package/source/Classifier/Qda.ts +0 -46
  305. package/source/Classifier/RandomClassifier.ts +0 -26
  306. package/source/Model/KMeansModel.ts +0 -56
  307. package/source/Model/LdaModel.ts +0 -62
  308. package/source/Model/LinearPerceptronModel.ts +0 -83
  309. package/source/Model/QdaModel.ts +0 -57
  310. /package/dist/Model/{KnnInstance.js → NonParametric/KnnInstance.js} +0 -0
@@ -5,6 +5,12 @@ import {Distribution} from "nlptoolkit-math/dist/Distribution";
5
5
 
6
6
  export class Pairedt extends PairedTest{
7
7
 
8
+ /**
9
+ * Calculates the test statistic of the paired t test.
10
+ * @param classifier1 Performance (error rate or accuracy) results of the first classifier.
11
+ * @param classifier2 Performance (error rate or accuracy) results of the second classifier.
12
+ * @return Given the performances of two classifiers, the test statistic of the paired t test.
13
+ */
8
14
  private testStatistic(classifier1: ExperimentPerformance, classifier2: ExperimentPerformance): number{
9
15
  let difference = new Array<number>();
10
16
  let sum = 0.0;
@@ -21,6 +27,12 @@ export class Pairedt extends PairedTest{
21
27
  return Math.sqrt(classifier1.numberOfExperiments()) * mean / standardDeviation;
22
28
  }
23
29
 
30
+ /**
31
+ * Compares two classification algorithms based on their performances (accuracy or error rate) using paired t test.
32
+ * @param classifier1 Performance (error rate or accuracy) results of the first classifier.
33
+ * @param classifier2 Performance (error rate or accuracy) results of the second classifier.
34
+ * @return Statistical test result of the comparison.
35
+ */
24
36
  compareClassifiers(classifier1: ExperimentPerformance, classifier2: ExperimentPerformance): StatisticalTestResult {
25
37
  let statistic = this.testStatistic(classifier1, classifier2);
26
38
  let degreeOfFreedom = classifier1.numberOfExperiments() - 1;
@@ -4,6 +4,11 @@ import {StatisticalTestResult} from "./StatisticalTestResult";
4
4
 
5
5
  export class Sign extends PairedTest{
6
6
 
7
+ /**
8
+ * Calculates n!.
9
+ * @param n n is n!
10
+ * @return n!.
11
+ */
7
12
  private factorial(n: number): number{
8
13
  let result = 1;
9
14
  for (let i = 2; i <= n; i++)
@@ -11,6 +16,12 @@ export class Sign extends PairedTest{
11
16
  return result;
12
17
  }
13
18
 
19
+ /**
20
+ * Calculates m of n that is C(n, m)
21
+ * @param m m in C(m, n)
22
+ * @param n n in C(m, n)
23
+ * @return C(m, n)
24
+ */
14
25
  private binomial(m: number, n: number): number{
15
26
  if (n == 0 || m == n){
16
27
  return 1;
@@ -19,6 +30,12 @@ export class Sign extends PairedTest{
19
30
  }
20
31
  }
21
32
 
33
+ /**
34
+ * Compares two classification algorithms based on their performances (accuracy or error rate) using sign test.
35
+ * @param classifier1 Performance (error rate or accuracy) results of the first classifier.
36
+ * @param classifier2 Performance (error rate or accuracy) results of the second classifier.
37
+ * @return Statistical test result of the comparison.
38
+ */
22
39
  compareClassifiers(classifier1: ExperimentPerformance, classifier2: ExperimentPerformance): StatisticalTestResult {
23
40
  let plus = 0, minus = 0;
24
41
  for (let i = 0; i < classifier1.numberOfExperiments(); i++){
@@ -5,11 +5,24 @@ export class StatisticalTestResult {
5
5
  private readonly pValue: number
6
6
  private readonly onlyTwoTailed: boolean
7
7
 
8
+ /**
9
+ * Constructor of the StatisticalTestResult. It sets the attribute values.
10
+ * @param pValue p value of the statistical test result
11
+ * @param onlyTwoTailed True, if this test applicable only two tailed tests, false otherwise.
12
+ */
8
13
  constructor(pValue: number, onlyTwoTailed: boolean) {
9
14
  this.pValue = pValue
10
15
  this.onlyTwoTailed = onlyTwoTailed
11
16
  }
12
17
 
18
+ /**
19
+ * Returns reject or failed to reject, depending on the alpha level and p value of the statistical test that checks
20
+ * one tailed null hypothesis such as mu1 < mu2. If p value is less than the alpha level, the test rejects the null
21
+ * hypothesis. Otherwise, it fails to reject the null hypothesis.
22
+ * @param alpha Alpha level of the test
23
+ * @return If p value is less than the alpha level, the test rejects the null hypothesis. Otherwise, it fails to
24
+ * reject the null hypothesis.
25
+ */
13
26
  oneTailed(alpha: number): StatisticalTestResultType{
14
27
  if (!this.onlyTwoTailed){
15
28
  if (this.pValue < alpha){
@@ -20,6 +33,19 @@ export class StatisticalTestResult {
20
33
  }
21
34
  }
22
35
 
36
+ /**
37
+ * Returns reject or failed to reject, depending on the alpha level and p value of the statistical test that checks
38
+ * one tailed null hypothesis such as mu1 < mu2 or two tailed null hypothesis such as mu1 = mu2. If the null
39
+ * hypothesis is two tailed, and p value is less than the alpha level, the test rejects the null hypothesis.
40
+ * Otherwise, it fails to reject the null hypothesis. If the null hypothesis is one tailed, and p value is less
41
+ * than alpha / 2 or p value is larger than 1 - alpha / 2, the test rejects the null hypothesis. Otherwise, it
42
+ * fails to reject the null hypothesis.
43
+ * @param alpha Alpha level of the test
44
+ * @return If the null hypothesis is two tailed, and p value is less than the alpha level, the test rejects the
45
+ * null hypothesis. Otherwise, it fails to reject the null hypothesis. If the null hypothesis is one tailed, and
46
+ * p value is less than alpha / 2 or p value is larger than 1 - alpha / 2, the test rejects the null hypothesis.
47
+ * Otherwise, it fails to reject the null hypothesis.
48
+ */
23
49
  twoTailed(alpha: number): StatisticalTestResultType{
24
50
  if (this.onlyTwoTailed){
25
51
  if (this.pValue < alpha){
@@ -36,6 +62,10 @@ export class StatisticalTestResult {
36
62
  }
37
63
  }
38
64
 
65
+ /**
66
+ * Accessor for the p value of the statistical test result.
67
+ * @return p value of the statistical test result
68
+ */
39
69
  getPValue(): number{
40
70
  return this.pValue
41
71
  }
@@ -0,0 +1,88 @@
1
+ export * from "./Attribute/Attribute"
2
+ export * from "./Attribute/AttributeType"
3
+ export * from "./Attribute/BinaryAttribute"
4
+ export * from "./Attribute/ContinuousAttribute"
5
+ export * from "./Attribute/DiscreteAttribute"
6
+ export * from "./Attribute/DiscreteIndexedAttribute"
7
+ export * from "./DataSet/DataDefinition"
8
+ export * from "./DataSet/DataSet"
9
+ export * from "./DistanceMetric/DistanceMetric"
10
+ export * from "./DistanceMetric/EuclidianDistance"
11
+ export * from "./DistanceMetric/MahalanobisDistance"
12
+ export * from "./Experiment/BootstrapRun"
13
+ export * from "./Experiment/Experiment"
14
+ export * from "./Experiment/KFoldRun"
15
+ export * from "./Experiment/KFoldRunSeparateTest"
16
+ export * from "./Experiment/MultipleRun"
17
+ export * from "./Experiment/MxKFoldRun"
18
+ export * from "./Experiment/MxKFoldRunSeparateTest"
19
+ export * from "./Experiment/SingleRun"
20
+ export * from "./Experiment/SingleRunWithK"
21
+ export * from "./Experiment/StratifiedKFoldRun"
22
+ export * from "./Experiment/StratifiedKFoldRunSeparateTest"
23
+ export * from "./Experiment/StratifiedMxKFoldRun"
24
+ export * from "./Experiment/StratifiedMxKFoldRunSeparateTest"
25
+ export * from "./Experiment/StratifiedSingleRunWithK"
26
+ export * from "./FeatureSelection/BackwardSelection"
27
+ export * from "./FeatureSelection/FeatureSubSet"
28
+ export * from "./FeatureSelection/FloatingSelection"
29
+ export * from "./FeatureSelection/ForwardSelection"
30
+ export * from "./FeatureSelection/SubSetSelection"
31
+ export * from "./Filter/DiscreteToContinuous"
32
+ export * from "./Filter/DiscreteToIndexed"
33
+ export * from "./Filter/FeatureFilter"
34
+ export * from "./Filter/LaryFilter"
35
+ export * from "./Filter/LaryToBinary"
36
+ export * from "./Filter/Normalize"
37
+ export * from "./Filter/Pca"
38
+ export * from "./Filter/TrainedFeatureFilter"
39
+ export * from "./Instance/CompositeInstance"
40
+ export * from "./Instance/Instance"
41
+ export * from "./InstanceList/InstanceList"
42
+ export * from "./InstanceList/InstanceListOfSameClass"
43
+ export * from "./InstanceList/Partition"
44
+ export * from "./Model/DecisionTree/DecisionCondition"
45
+ export * from "./Model/DecisionTree/DecisionNode"
46
+ export * from "./Model/DecisionTree/DecisionTree"
47
+ export * from "./Model/DecisionTree/DecisionStump"
48
+ export * from "./Model/Ensemble/BaggingModel"
49
+ export * from "./Model/NeuralNetwork/DeepNetworkModel"
50
+ export * from "./Model/DummyModel"
51
+ export * from "./Model/Parametric/GaussianModel"
52
+ export * from "./Model/Parametric/KMeansModel"
53
+ export * from "./Model/Parametric/LdaModel"
54
+ export * from "./Model/Parametric/QdaModel"
55
+ export * from "./Model/Parametric/NaiveBayesModel"
56
+ export * from "./Model/NonParametric/KnnInstance"
57
+ export * from "./Model/NonParametric/KnnModel"
58
+ export * from "./Model/NeuralNetwork/LinearPerceptronModel"
59
+ export * from "./Model/Model"
60
+ export * from "./Model/NeuralNetwork/MultiLayerPerceptronModel"
61
+ export * from "./Model/NeuralNetwork/NeuralNetworkModel"
62
+ export * from "./Model/RandomModel"
63
+ export * from "./Model/Ensemble/RandomForestModel"
64
+ export * from "./Model/Ensemble/TreeEnsembleModel"
65
+ export * from "./Model/ValidatedModel"
66
+ export * from "./Parameter/ActivationFunction"
67
+ export * from "./Parameter/BaggingParameter"
68
+ export * from "./Parameter/C45Parameter"
69
+ export * from "./Parameter/DeepNetworkParameter"
70
+ export * from "./Parameter/KMeansParameter"
71
+ export * from "./Parameter/KnnParameter"
72
+ export * from "./Parameter/LinearPerceptronParameter"
73
+ export * from "./Parameter/MultiLayerPerceptronParameter"
74
+ export * from "./Parameter/Parameter"
75
+ export * from "./Parameter/RandomForestParameter"
76
+ export * from "./Performance/ClassificationPerformance"
77
+ export * from "./Performance/ConfusionMatrix"
78
+ export * from "./Performance/DetailedClassificationPerformance"
79
+ export * from "./Performance/ExperimentPerformance"
80
+ export * from "./Performance/Performance"
81
+ export * from "./StatisticalTest/Combined5x2F"
82
+ export * from "./StatisticalTest/Combined5x2t"
83
+ export * from "./StatisticalTest/Paired5x2t"
84
+ export * from "./StatisticalTest/Pairedt"
85
+ export * from "./StatisticalTest/PairedTest"
86
+ export * from "./StatisticalTest/Sign"
87
+ export * from "./StatisticalTest/StatisticalTestResult"
88
+ export * from "./StatisticalTest/StatisticalTestResultType"
@@ -2,7 +2,7 @@
2
2
  "compilerOptions": {
3
3
  "outDir": "../dist",
4
4
  "module": "umd",
5
- "target": "es6",
5
+ "target": "es2018",
6
6
  "sourceMap": true,
7
7
  "noImplicitAny": true,
8
8
  "strictNullChecks": false,
@@ -1,13 +1,13 @@
1
1
  import * as assert from "assert";
2
- import {C45} from "../../dist/Classifier/C45";
3
2
  import {C45Parameter} from "../../dist/Parameter/C45Parameter";
4
3
  import {AttributeType} from "../../dist/Attribute/AttributeType";
5
4
  import {DataDefinition} from "../../dist/DataSet/DataDefinition";
6
5
  import {DataSet} from "../../dist/DataSet/DataSet";
6
+ import {DecisionTree} from "../../dist/Model/DecisionTree/DecisionTree";
7
7
 
8
8
  describe('C45Test', function() {
9
9
  describe('C45Test', function() {
10
- let c45 = new C45()
10
+ let c45 = new DecisionTree()
11
11
  let c45Parameter = new C45Parameter(1, true, 0.2)
12
12
  let attributeTypes = new Array<AttributeType>();
13
13
  for (let i = 0; i < 4; i++){
@@ -2,15 +2,13 @@ import * as assert from "assert";
2
2
  import {AttributeType} from "../../dist/Attribute/AttributeType";
3
3
  import {DataDefinition} from "../../dist/DataSet/DataDefinition";
4
4
  import {DataSet} from "../../dist/DataSet/DataSet";
5
- import {MultiLayerPerceptron} from "../../dist/Classifier/MultiLayerPerceptron";
6
- import {MultiLayerPerceptronParameter} from "../../dist/Parameter/MultiLayerPerceptronParameter";
7
5
  import {ActivationFunction} from "../../dist/Parameter/ActivationFunction";
8
- import {DeepNetwork} from "../../dist/Classifier/DeepNetwork";
9
6
  import {DeepNetworkParameter} from "../../dist/Parameter/DeepNetworkParameter";
7
+ import {DeepNetworkModel} from "../../dist/Model/NeuralNetwork/DeepNetworkModel";
10
8
 
11
9
  describe('DeepNetworkTest', function() {
12
10
  describe('DeepNetworkTest', function() {
13
- let deepNetwork = new DeepNetwork()
11
+ let deepNetwork = new DeepNetworkModel()
14
12
  let attributeTypes = new Array<AttributeType>();
15
13
  for (let i = 0; i < 4; i++){
16
14
  attributeTypes.push(AttributeType.CONTINUOUS)
@@ -38,7 +36,7 @@ describe('DeepNetworkTest', function() {
38
36
  assert.ok(Math.abs(28.70 - 100 * deepNetwork.test(bupa.getInstanceList()).getErrorRate()) <= 0.01);
39
37
  deepNetworkParameter = new DeepNetworkParameter(1, 0.01, 0.99, 0.2, 100, [20], ActivationFunction.SIGMOID)
40
38
  deepNetwork.train(dermatology.getInstanceList(), deepNetworkParameter);
41
- assert.ok(Math.abs(2.73 - 100 * deepNetwork.test(dermatology.getInstanceList()).getErrorRate()) <= 0.01);
39
+ assert.ok(Math.abs(1.37 - 100 * deepNetwork.test(dermatology.getInstanceList()).getErrorRate()) <= 0.01);
42
40
  });
43
41
  it('testLoad', function() {
44
42
  deepNetwork.loadModel("models/deepNetwork-iris.txt");
@@ -2,11 +2,11 @@ import {AttributeType} from "../../dist/Attribute/AttributeType";
2
2
  import {DataDefinition} from "../../dist/DataSet/DataDefinition";
3
3
  import {DataSet} from "../../dist/DataSet/DataSet";
4
4
  import * as assert from "assert";
5
- import {Dummy} from "../../dist/Classifier/Dummy";
5
+ import {DummyModel} from "../../dist/Model/DummyModel";
6
6
 
7
7
  describe('DummyTest', function() {
8
8
  describe('DummyTest', function() {
9
- let dummy = new Dummy()
9
+ let dummy = new DummyModel()
10
10
  let attributeTypes = new Array<AttributeType>();
11
11
  for (let i = 0; i < 4; i++){
12
12
  attributeTypes.push(AttributeType.CONTINUOUS)
@@ -2,12 +2,12 @@ import {AttributeType} from "../../dist/Attribute/AttributeType";
2
2
  import {DataDefinition} from "../../dist/DataSet/DataDefinition";
3
3
  import {DataSet} from "../../dist/DataSet/DataSet";
4
4
  import * as assert from "assert";
5
- import {KMeans} from "../../dist/Classifier/KMeans";
6
5
  import {KMeansParameter} from "../../dist/Parameter/KMeansParameter";
6
+ import {KMeansModel} from "../../dist/Model/Parametric/KMeansModel";
7
7
 
8
8
  describe('KMeansTest', function() {
9
9
  describe('KMeansTest', function() {
10
- let kMeans = new KMeans()
10
+ let kMeans = new KMeansModel()
11
11
  let kMeansParameter = new KMeansParameter(1)
12
12
  let attributeTypes = new Array<AttributeType>();
13
13
  for (let i = 0; i < 4; i++){
@@ -2,13 +2,13 @@ import * as assert from "assert";
2
2
  import {AttributeType} from "../../dist/Attribute/AttributeType";
3
3
  import {DataDefinition} from "../../dist/DataSet/DataDefinition";
4
4
  import {DataSet} from "../../dist/DataSet/DataSet";
5
- import {Knn} from "../../dist/Classifier/Knn";
6
5
  import {KnnParameter} from "../../dist/Parameter/KnnParameter";
7
6
  import {EuclidianDistance} from "../../dist/DistanceMetric/EuclidianDistance";
7
+ import {KnnModel} from "../../dist/Model/NonParametric/KnnModel";
8
8
 
9
9
  describe('KnnTest', function() {
10
10
  describe('KnnTest', function() {
11
- let knn = new Knn()
11
+ let knn = new KnnModel()
12
12
  let knnParameter = new KnnParameter(1, 3, new EuclidianDistance())
13
13
  let attributeTypes = new Array<AttributeType>();
14
14
  for (let i = 0; i < 4; i++){
@@ -2,11 +2,11 @@ import * as assert from "assert";
2
2
  import {AttributeType} from "../../dist/Attribute/AttributeType";
3
3
  import {DataDefinition} from "../../dist/DataSet/DataDefinition";
4
4
  import {DataSet} from "../../dist/DataSet/DataSet";
5
- import {Lda} from "../../dist/Classifier/Lda";
5
+ import {LdaModel} from "../../dist/Model/Parametric/LdaModel";
6
6
 
7
7
  describe('LdaTest', function() {
8
8
  describe('LdaTest', function() {
9
- let lda = new Lda()
9
+ let lda = new LdaModel()
10
10
  let attributeTypes = new Array<AttributeType>();
11
11
  for (let i = 0; i < 4; i++){
12
12
  attributeTypes.push(AttributeType.CONTINUOUS)
@@ -2,12 +2,12 @@ import * as assert from "assert";
2
2
  import {AttributeType} from "../../dist/Attribute/AttributeType";
3
3
  import {DataDefinition} from "../../dist/DataSet/DataDefinition";
4
4
  import {DataSet} from "../../dist/DataSet/DataSet";
5
- import {LinearPerceptron} from "../../dist/Classifier/LinearPerceptron";
6
5
  import {LinearPerceptronParameter} from "../../dist/Parameter/LinearPerceptronParameter";
6
+ import {LinearPerceptronModel} from "../../dist/Model/NeuralNetwork/LinearPerceptronModel";
7
7
 
8
8
  describe('LinearPerceptronTest', function() {
9
9
  describe('LinearPerceptronTest', function() {
10
- let linearPerceptron = new LinearPerceptron()
10
+ let linearPerceptron = new LinearPerceptronModel()
11
11
  let attributeTypes = new Array<AttributeType>();
12
12
  for (let i = 0; i < 4; i++){
13
13
  attributeTypes.push(AttributeType.CONTINUOUS)
@@ -2,14 +2,13 @@ import * as assert from "assert";
2
2
  import {AttributeType} from "../../dist/Attribute/AttributeType";
3
3
  import {DataDefinition} from "../../dist/DataSet/DataDefinition";
4
4
  import {DataSet} from "../../dist/DataSet/DataSet";
5
- import {LinearPerceptronParameter} from "../../dist/Parameter/LinearPerceptronParameter";
6
- import {MultiLayerPerceptron} from "../../dist/Classifier/MultiLayerPerceptron";
7
5
  import {MultiLayerPerceptronParameter} from "../../dist/Parameter/MultiLayerPerceptronParameter";
8
6
  import {ActivationFunction} from "../../dist/Parameter/ActivationFunction";
7
+ import {MultiLayerPerceptronModel} from "../../dist/Model/NeuralNetwork/MultiLayerPerceptronModel";
9
8
 
10
9
  describe('MultiLayerPerceptronTest', function() {
11
10
  describe('MultiLayerPerceptronTest', function() {
12
- let multiLayerPerceptron = new MultiLayerPerceptron()
11
+ let multiLayerPerceptron = new MultiLayerPerceptronModel()
13
12
  let attributeTypes = new Array<AttributeType>();
14
13
  for (let i = 0; i < 4; i++){
15
14
  attributeTypes.push(AttributeType.CONTINUOUS)
@@ -2,11 +2,11 @@ import * as assert from "assert";
2
2
  import {AttributeType} from "../../dist/Attribute/AttributeType";
3
3
  import {DataDefinition} from "../../dist/DataSet/DataDefinition";
4
4
  import {DataSet} from "../../dist/DataSet/DataSet";
5
- import {NaiveBayes} from "../../dist/Classifier/NaiveBayes";
5
+ import {NaiveBayesModel} from "../../dist/Model/Parametric/NaiveBayesModel";
6
6
 
7
7
  describe('NaiveBayesTest', function() {
8
8
  describe('NaiveBayesTest', function() {
9
- let naiveBayes = new NaiveBayes()
9
+ let naiveBayes = new NaiveBayesModel()
10
10
  let attributeTypes = new Array<AttributeType>();
11
11
  for (let i = 0; i < 4; i++){
12
12
  attributeTypes.push(AttributeType.CONTINUOUS)
@@ -2,11 +2,11 @@ import * as assert from "assert";
2
2
  import {AttributeType} from "../../dist/Attribute/AttributeType";
3
3
  import {DataDefinition} from "../../dist/DataSet/DataDefinition";
4
4
  import {DataSet} from "../../dist/DataSet/DataSet";
5
- import {Qda} from "../../dist/Classifier/Qda";
5
+ import {QdaModel} from "../../dist/Model/Parametric/QdaModel";
6
6
 
7
7
  describe('QdaTest', function() {
8
8
  describe('QdaTest', function() {
9
- let qda = new Qda()
9
+ let qda = new QdaModel()
10
10
  let attributeTypes = new Array<AttributeType>();
11
11
  for (let i = 0; i < 4; i++){
12
12
  attributeTypes.push(AttributeType.CONTINUOUS)
@@ -2,12 +2,12 @@ import {AttributeType} from "../../dist/Attribute/AttributeType";
2
2
  import {DataDefinition} from "../../dist/DataSet/DataDefinition";
3
3
  import {DataSet} from "../../dist/DataSet/DataSet";
4
4
  import * as assert from "assert";
5
- import {RandomForest} from "../../dist/Classifier/RandomForest";
6
5
  import {RandomForestParameter} from "../../dist/Parameter/RandomForestParameter";
6
+ import {RandomForestModel} from "../../dist/Model/Ensemble/RandomForestModel";
7
7
 
8
8
  describe('RandomForestTest', function() {
9
9
  describe('RandomForestTest', function() {
10
- let randomForest = new RandomForest()
10
+ let randomForest = new RandomForestModel()
11
11
  let randomForestParameter = new RandomForestParameter(1, 100, 35)
12
12
  let attributeTypes = new Array<AttributeType>();
13
13
  for (let i = 0; i < 4; i++){
package/tsconfig.json CHANGED
@@ -1,14 +1,13 @@
1
1
  {
2
2
  "compilerOptions": {
3
3
  "module": "commonjs",
4
- "target": "es6",
4
+ "target": "es2018",
5
5
  "sourceMap": true,
6
6
  "noImplicitAny": true,
7
7
  "removeComments": false,
8
8
  "moduleResolution": "node"
9
9
  },
10
10
  "exclude": [
11
- "source",
12
11
  "node_modules",
13
12
  "dist"
14
13
  ]
@@ -1 +0,0 @@
1
- {"version":3,"file":"Bagging.js","sourceRoot":"","sources":["../../source/Classifier/Bagging.ts"],"names":[],"mappings":";;;;;;;;;;;;IAAA,6CAAwC;IACxC,+DAA0D;IAG1D,qEAAgE;IAChE,qEAAgE;IAChE,kEAA6D;IAE7D,MAAa,OAAQ,SAAQ,uBAAU;QAEnC;;;;;;;;;WASG;QACH,KAAK,CAAC,QAAsB,EAAE,UAAqB;YAC/C,IAAI,UAAU,GAAuB,UAAW,CAAC,eAAe,EAAE,CAAC;YACnE,IAAI,MAAM,GAAG,IAAI,KAAK,EAAgB,CAAC;YACvC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,UAAU,EAAE,CAAC,EAAE,EAAE;gBACjC,IAAI,SAAS,GAAG,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;gBACtC,IAAI,IAAI,GAAG,IAAI,2BAAY,CAAC,IAAI,2BAAY,CAAC,IAAI,2BAAY,CAAC,SAAS,CAAC,SAAS,EAAE,CAAC,EAAE,SAAS,EAAE,SAAS,EAAE,KAAK,CAAC,CAAC,CAAC;gBACpH,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;aACrB;YACD,IAAI,CAAC,KAAK,GAAG,IAAI,qCAAiB,CAAC,MAAM,CAAC,CAAC;QAC/C,CAAC;QAED,SAAS,CAAC,QAAgB;YACtB,IAAI,CAAC,KAAK,GAAG,IAAI,qCAAiB,CAAC,QAAQ,CAAC,CAAA;QAChD,CAAC;KACJ;IA1BD,0BA0BC"}
@@ -1,14 +0,0 @@
1
- import { Classifier } from "./Classifier";
2
- import { InstanceList } from "../InstanceList/InstanceList";
3
- import { Parameter } from "../Parameter/Parameter";
4
- export declare class C45 extends Classifier {
5
- /**
6
- * Training algorithm for C4.5 univariate decision tree classifier. 20 percent of the data are left aside for pruning
7
- * 80 percent of the data is used for constructing the tree.
8
- *
9
- * @param trainSet Training data given to the algorithm.
10
- * @param parameters -
11
- */
12
- train(trainSet: InstanceList, parameters: Parameter): void;
13
- loadModel(fileName: string): void;
14
- }
@@ -1,43 +0,0 @@
1
- (function (factory) {
2
- if (typeof module === "object" && typeof module.exports === "object") {
3
- var v = factory(require, exports);
4
- if (v !== undefined) module.exports = v;
5
- }
6
- else if (typeof define === "function" && define.amd) {
7
- define(["require", "exports", "./Classifier", "../InstanceList/Partition", "../Model/DecisionTree/DecisionTree", "../Model/DecisionTree/DecisionNode"], factory);
8
- }
9
- })(function (require, exports) {
10
- "use strict";
11
- Object.defineProperty(exports, "__esModule", { value: true });
12
- exports.C45 = void 0;
13
- const Classifier_1 = require("./Classifier");
14
- const Partition_1 = require("../InstanceList/Partition");
15
- const DecisionTree_1 = require("../Model/DecisionTree/DecisionTree");
16
- const DecisionNode_1 = require("../Model/DecisionTree/DecisionNode");
17
- class C45 extends Classifier_1.Classifier {
18
- /**
19
- * Training algorithm for C4.5 univariate decision tree classifier. 20 percent of the data are left aside for pruning
20
- * 80 percent of the data is used for constructing the tree.
21
- *
22
- * @param trainSet Training data given to the algorithm.
23
- * @param parameters -
24
- */
25
- train(trainSet, parameters) {
26
- let tree;
27
- if (parameters.isPrune()) {
28
- let partition = new Partition_1.Partition(trainSet, parameters.getCrossValidationRatio(), true);
29
- tree = new DecisionTree_1.DecisionTree(new DecisionNode_1.DecisionNode(partition.get(1), undefined, undefined, false));
30
- tree.prune(partition.get(0));
31
- }
32
- else {
33
- tree = new DecisionTree_1.DecisionTree(new DecisionNode_1.DecisionNode(trainSet, undefined, undefined, false));
34
- }
35
- this.model = tree;
36
- }
37
- loadModel(fileName) {
38
- this.model = new DecisionTree_1.DecisionTree(fileName);
39
- }
40
- }
41
- exports.C45 = C45;
42
- });
43
- //# sourceMappingURL=C45.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"C45.js","sourceRoot":"","sources":["../../source/Classifier/C45.ts"],"names":[],"mappings":";;;;;;;;;;;;IAAA,6CAAwC;IAIxC,yDAAoD;IACpD,qEAAgE;IAChE,qEAAgE;IAEhE,MAAa,GAAI,SAAQ,uBAAU;QAE/B;;;;;;WAMG;QACH,KAAK,CAAC,QAAsB,EAAE,UAAqB;YAC/C,IAAI,IAAkB,CAAA;YACtB,IAAoB,UAAW,CAAC,OAAO,EAAE,EAAE;gBACvC,IAAI,SAAS,GAAG,IAAI,qBAAS,CAAC,QAAQ,EAAkB,UAAW,CAAC,uBAAuB,EAAE,EAAE,IAAI,CAAC,CAAC;gBACrG,IAAI,GAAG,IAAI,2BAAY,CAAC,IAAI,2BAAY,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,SAAS,EAAE,KAAK,CAAC,CAAC,CAAC;gBACzF,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;aAChC;iBAAM;gBACH,IAAI,GAAG,IAAI,2BAAY,CAAC,IAAI,2BAAY,CAAC,QAAQ,EAAE,SAAS,EAAE,SAAS,EAAE,KAAK,CAAC,CAAC,CAAC;aACpF;YACD,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;QACtB,CAAC;QAED,SAAS,CAAC,QAAgB;YACtB,IAAI,CAAC,KAAK,GAAG,IAAI,2BAAY,CAAC,QAAQ,CAAC,CAAA;QAC3C,CAAC;KAEJ;IAzBD,kBAyBC"}
@@ -1,13 +0,0 @@
1
- import { Classifier } from "./Classifier";
2
- import { InstanceList } from "../InstanceList/InstanceList";
3
- import { Parameter } from "../Parameter/Parameter";
4
- export declare class C45Stump extends Classifier {
5
- /**
6
- * Training algorithm for C4.5 Stump univariate decision tree classifier.
7
- *
8
- * @param trainSet Training data given to the algorithm.
9
- * @param parameters -
10
- */
11
- train(trainSet: InstanceList, parameters: Parameter): void;
12
- loadModel(fileName: string): void;
13
- }
@@ -1 +0,0 @@
1
- {"version":3,"file":"C45Stump.js","sourceRoot":"","sources":["../../source/Classifier/C45Stump.ts"],"names":[],"mappings":";;;;;;;;;;;;IAAA,6CAAwC;IAGxC,qEAAgE;IAChE,qEAAgE;IAEhE,MAAa,QAAS,SAAQ,uBAAU;QAEpC;;;;;WAKG;QACH,KAAK,CAAC,QAAsB,EAAE,UAAqB;YAC/C,IAAI,CAAC,KAAK,GAAG,IAAI,2BAAY,CAAC,IAAI,2BAAY,CAAC,QAAQ,EAAE,SAAS,EAAE,SAAS,EAAE,IAAI,CAAC,CAAC,CAAC;QAC1F,CAAC;QAED,SAAS,CAAC,QAAgB;YACtB,IAAI,CAAC,KAAK,GAAG,IAAI,2BAAY,CAAC,QAAQ,CAAC,CAAA;QAC3C,CAAC;KAEJ;IAhBD,4BAgBC"}
@@ -1,40 +0,0 @@
1
- import { Model } from "../Model/Model";
2
- import { InstanceList } from "../InstanceList/InstanceList";
3
- import { Parameter } from "../Parameter/Parameter";
4
- import { Instance } from "../Instance/Instance";
5
- import { Performance } from "../Performance/Performance";
6
- export declare abstract class Classifier {
7
- protected model: Model;
8
- abstract train(trainSet: InstanceList, parameters: Parameter): void;
9
- abstract loadModel(fileName: string): void;
10
- /**
11
- * Checks given instance's attribute and returns true if it is a discrete indexed attribute, false otherwise.
12
- *
13
- * @param instance Instance to check.
14
- * @return True if instance is a discrete indexed attribute, false otherwise.
15
- */
16
- discreteCheck(instance: Instance): boolean;
17
- /**
18
- * TestClassification an instance list with the current model.
19
- *
20
- * @param testSet Test data (list of instances) to be tested.
21
- * @return The accuracy (and error) of the model as an instance of Performance class.
22
- */
23
- test(testSet: InstanceList): Performance;
24
- /**
25
- * Runs current classifier with the given train and test data.
26
- *
27
- * @param parameter Parameter of the classifier to be trained.
28
- * @param trainSet Training data to be used in training the classifier.
29
- * @param testSet Test data to be tested after training the model.
30
- * @return The accuracy (and error) of the trained model as an instance of Performance class.
31
- * @throws DiscreteFeaturesNotAllowed Exception for discrete features.
32
- */
33
- singleRun(parameter: Parameter, trainSet: InstanceList, testSet: InstanceList): Performance;
34
- /**
35
- * Accessor for the model.
36
- *
37
- * @return Model.
38
- */
39
- getModel(): Model;
40
- }
@@ -1,72 +0,0 @@
1
- (function (factory) {
2
- if (typeof module === "object" && typeof module.exports === "object") {
3
- var v = factory(require, exports);
4
- if (v !== undefined) module.exports = v;
5
- }
6
- else if (typeof define === "function" && define.amd) {
7
- define(["require", "exports", "../Attribute/DiscreteAttribute", "../Attribute/DiscreteIndexedAttribute", "../Performance/ConfusionMatrix", "../Performance/DetailedClassificationPerformance"], factory);
8
- }
9
- })(function (require, exports) {
10
- "use strict";
11
- Object.defineProperty(exports, "__esModule", { value: true });
12
- exports.Classifier = void 0;
13
- const DiscreteAttribute_1 = require("../Attribute/DiscreteAttribute");
14
- const DiscreteIndexedAttribute_1 = require("../Attribute/DiscreteIndexedAttribute");
15
- const ConfusionMatrix_1 = require("../Performance/ConfusionMatrix");
16
- const DetailedClassificationPerformance_1 = require("../Performance/DetailedClassificationPerformance");
17
- class Classifier {
18
- /**
19
- * Checks given instance's attribute and returns true if it is a discrete indexed attribute, false otherwise.
20
- *
21
- * @param instance Instance to check.
22
- * @return True if instance is a discrete indexed attribute, false otherwise.
23
- */
24
- discreteCheck(instance) {
25
- for (let i = 0; i < instance.attributeSize(); i++) {
26
- if (instance.getAttribute(i) instanceof DiscreteAttribute_1.DiscreteAttribute &&
27
- !(instance.getAttribute(i) instanceof DiscreteIndexedAttribute_1.DiscreteIndexedAttribute)) {
28
- return false;
29
- }
30
- }
31
- return true;
32
- }
33
- /**
34
- * TestClassification an instance list with the current model.
35
- *
36
- * @param testSet Test data (list of instances) to be tested.
37
- * @return The accuracy (and error) of the model as an instance of Performance class.
38
- */
39
- test(testSet) {
40
- let classLabels = testSet.getUnionOfPossibleClassLabels();
41
- let confusion = new ConfusionMatrix_1.ConfusionMatrix(classLabels);
42
- for (let i = 0; i < testSet.size(); i++) {
43
- let instance = testSet.get(i);
44
- confusion.classify(instance.getClassLabel(), this.model.predict(instance));
45
- }
46
- return new DetailedClassificationPerformance_1.DetailedClassificationPerformance(confusion);
47
- }
48
- /**
49
- * Runs current classifier with the given train and test data.
50
- *
51
- * @param parameter Parameter of the classifier to be trained.
52
- * @param trainSet Training data to be used in training the classifier.
53
- * @param testSet Test data to be tested after training the model.
54
- * @return The accuracy (and error) of the trained model as an instance of Performance class.
55
- * @throws DiscreteFeaturesNotAllowed Exception for discrete features.
56
- */
57
- singleRun(parameter, trainSet, testSet) {
58
- this.train(trainSet, parameter);
59
- return this.test(testSet);
60
- }
61
- /**
62
- * Accessor for the model.
63
- *
64
- * @return Model.
65
- */
66
- getModel() {
67
- return this.model;
68
- }
69
- }
70
- exports.Classifier = Classifier;
71
- });
72
- //# sourceMappingURL=Classifier.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"Classifier.js","sourceRoot":"","sources":["../../source/Classifier/Classifier.ts"],"names":[],"mappings":";;;;;;;;;;;;IAIA,sEAAiE;IACjE,oFAA+E;IAC/E,oEAA+D;IAE/D,wGAAmG;IAEnG,MAAsB,UAAU;QAO5B;;;;;WAKG;QACH,aAAa,CAAC,QAAkB;YAC5B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,aAAa,EAAE,EAAE,CAAC,EAAE,EAAE;gBAC/C,IAAI,QAAQ,CAAC,YAAY,CAAC,CAAC,CAAC,YAAY,qCAAiB;oBACrD,CAAC,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC,CAAC,YAAY,mDAAwB,CAAC,EAAE;oBACjE,OAAO,KAAK,CAAC;iBAChB;aACJ;YACD,OAAO,IAAI,CAAC;QAChB,CAAC;QAED;;;;;WAKG;QACH,IAAI,CAAC,OAAqB;YACtB,IAAI,WAAW,GAAG,OAAO,CAAC,6BAA6B,EAAE,CAAC;YAC1D,IAAI,SAAS,GAAG,IAAI,iCAAe,CAAC,WAAW,CAAC,CAAC;YACjD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,EAAE,EAAE;gBACrC,IAAI,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;gBAC9B,SAAS,CAAC,QAAQ,CAAC,QAAQ,CAAC,aAAa,EAAE,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC;aAC9E;YACD,OAAO,IAAI,qEAAiC,CAAC,SAAS,CAAC,CAAC;QAC5D,CAAC;QAED;;;;;;;;WAQG;QACH,SAAS,CAAC,SAAoB,EAAE,QAAsB,EAAE,OAAqB;YACzE,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;YAChC,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAC9B,CAAC;QAED;;;;WAIG;QACH,QAAQ;YACJ,OAAO,IAAI,CAAC,KAAK,CAAA;QACrB,CAAC;KACJ;IA7DD,gCA6DC"}