nlptoolkit-classification 1.0.3 → 1.0.5

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 (213) hide show
  1. package/dist/Classifier/Bagging.d.ts +1 -0
  2. package/dist/Classifier/Bagging.js +3 -0
  3. package/dist/Classifier/Bagging.js.map +1 -1
  4. package/dist/Classifier/C45.d.ts +1 -0
  5. package/dist/Classifier/C45.js +3 -0
  6. package/dist/Classifier/C45.js.map +1 -1
  7. package/dist/Classifier/C45Stump.d.ts +1 -0
  8. package/dist/Classifier/C45Stump.js +3 -0
  9. package/dist/Classifier/C45Stump.js.map +1 -1
  10. package/dist/Classifier/Classifier.d.ts +1 -0
  11. package/dist/Classifier/Classifier.js.map +1 -1
  12. package/dist/Classifier/DeepNetwork.d.ts +1 -0
  13. package/dist/Classifier/DeepNetwork.js +3 -0
  14. package/dist/Classifier/DeepNetwork.js.map +1 -1
  15. package/dist/Classifier/Dummy.d.ts +1 -0
  16. package/dist/Classifier/Dummy.js +3 -0
  17. package/dist/Classifier/Dummy.js.map +1 -1
  18. package/dist/Classifier/KMeans.d.ts +1 -0
  19. package/dist/Classifier/KMeans.js +3 -0
  20. package/dist/Classifier/KMeans.js.map +1 -1
  21. package/dist/Classifier/Knn.d.ts +1 -0
  22. package/dist/Classifier/Knn.js +3 -0
  23. package/dist/Classifier/Knn.js.map +1 -1
  24. package/dist/Classifier/Lda.d.ts +1 -0
  25. package/dist/Classifier/Lda.js +3 -0
  26. package/dist/Classifier/Lda.js.map +1 -1
  27. package/dist/Classifier/LinearPerceptron.d.ts +1 -0
  28. package/dist/Classifier/LinearPerceptron.js +3 -0
  29. package/dist/Classifier/LinearPerceptron.js.map +1 -1
  30. package/dist/Classifier/MultiLayerPerceptron.d.ts +1 -0
  31. package/dist/Classifier/MultiLayerPerceptron.js +3 -0
  32. package/dist/Classifier/MultiLayerPerceptron.js.map +1 -1
  33. package/dist/Classifier/NaiveBayes.d.ts +1 -0
  34. package/dist/Classifier/NaiveBayes.js +3 -0
  35. package/dist/Classifier/NaiveBayes.js.map +1 -1
  36. package/dist/Classifier/Qda.d.ts +1 -0
  37. package/dist/Classifier/Qda.js +3 -0
  38. package/dist/Classifier/Qda.js.map +1 -1
  39. package/dist/Classifier/RandomClassifier.d.ts +1 -0
  40. package/dist/Classifier/RandomClassifier.js +3 -0
  41. package/dist/Classifier/RandomClassifier.js.map +1 -1
  42. package/dist/Classifier/RandomForest.d.ts +1 -0
  43. package/dist/Classifier/RandomForest.js +3 -0
  44. package/dist/Classifier/RandomForest.js.map +1 -1
  45. package/dist/DataSet/DataDefinition.d.ts +5 -1
  46. package/dist/DataSet/DataDefinition.js +16 -1
  47. package/dist/DataSet/DataDefinition.js.map +1 -1
  48. package/dist/DataSet/DataSet.js +1 -1
  49. package/dist/DataSet/DataSet.js.map +1 -1
  50. package/dist/InstanceList/InstanceList.js +3 -0
  51. package/dist/InstanceList/InstanceList.js.map +1 -1
  52. package/dist/Model/DecisionTree/DecisionNode.d.ts +6 -3
  53. package/dist/Model/DecisionTree/DecisionNode.js +48 -3
  54. package/dist/Model/DecisionTree/DecisionNode.js.map +1 -1
  55. package/dist/Model/DecisionTree/DecisionTree.d.ts +4 -3
  56. package/dist/Model/DecisionTree/DecisionTree.js +14 -4
  57. package/dist/Model/DecisionTree/DecisionTree.js.map +1 -1
  58. package/dist/Model/DeepNetworkModel.d.ts +6 -3
  59. package/dist/Model/DeepNetworkModel.js +53 -30
  60. package/dist/Model/DeepNetworkModel.js.map +1 -1
  61. package/dist/Model/DummyModel.d.ts +2 -1
  62. package/dist/Model/DummyModel.js +22 -2
  63. package/dist/Model/DummyModel.js.map +1 -1
  64. package/dist/Model/GaussianModel.d.ts +4 -0
  65. package/dist/Model/GaussianModel.js +28 -1
  66. package/dist/Model/GaussianModel.js.map +1 -1
  67. package/dist/Model/KMeansModel.d.ts +3 -2
  68. package/dist/Model/KMeansModel.js +19 -6
  69. package/dist/Model/KMeansModel.js.map +1 -1
  70. package/dist/Model/KnnModel.d.ts +3 -2
  71. package/dist/Model/KnnModel.js +18 -6
  72. package/dist/Model/KnnModel.js.map +1 -1
  73. package/dist/Model/LdaModel.d.ts +5 -2
  74. package/dist/Model/LdaModel.js +28 -6
  75. package/dist/Model/LdaModel.js.map +1 -1
  76. package/dist/Model/LinearPerceptronModel.d.ts +5 -2
  77. package/dist/Model/LinearPerceptronModel.js +38 -10
  78. package/dist/Model/LinearPerceptronModel.js.map +1 -1
  79. package/dist/Model/Model.d.ts +7 -0
  80. package/dist/Model/Model.js +40 -1
  81. package/dist/Model/Model.js.map +1 -1
  82. package/dist/Model/MultiLayerPerceptronModel.d.ts +5 -2
  83. package/dist/Model/MultiLayerPerceptronModel.js +33 -13
  84. package/dist/Model/MultiLayerPerceptronModel.js.map +1 -1
  85. package/dist/Model/NaiveBayesModel.d.ts +2 -1
  86. package/dist/Model/NaiveBayesModel.js +18 -6
  87. package/dist/Model/NaiveBayesModel.js.map +1 -1
  88. package/dist/Model/NeuralNetworkModel.d.ts +4 -1
  89. package/dist/Model/NeuralNetworkModel.js +27 -6
  90. package/dist/Model/NeuralNetworkModel.js.map +1 -1
  91. package/dist/Model/QdaModel.d.ts +3 -2
  92. package/dist/Model/QdaModel.js +23 -5
  93. package/dist/Model/QdaModel.js.map +1 -1
  94. package/dist/Model/RandomModel.d.ts +4 -2
  95. package/dist/Model/RandomModel.js +20 -4
  96. package/dist/Model/RandomModel.js.map +1 -1
  97. package/dist/Model/TreeEnsembleModel.d.ts +3 -2
  98. package/dist/Model/TreeEnsembleModel.js +19 -4
  99. package/dist/Model/TreeEnsembleModel.js.map +1 -1
  100. package/models/bagging-bupa.txt +25666 -0
  101. package/models/bagging-car.txt +78923 -0
  102. package/models/bagging-dermatology.txt +7276 -0
  103. package/models/bagging-iris.txt +3131 -0
  104. package/models/bagging-tictactoe.txt +61186 -0
  105. package/models/c45-bupa.txt +3 -0
  106. package/models/c45-car.txt +331 -0
  107. package/models/c45-carIndexed.txt +188 -0
  108. package/models/c45-dermatology.txt +43 -0
  109. package/models/c45-iris.txt +13 -0
  110. package/models/c45-tictactoe.txt +270 -0
  111. package/models/c45-tictactoeIndexed.txt +173 -0
  112. package/models/c45stump-bupa.txt +8 -0
  113. package/models/c45stump-car.txt +11 -0
  114. package/models/c45stump-chess.txt +8 -0
  115. package/models/c45stump-dermatology.txt +8 -0
  116. package/models/c45stump-iris.txt +8 -0
  117. package/models/c45stump-nursery.txt +11 -0
  118. package/models/c45stump-tictactoe.txt +11 -0
  119. package/models/deepNetwork-bupa.txt +40 -0
  120. package/models/deepNetwork-dermatology.txt +37 -0
  121. package/models/deepNetwork-iris.txt +22 -0
  122. package/models/dummy-bupa.txt +3 -0
  123. package/models/dummy-car.txt +5 -0
  124. package/models/dummy-chess.txt +19 -0
  125. package/models/dummy-dermatology.txt +7 -0
  126. package/models/dummy-iris.txt +4 -0
  127. package/models/dummy-nursery.txt +6 -0
  128. package/models/dummy-tictactoe.txt +3 -0
  129. package/models/kMeans-bupa.txt +7 -0
  130. package/models/kMeans-car.txt +11 -0
  131. package/models/kMeans-chess.txt +39 -0
  132. package/models/kMeans-dermatology.txt +15 -0
  133. package/models/kMeans-iris.txt +9 -0
  134. package/models/kMeans-nursery.txt +13 -0
  135. package/models/kMeans-tictactoe.txt +7 -0
  136. package/models/knn-bupa.txt +348 -0
  137. package/models/knn-car.txt +1731 -0
  138. package/models/knn-dermatology.txt +369 -0
  139. package/models/knn-iris.txt +153 -0
  140. package/models/knn-tictactoe.txt +961 -0
  141. package/models/lda-bupa.txt +7 -0
  142. package/models/lda-dermatology.txt +19 -0
  143. package/models/lda-iris.txt +10 -0
  144. package/models/linearPerceptron-bupa.txt +6 -0
  145. package/models/linearPerceptron-dermatology.txt +14 -0
  146. package/models/linearPerceptron-iris.txt +8 -0
  147. package/models/multiLayerPerceptron-bupa.txt +38 -0
  148. package/models/multiLayerPerceptron-dermatology.txt +36 -0
  149. package/models/multiLayerPerceptron-iris.txt +13 -0
  150. package/models/naiveBayes-bupa.txt +7 -0
  151. package/models/naiveBayes-dermatology.txt +19 -0
  152. package/models/naiveBayes-iris.txt +10 -0
  153. package/models/qda-bupa.txt +23 -0
  154. package/models/qda-iris.txt +28 -0
  155. package/models/random-bupa.txt +4 -0
  156. package/models/random-car.txt +6 -0
  157. package/models/random-chess.txt +20 -0
  158. package/models/random-dermatology.txt +8 -0
  159. package/models/random-iris.txt +5 -0
  160. package/models/random-nursery.txt +7 -0
  161. package/models/random-tictactoe.txt +4 -0
  162. package/models/randomforest-bupa.txt +25666 -0
  163. package/models/randomforest-car.txt +78923 -0
  164. package/models/randomforest-carIndexed.txt +38786 -0
  165. package/models/randomforest-dermatology.txt +7276 -0
  166. package/models/randomforest-iris.txt +3131 -0
  167. package/models/randomforest-tictactoe.txt +61186 -0
  168. package/package.json +3 -3
  169. package/source/Classifier/Bagging.ts +3 -0
  170. package/source/Classifier/C45.ts +4 -0
  171. package/source/Classifier/C45Stump.ts +4 -0
  172. package/source/Classifier/Classifier.ts +1 -0
  173. package/source/Classifier/DeepNetwork.ts +4 -0
  174. package/source/Classifier/Dummy.ts +4 -0
  175. package/source/Classifier/KMeans.ts +4 -0
  176. package/source/Classifier/Knn.ts +5 -1
  177. package/source/Classifier/Lda.ts +4 -0
  178. package/source/Classifier/LinearPerceptron.ts +4 -0
  179. package/source/Classifier/MultiLayerPerceptron.ts +4 -0
  180. package/source/Classifier/NaiveBayes.ts +4 -0
  181. package/source/Classifier/Qda.ts +4 -0
  182. package/source/Classifier/RandomClassifier.ts +4 -0
  183. package/source/Classifier/RandomForest.ts +4 -0
  184. package/source/DataSet/DataDefinition.ts +19 -1
  185. package/source/DataSet/DataSet.ts +1 -1
  186. package/source/InstanceList/InstanceList.ts +5 -0
  187. package/source/Model/DecisionTree/DecisionNode.ts +69 -29
  188. package/source/Model/DecisionTree/DecisionTree.ts +14 -4
  189. package/source/Model/DeepNetworkModel.ts +40 -16
  190. package/source/Model/DummyModel.ts +20 -2
  191. package/source/Model/GaussianModel.ts +29 -0
  192. package/source/Model/KMeansModel.ts +18 -6
  193. package/source/Model/KnnModel.ts +19 -6
  194. package/source/Model/LdaModel.ts +29 -6
  195. package/source/Model/LinearPerceptronModel.ts +52 -25
  196. package/source/Model/Model.ts +43 -0
  197. package/source/Model/MultiLayerPerceptronModel.ts +34 -12
  198. package/source/Model/NaiveBayesModel.ts +19 -7
  199. package/source/Model/NeuralNetworkModel.ts +31 -7
  200. package/source/Model/QdaModel.ts +22 -4
  201. package/source/Model/RandomModel.ts +21 -4
  202. package/source/Model/TreeEnsembleModel.ts +17 -3
  203. package/tests/Classifier/C45Test.ts +98 -0
  204. package/tests/Classifier/DeepNetworkTest.ts +52 -0
  205. package/tests/Classifier/DummyTest.ts +89 -0
  206. package/tests/Classifier/KMeansTest.ts +89 -0
  207. package/tests/Classifier/KnnTest.ts +68 -0
  208. package/tests/Classifier/LdaTest.ts +45 -0
  209. package/tests/Classifier/LinearPerceptronTest.ts +49 -0
  210. package/tests/Classifier/MultiLayerPerceptronTest.ts +51 -0
  211. package/tests/Classifier/NaiveBayesTest.ts +45 -0
  212. package/tests/Classifier/QdaTest.ts +35 -0
  213. package/tests/Classifier/RandomForestTest.ts +85 -0
@@ -0,0 +1,98 @@
1
+ import * as assert from "assert";
2
+ import {C45} from "../../dist/Classifier/C45";
3
+ import {C45Parameter} from "../../dist/Parameter/C45Parameter";
4
+ import {AttributeType} from "../../dist/Attribute/AttributeType";
5
+ import {DataDefinition} from "../../dist/DataSet/DataDefinition";
6
+ import {DataSet} from "../../dist/DataSet/DataSet";
7
+
8
+ describe('C45Test', function() {
9
+ describe('C45Test', function() {
10
+ let c45 = new C45()
11
+ let c45Parameter = new C45Parameter(1, true, 0.2)
12
+ let attributeTypes = new Array<AttributeType>();
13
+ for (let i = 0; i < 4; i++){
14
+ attributeTypes.push(AttributeType.CONTINUOUS)
15
+ }
16
+ let dataDefinition = new DataDefinition(attributeTypes)
17
+ let iris = new DataSet(dataDefinition, ",", "datasets/iris.data")
18
+ attributeTypes = new Array<AttributeType>();
19
+ for (let i = 0; i < 6; i++){
20
+ attributeTypes.push(AttributeType.CONTINUOUS)
21
+ }
22
+ dataDefinition = new DataDefinition(attributeTypes)
23
+ let bupa = new DataSet(dataDefinition, ",", "datasets/bupa.data")
24
+ attributeTypes = new Array<AttributeType>()
25
+ for (let i = 0; i < 34; i++){
26
+ attributeTypes.push(AttributeType.CONTINUOUS)
27
+ }
28
+ dataDefinition = new DataDefinition(attributeTypes)
29
+ let dermatology = new DataSet(dataDefinition, ",", "datasets/dermatology.data")
30
+ attributeTypes = new Array<AttributeType>()
31
+ for (let i = 0; i < 6; i++){
32
+ attributeTypes.push(AttributeType.DISCRETE)
33
+ }
34
+ dataDefinition = new DataDefinition(attributeTypes);
35
+ let car = new DataSet(dataDefinition, ",", "datasets/car.data")
36
+ attributeTypes = new Array<AttributeType>();
37
+ let attributeValueList = new Array<Array<String>>()
38
+ attributeValueList.push(["vhigh", "high", "low", "med"])
39
+ attributeValueList.push(["vhigh", "high", "low", "med"])
40
+ attributeValueList.push(["2", "3", "4", "5more"])
41
+ attributeValueList.push(["2", "4", "more"])
42
+ attributeValueList.push(["big", "med", "small"])
43
+ attributeValueList.push(["high", "low", "med"])
44
+ for (let i = 0; i < 6; i++){
45
+ attributeTypes.push(AttributeType.DISCRETE_INDEXED)
46
+ }
47
+ dataDefinition = new DataDefinition(attributeTypes, attributeValueList)
48
+ let carIndexed = new DataSet(dataDefinition, ",", "datasets/car.data")
49
+ attributeTypes = new Array<AttributeType>()
50
+ for (let i = 0; i < 9; i++){
51
+ attributeTypes.push(AttributeType.DISCRETE)
52
+ }
53
+ dataDefinition = new DataDefinition(attributeTypes);
54
+ let tictactoe = new DataSet(dataDefinition, ",", "datasets/tictactoe.data")
55
+ attributeTypes = new Array<AttributeType>();
56
+ attributeValueList = new Array<Array<String>>()
57
+ for (let i = 0; i < 9; i++){
58
+ attributeTypes.push(AttributeType.DISCRETE_INDEXED)
59
+ attributeValueList.push(["b", "o", "x"])
60
+ }
61
+ dataDefinition = new DataDefinition(attributeTypes, attributeValueList)
62
+ let tictactoeIndexed = new DataSet(dataDefinition, ",", "datasets/tictactoe.data");
63
+ it('testTrain', function() {
64
+ c45.train(iris.getInstanceList(), c45Parameter);
65
+ assert.ok(Math.abs(4.00 - 100 * c45.test(iris.getInstanceList()).getErrorRate()) <= 0.01);
66
+ c45.train(bupa.getInstanceList(), c45Parameter);
67
+ assert.ok(Math.abs(28.41 - 100 * c45.test(bupa.getInstanceList()).getErrorRate()) <= 0.01);
68
+ c45.train(dermatology.getInstanceList(), c45Parameter);
69
+ assert.ok(Math.abs(2.46 - 100 * c45.test(dermatology.getInstanceList()).getErrorRate()) <= 0.01);
70
+ c45.train(car.getInstanceList(), c45Parameter);
71
+ assert.ok(Math.abs(21.35 - 100 * c45.test(car.getInstanceList()).getErrorRate()) <= 0.01);
72
+ c45.train(tictactoe.getInstanceList(), c45Parameter);
73
+ assert.ok(Math.abs(19.94 - 100 * c45.test(tictactoe.getInstanceList()).getErrorRate()) <= 0.01);
74
+ c45.train(carIndexed.getInstanceList(), c45Parameter);
75
+ let a = 100 * c45.test(carIndexed.getInstanceList()).getErrorRate()
76
+ assert.ok(Math.abs(10.76 - 100 * c45.test(carIndexed.getInstanceList()).getErrorRate()) <= 0.01);
77
+ c45.train(tictactoeIndexed.getInstanceList(), c45Parameter);
78
+ a = 100 * c45.test(tictactoeIndexed.getInstanceList()).getErrorRate()
79
+ assert.ok(Math.abs(16.08 - 100 * c45.test(tictactoeIndexed.getInstanceList()).getErrorRate()) <= 0.01);
80
+ });
81
+ it('testLoad', function() {
82
+ c45.loadModel("models/c45-iris.txt");
83
+ assert.ok(Math.abs(4.00 - 100 * c45.test(iris.getInstanceList()).getErrorRate()) <= 0.01);
84
+ c45.loadModel("models/c45-bupa.txt");
85
+ assert.ok(Math.abs(42.03 - 100 * c45.test(bupa.getInstanceList()).getErrorRate()) <= 0.01);
86
+ c45.loadModel("models/c45-dermatology.txt");
87
+ assert.ok(Math.abs(2.19 - 100 * c45.test(dermatology.getInstanceList()).getErrorRate()) <= 0.01);
88
+ c45.loadModel("models/c45-car.txt");
89
+ assert.ok(Math.abs(8.16 - 100 * c45.test(car.getInstanceList()).getErrorRate()) <= 0.01);
90
+ c45.loadModel("models/c45-tictactoe.txt");
91
+ assert.ok(Math.abs(14.61 - 100 * c45.test(tictactoe.getInstanceList()).getErrorRate()) <= 0.01);
92
+ c45.loadModel("models/c45-carIndexed.txt");
93
+ assert.ok(Math.abs(3.36 - 100 * c45.test(carIndexed.getInstanceList()).getErrorRate()) <= 0.01);
94
+ c45.loadModel("models/c45-tictactoeIndexed.txt");
95
+ assert.ok(Math.abs(4.49 - 100 * c45.test(tictactoeIndexed.getInstanceList()).getErrorRate()) <= 0.01);
96
+ });
97
+ });
98
+ });
@@ -0,0 +1,52 @@
1
+ import * as assert from "assert";
2
+ import {AttributeType} from "../../dist/Attribute/AttributeType";
3
+ import {DataDefinition} from "../../dist/DataSet/DataDefinition";
4
+ import {DataSet} from "../../dist/DataSet/DataSet";
5
+ import {MultiLayerPerceptron} from "../../dist/Classifier/MultiLayerPerceptron";
6
+ import {MultiLayerPerceptronParameter} from "../../dist/Parameter/MultiLayerPerceptronParameter";
7
+ import {ActivationFunction} from "../../dist/Parameter/ActivationFunction";
8
+ import {DeepNetwork} from "../../dist/Classifier/DeepNetwork";
9
+ import {DeepNetworkParameter} from "../../dist/Parameter/DeepNetworkParameter";
10
+
11
+ describe('DeepNetworkTest', function() {
12
+ describe('DeepNetworkTest', function() {
13
+ let deepNetwork = new DeepNetwork()
14
+ let attributeTypes = new Array<AttributeType>();
15
+ for (let i = 0; i < 4; i++){
16
+ attributeTypes.push(AttributeType.CONTINUOUS)
17
+ }
18
+ let dataDefinition = new DataDefinition(attributeTypes)
19
+ let iris = new DataSet(dataDefinition, ",", "datasets/iris.data")
20
+ attributeTypes = new Array<AttributeType>();
21
+ for (let i = 0; i < 6; i++){
22
+ attributeTypes.push(AttributeType.CONTINUOUS)
23
+ }
24
+ dataDefinition = new DataDefinition(attributeTypes)
25
+ let bupa = new DataSet(dataDefinition, ",", "datasets/bupa.data")
26
+ attributeTypes = new Array<AttributeType>()
27
+ for (let i = 0; i < 34; i++){
28
+ attributeTypes.push(AttributeType.CONTINUOUS)
29
+ }
30
+ dataDefinition = new DataDefinition(attributeTypes)
31
+ let dermatology = new DataSet(dataDefinition, ",", "datasets/dermatology.data")
32
+ it('testTrain', function() {
33
+ let deepNetworkParameter = new DeepNetworkParameter(1, 0.1, 0.99, 0.2, 100, [5, 5], ActivationFunction.SIGMOID)
34
+ deepNetwork.train(iris.getInstanceList(), deepNetworkParameter);
35
+ assert.ok(Math.abs(2.67 - 100 * deepNetwork.test(iris.getInstanceList()).getErrorRate()) <= 0.01);
36
+ deepNetworkParameter = new DeepNetworkParameter(1, 0.01, 0.99, 0.2, 100, [15, 15], ActivationFunction.SIGMOID)
37
+ deepNetwork.train(bupa.getInstanceList(), deepNetworkParameter);
38
+ assert.ok(Math.abs(28.70 - 100 * deepNetwork.test(bupa.getInstanceList()).getErrorRate()) <= 0.01);
39
+ deepNetworkParameter = new DeepNetworkParameter(1, 0.01, 0.99, 0.2, 100, [20], ActivationFunction.SIGMOID)
40
+ deepNetwork.train(dermatology.getInstanceList(), deepNetworkParameter);
41
+ assert.ok(Math.abs(2.73 - 100 * deepNetwork.test(dermatology.getInstanceList()).getErrorRate()) <= 0.01);
42
+ });
43
+ it('testLoad', function() {
44
+ deepNetwork.loadModel("models/deepNetwork-iris.txt");
45
+ assert.ok(Math.abs(1.33 - 100 * deepNetwork.test(iris.getInstanceList()).getErrorRate()) <= 0.01);
46
+ deepNetwork.loadModel("models/deepNetwork-bupa.txt");
47
+ assert.ok(Math.abs(28.99 - 100 * deepNetwork.test(bupa.getInstanceList()).getErrorRate()) <= 0.01);
48
+ deepNetwork.loadModel("models/deepNetwork-dermatology.txt");
49
+ assert.ok(Math.abs(1.09 - 100 * deepNetwork.test(dermatology.getInstanceList()).getErrorRate()) <= 0.01);
50
+ });
51
+ });
52
+ });
@@ -0,0 +1,89 @@
1
+ import {AttributeType} from "../../dist/Attribute/AttributeType";
2
+ import {DataDefinition} from "../../dist/DataSet/DataDefinition";
3
+ import {DataSet} from "../../dist/DataSet/DataSet";
4
+ import * as assert from "assert";
5
+ import {Dummy} from "../../dist/Classifier/Dummy";
6
+
7
+ describe('DummyTest', function() {
8
+ describe('DummyTest', function() {
9
+ let dummy = new Dummy()
10
+ let attributeTypes = new Array<AttributeType>();
11
+ for (let i = 0; i < 4; i++){
12
+ attributeTypes.push(AttributeType.CONTINUOUS)
13
+ }
14
+ let dataDefinition = new DataDefinition(attributeTypes)
15
+ let iris = new DataSet(dataDefinition, ",", "datasets/iris.data")
16
+ attributeTypes = new Array<AttributeType>();
17
+ for (let i = 0; i < 6; i++){
18
+ attributeTypes.push(AttributeType.CONTINUOUS)
19
+ }
20
+ dataDefinition = new DataDefinition(attributeTypes)
21
+ let bupa = new DataSet(dataDefinition, ",", "datasets/bupa.data")
22
+ attributeTypes = new Array<AttributeType>()
23
+ for (let i = 0; i < 34; i++){
24
+ attributeTypes.push(AttributeType.CONTINUOUS)
25
+ }
26
+ dataDefinition = new DataDefinition(attributeTypes)
27
+ let dermatology = new DataSet(dataDefinition, ",", "datasets/dermatology.data")
28
+ attributeTypes = new Array<AttributeType>()
29
+ for (let i = 0; i < 6; i++){
30
+ attributeTypes.push(AttributeType.DISCRETE)
31
+ }
32
+ dataDefinition = new DataDefinition(attributeTypes);
33
+ let car = new DataSet(dataDefinition, ",", "datasets/car.data");
34
+ attributeTypes = new Array<AttributeType>()
35
+ for (let i = 0; i < 9; i++){
36
+ attributeTypes.push(AttributeType.DISCRETE)
37
+ }
38
+ dataDefinition = new DataDefinition(attributeTypes);
39
+ let tictactoe = new DataSet(dataDefinition, ",", "datasets/tictactoe.data")
40
+ attributeTypes = new Array<AttributeType>()
41
+ for (let i = 0; i < 8; i++){
42
+ attributeTypes.push(AttributeType.DISCRETE)
43
+ }
44
+ dataDefinition = new DataDefinition(attributeTypes);
45
+ let nursery = new DataSet(dataDefinition, ",", "datasets/nursery.data")
46
+ attributeTypes = new Array<AttributeType>()
47
+ for (let i = 0; i < 6; i++){
48
+ if (i % 2 == 0){
49
+ attributeTypes.push(AttributeType.DISCRETE)
50
+ } else {
51
+ attributeTypes.push(AttributeType.CONTINUOUS)
52
+ }
53
+ }
54
+ dataDefinition = new DataDefinition(attributeTypes)
55
+ let chess = new DataSet(dataDefinition, ",", "datasets/chess.data")
56
+ it('testTrain', function() {
57
+ dummy.train(iris.getInstanceList(), null);
58
+ assert.ok(Math.abs(66.67 - 100 * dummy.test(iris.getInstanceList()).getErrorRate()) <= 0.01);
59
+ dummy.train(bupa.getInstanceList(), null);
60
+ assert.ok(Math.abs(42.03 - 100 * dummy.test(bupa.getInstanceList()).getErrorRate()) <= 0.01);
61
+ dummy.train(dermatology.getInstanceList(), null);
62
+ assert.ok(Math.abs(69.40 - 100 * dummy.test(dermatology.getInstanceList()).getErrorRate()) <= 0.01);
63
+ dummy.train(car.getInstanceList(), null);
64
+ assert.ok(Math.abs(29.98 - 100 * dummy.test(car.getInstanceList()).getErrorRate()) <= 0.01);
65
+ dummy.train(tictactoe.getInstanceList(), null);
66
+ assert.ok(Math.abs(34.66 - 100 * dummy.test(tictactoe.getInstanceList()).getErrorRate()) <= 0.01);
67
+ dummy.train(nursery.getInstanceList(), null);
68
+ assert.ok(Math.abs(66.67 - 100 * dummy.test(nursery.getInstanceList()).getErrorRate()) <= 0.01);
69
+ dummy.train(chess.getInstanceList(), null);
70
+ assert.ok(Math.abs(83.77 - 100 * dummy.test(chess.getInstanceList()).getErrorRate()) <= 0.01);
71
+ });
72
+ it('testLoad', function() {
73
+ dummy.loadModel("models/dummy-iris.txt");
74
+ assert.ok(Math.abs(66.67 - 100 * dummy.test(iris.getInstanceList()).getErrorRate()) <= 0.01);
75
+ dummy.loadModel("models/dummy-bupa.txt");
76
+ assert.ok(Math.abs(42.03 - 100 * dummy.test(bupa.getInstanceList()).getErrorRate()) <= 0.01);
77
+ dummy.loadModel("models/dummy-dermatology.txt");
78
+ assert.ok(Math.abs(69.40 - 100 * dummy.test(dermatology.getInstanceList()).getErrorRate()) <= 0.01);
79
+ dummy.loadModel("models/dummy-car.txt");
80
+ assert.ok(Math.abs(29.98 - 100 * dummy.test(car.getInstanceList()).getErrorRate()) <= 0.01);
81
+ dummy.loadModel("models/dummy-tictactoe.txt");
82
+ assert.ok(Math.abs(34.66 - 100 * dummy.test(tictactoe.getInstanceList()).getErrorRate()) <= 0.01);
83
+ dummy.loadModel("models/dummy-nursery.txt");
84
+ assert.ok(Math.abs(66.67 - 100 * dummy.test(nursery.getInstanceList()).getErrorRate()) <= 0.01);
85
+ dummy.loadModel("models/dummy-chess.txt");
86
+ assert.ok(Math.abs(83.77 - 100 * dummy.test(chess.getInstanceList()).getErrorRate()) <= 0.01);
87
+ });
88
+ });
89
+ });
@@ -0,0 +1,89 @@
1
+ import {AttributeType} from "../../dist/Attribute/AttributeType";
2
+ import {DataDefinition} from "../../dist/DataSet/DataDefinition";
3
+ import {DataSet} from "../../dist/DataSet/DataSet";
4
+ import * as assert from "assert";
5
+ import {KMeans} from "../../dist/Classifier/KMeans";
6
+ import {KMeansParameter} from "../../dist/Parameter/KMeansParameter";
7
+
8
+ describe('KMeansTest', function() {
9
+ describe('KMeansTest', function() {
10
+ let kMeans = new KMeans()
11
+ let kMeansParameter = new KMeansParameter(1)
12
+ let attributeTypes = new Array<AttributeType>();
13
+ for (let i = 0; i < 4; i++){
14
+ attributeTypes.push(AttributeType.CONTINUOUS)
15
+ }
16
+ let dataDefinition = new DataDefinition(attributeTypes)
17
+ let iris = new DataSet(dataDefinition, ",", "datasets/iris.data")
18
+ attributeTypes = new Array<AttributeType>();
19
+ for (let i = 0; i < 6; i++){
20
+ attributeTypes.push(AttributeType.CONTINUOUS)
21
+ }
22
+ dataDefinition = new DataDefinition(attributeTypes)
23
+ let bupa = new DataSet(dataDefinition, ",", "datasets/bupa.data")
24
+ attributeTypes = new Array<AttributeType>()
25
+ for (let i = 0; i < 34; i++){
26
+ attributeTypes.push(AttributeType.CONTINUOUS)
27
+ }
28
+ dataDefinition = new DataDefinition(attributeTypes)
29
+ let dermatology = new DataSet(dataDefinition, ",", "datasets/dermatology.data")
30
+ attributeTypes = new Array<AttributeType>()
31
+ for (let i = 0; i < 6; i++){
32
+ attributeTypes.push(AttributeType.DISCRETE)
33
+ }
34
+ dataDefinition = new DataDefinition(attributeTypes);
35
+ let car = new DataSet(dataDefinition, ",", "datasets/car.data");
36
+ attributeTypes = new Array<AttributeType>()
37
+ for (let i = 0; i < 9; i++){
38
+ attributeTypes.push(AttributeType.DISCRETE)
39
+ }
40
+ dataDefinition = new DataDefinition(attributeTypes);
41
+ let tictactoe = new DataSet(dataDefinition, ",", "datasets/tictactoe.data")
42
+ attributeTypes = new Array<AttributeType>()
43
+ for (let i = 0; i < 8; i++){
44
+ attributeTypes.push(AttributeType.DISCRETE)
45
+ }
46
+ dataDefinition = new DataDefinition(attributeTypes);
47
+ let nursery = new DataSet(dataDefinition, ",", "datasets/nursery.data")
48
+ attributeTypes = new Array<AttributeType>()
49
+ for (let i = 0; i < 6; i++){
50
+ if (i % 2 == 0){
51
+ attributeTypes.push(AttributeType.DISCRETE)
52
+ } else {
53
+ attributeTypes.push(AttributeType.CONTINUOUS)
54
+ }
55
+ }
56
+ dataDefinition = new DataDefinition(attributeTypes)
57
+ let chess = new DataSet(dataDefinition, ",", "datasets/chess.data")
58
+ it('testTrain', function() {
59
+ kMeans.train(iris.getInstanceList(), kMeansParameter);
60
+ assert.ok(Math.abs(7.33 - 100 * kMeans.test(iris.getInstanceList()).getErrorRate()) <= 0.01);
61
+ kMeans.train(bupa.getInstanceList(), kMeansParameter);
62
+ assert.ok(Math.abs(43.77 - 100 * kMeans.test(bupa.getInstanceList()).getErrorRate()) <= 0.01);
63
+ kMeans.train(dermatology.getInstanceList(), kMeansParameter);
64
+ assert.ok(Math.abs(45.08 - 100 * kMeans.test(dermatology.getInstanceList()).getErrorRate()) <= 0.01);
65
+ kMeans.train(car.getInstanceList(), kMeansParameter);
66
+ assert.ok(Math.abs(47.98 - 100 * kMeans.test(car.getInstanceList()).getErrorRate()) <= 0.01);
67
+ kMeans.train(tictactoe.getInstanceList(), kMeansParameter);
68
+ assert.ok(Math.abs(38.94 - 100 * kMeans.test(tictactoe.getInstanceList()).getErrorRate()) <= 0.01);
69
+ kMeans.train(nursery.getInstanceList(), kMeansParameter);
70
+ assert.ok(Math.abs(53.60 - 100 * kMeans.test(nursery.getInstanceList()).getErrorRate()) <= 0.01);
71
+ kMeans.train(chess.getInstanceList(), kMeansParameter);
72
+ assert.ok(Math.abs(83.25 - 100 * kMeans.test(chess.getInstanceList()).getErrorRate()) <= 0.01);
73
+ });
74
+ it('testLoad', function() {
75
+ kMeans.loadModel("models/kMeans-iris.txt");
76
+ assert.ok(Math.abs(7.33 - 100 * kMeans.test(iris.getInstanceList()).getErrorRate()) <= 0.01);
77
+ kMeans.loadModel("models/kMeans-bupa.txt");
78
+ assert.ok(Math.abs(43.77 - 100 * kMeans.test(bupa.getInstanceList()).getErrorRate()) <= 0.01);
79
+ kMeans.loadModel("models/kMeans-dermatology.txt");
80
+ assert.ok(Math.abs(45.08 - 100 * kMeans.test(dermatology.getInstanceList()).getErrorRate()) <= 0.01);
81
+ kMeans.loadModel("models/kMeans-car.txt");
82
+ assert.ok(Math.abs(29.98 - 100 * kMeans.test(car.getInstanceList()).getErrorRate()) <= 0.01);
83
+ kMeans.loadModel("models/kMeans-tictactoe.txt");
84
+ assert.ok(Math.abs(34.66 - 100 * kMeans.test(tictactoe.getInstanceList()).getErrorRate()) <= 0.01);
85
+ kMeans.loadModel("models/kMeans-chess.txt");
86
+ assert.ok(Math.abs(85.83 - 100 * kMeans.test(chess.getInstanceList()).getErrorRate()) <= 0.01);
87
+ });
88
+ });
89
+ });
@@ -0,0 +1,68 @@
1
+ import * as assert from "assert";
2
+ import {AttributeType} from "../../dist/Attribute/AttributeType";
3
+ import {DataDefinition} from "../../dist/DataSet/DataDefinition";
4
+ import {DataSet} from "../../dist/DataSet/DataSet";
5
+ import {Knn} from "../../dist/Classifier/Knn";
6
+ import {KnnParameter} from "../../dist/Parameter/KnnParameter";
7
+ import {EuclidianDistance} from "../../dist/DistanceMetric/EuclidianDistance";
8
+
9
+ describe('KnnTest', function() {
10
+ describe('KnnTest', function() {
11
+ let knn = new Knn()
12
+ let knnParameter = new KnnParameter(1, 3, new EuclidianDistance())
13
+ let attributeTypes = new Array<AttributeType>();
14
+ for (let i = 0; i < 4; i++){
15
+ attributeTypes.push(AttributeType.CONTINUOUS)
16
+ }
17
+ let dataDefinition = new DataDefinition(attributeTypes)
18
+ let iris = new DataSet(dataDefinition, ",", "datasets/iris.data")
19
+ attributeTypes = new Array<AttributeType>();
20
+ for (let i = 0; i < 6; i++){
21
+ attributeTypes.push(AttributeType.CONTINUOUS)
22
+ }
23
+ dataDefinition = new DataDefinition(attributeTypes)
24
+ let bupa = new DataSet(dataDefinition, ",", "datasets/bupa.data")
25
+ attributeTypes = new Array<AttributeType>()
26
+ for (let i = 0; i < 34; i++){
27
+ attributeTypes.push(AttributeType.CONTINUOUS)
28
+ }
29
+ dataDefinition = new DataDefinition(attributeTypes)
30
+ let dermatology = new DataSet(dataDefinition, ",", "datasets/dermatology.data")
31
+ attributeTypes = new Array<AttributeType>()
32
+ for (let i = 0; i < 6; i++){
33
+ attributeTypes.push(AttributeType.DISCRETE)
34
+ }
35
+ dataDefinition = new DataDefinition(attributeTypes);
36
+ let car = new DataSet(dataDefinition, ",", "datasets/car.data");
37
+ attributeTypes = new Array<AttributeType>()
38
+ for (let i = 0; i < 9; i++){
39
+ attributeTypes.push(AttributeType.DISCRETE)
40
+ }
41
+ dataDefinition = new DataDefinition(attributeTypes);
42
+ let tictactoe = new DataSet(dataDefinition, ",", "datasets/tictactoe.data")
43
+ it('testTrain', function() {
44
+ knn.train(iris.getInstanceList(), knnParameter);
45
+ assert.ok(Math.abs(4.00 - 100 * knn.test(iris.getInstanceList()).getErrorRate()) <= 0.01);
46
+ knn.train(bupa.getInstanceList(), knnParameter);
47
+ assert.ok(Math.abs(19.42 - 100 * knn.test(bupa.getInstanceList()).getErrorRate()) <= 0.01);
48
+ knn.train(dermatology.getInstanceList(), knnParameter);
49
+ assert.ok(Math.abs(3.00 - 100 * knn.test(dermatology.getInstanceList()).getErrorRate()) <= 0.01);
50
+ knn.train(car.getInstanceList(), knnParameter);
51
+ assert.ok(Math.abs(20.31 - 100 * knn.test(car.getInstanceList()).getErrorRate()) <= 0.01);
52
+ knn.train(tictactoe.getInstanceList(), knnParameter);
53
+ assert.ok(Math.abs(32.57 - 100 * knn.test(tictactoe.getInstanceList()).getErrorRate()) <= 0.01);
54
+ });
55
+ it('testLoad', function() {
56
+ knn.loadModel("models/knn-iris.txt");
57
+ assert.ok(Math.abs(4.00 - 100 * knn.test(iris.getInstanceList()).getErrorRate()) <= 0.01);
58
+ knn.loadModel("models/knn-bupa.txt");
59
+ assert.ok(Math.abs(19.42 - 100 * knn.test(bupa.getInstanceList()).getErrorRate()) <= 0.01);
60
+ knn.loadModel("models/knn-dermatology.txt");
61
+ assert.ok(Math.abs(3.00 - 100 * knn.test(dermatology.getInstanceList()).getErrorRate()) <= 0.01);
62
+ knn.loadModel("models/knn-car.txt");
63
+ assert.ok(Math.abs(29.98 - 100 * knn.test(car.getInstanceList()).getErrorRate()) <= 0.01);
64
+ knn.loadModel("models/knn-tictactoe.txt");
65
+ assert.ok(Math.abs(34.66 - 100 * knn.test(tictactoe.getInstanceList()).getErrorRate()) <= 0.01);
66
+ });
67
+ });
68
+ });
@@ -0,0 +1,45 @@
1
+ import * as assert from "assert";
2
+ import {AttributeType} from "../../dist/Attribute/AttributeType";
3
+ import {DataDefinition} from "../../dist/DataSet/DataDefinition";
4
+ import {DataSet} from "../../dist/DataSet/DataSet";
5
+ import {Lda} from "../../dist/Classifier/Lda";
6
+
7
+ describe('LdaTest', function() {
8
+ describe('LdaTest', function() {
9
+ let lda = new Lda()
10
+ let attributeTypes = new Array<AttributeType>();
11
+ for (let i = 0; i < 4; i++){
12
+ attributeTypes.push(AttributeType.CONTINUOUS)
13
+ }
14
+ let dataDefinition = new DataDefinition(attributeTypes)
15
+ let iris = new DataSet(dataDefinition, ",", "datasets/iris.data")
16
+ attributeTypes = new Array<AttributeType>();
17
+ for (let i = 0; i < 6; i++){
18
+ attributeTypes.push(AttributeType.CONTINUOUS)
19
+ }
20
+ dataDefinition = new DataDefinition(attributeTypes)
21
+ let bupa = new DataSet(dataDefinition, ",", "datasets/bupa.data")
22
+ attributeTypes = new Array<AttributeType>()
23
+ for (let i = 0; i < 34; i++){
24
+ attributeTypes.push(AttributeType.CONTINUOUS)
25
+ }
26
+ dataDefinition = new DataDefinition(attributeTypes)
27
+ let dermatology = new DataSet(dataDefinition, ",", "datasets/dermatology.data")
28
+ it('testTrain', function() {
29
+ lda.train(iris.getInstanceList(), null);
30
+ assert.ok(Math.abs(2.00 - 100 * lda.test(iris.getInstanceList()).getErrorRate()) <= 0.01);
31
+ lda.train(bupa.getInstanceList(), null);
32
+ assert.ok(Math.abs(29.57 - 100 * lda.test(bupa.getInstanceList()).getErrorRate()) <= 0.01);
33
+ lda.train(dermatology.getInstanceList(), null);
34
+ assert.ok(Math.abs(1.91 - 100 * lda.test(dermatology.getInstanceList()).getErrorRate()) <= 0.01);
35
+ });
36
+ it('testLoad', function() {
37
+ lda.loadModel("models/lda-iris.txt");
38
+ assert.ok(Math.abs(2.00 - 100 * lda.test(iris.getInstanceList()).getErrorRate()) <= 0.01);
39
+ lda.loadModel("models/lda-bupa.txt");
40
+ assert.ok(Math.abs(29.57 - 100 * lda.test(bupa.getInstanceList()).getErrorRate()) <= 0.01);
41
+ lda.loadModel("models/lda-dermatology.txt");
42
+ assert.ok(Math.abs(1.91 - 100 * lda.test(dermatology.getInstanceList()).getErrorRate()) <= 0.01);
43
+ });
44
+ });
45
+ });
@@ -0,0 +1,49 @@
1
+ import * as assert from "assert";
2
+ import {AttributeType} from "../../dist/Attribute/AttributeType";
3
+ import {DataDefinition} from "../../dist/DataSet/DataDefinition";
4
+ import {DataSet} from "../../dist/DataSet/DataSet";
5
+ import {LinearPerceptron} from "../../dist/Classifier/LinearPerceptron";
6
+ import {LinearPerceptronParameter} from "../../dist/Parameter/LinearPerceptronParameter";
7
+
8
+ describe('LinearPerceptronTest', function() {
9
+ describe('LinearPerceptronTest', function() {
10
+ let linearPerceptron = new LinearPerceptron()
11
+ let attributeTypes = new Array<AttributeType>();
12
+ for (let i = 0; i < 4; i++){
13
+ attributeTypes.push(AttributeType.CONTINUOUS)
14
+ }
15
+ let dataDefinition = new DataDefinition(attributeTypes)
16
+ let iris = new DataSet(dataDefinition, ",", "datasets/iris.data")
17
+ attributeTypes = new Array<AttributeType>();
18
+ for (let i = 0; i < 6; i++){
19
+ attributeTypes.push(AttributeType.CONTINUOUS)
20
+ }
21
+ dataDefinition = new DataDefinition(attributeTypes)
22
+ let bupa = new DataSet(dataDefinition, ",", "datasets/bupa.data")
23
+ attributeTypes = new Array<AttributeType>()
24
+ for (let i = 0; i < 34; i++){
25
+ attributeTypes.push(AttributeType.CONTINUOUS)
26
+ }
27
+ dataDefinition = new DataDefinition(attributeTypes)
28
+ let dermatology = new DataSet(dataDefinition, ",", "datasets/dermatology.data")
29
+ it('testTrain', function() {
30
+ let linearPerceptronParameter = new LinearPerceptronParameter(1, 0.1, 0.99, 0.2, 100)
31
+ linearPerceptron.train(iris.getInstanceList(), linearPerceptronParameter);
32
+ assert.ok(Math.abs(3.33 - 100 * linearPerceptron.test(iris.getInstanceList()).getErrorRate()) <= 0.01);
33
+ linearPerceptronParameter = new LinearPerceptronParameter(1, 0.001, 0.99, 0.2, 100)
34
+ linearPerceptron.train(bupa.getInstanceList(), linearPerceptronParameter);
35
+ assert.ok(Math.abs(33.33 - 100 * linearPerceptron.test(bupa.getInstanceList()).getErrorRate()) <= 0.01);
36
+ linearPerceptronParameter = new LinearPerceptronParameter(1, 0.1, 0.99, 0.2, 100)
37
+ linearPerceptron.train(dermatology.getInstanceList(), linearPerceptronParameter);
38
+ assert.ok(Math.abs(1.36 - 100 * linearPerceptron.test(dermatology.getInstanceList()).getErrorRate()) <= 0.01);
39
+ });
40
+ it('testLoad', function() {
41
+ linearPerceptron.loadModel("models/linearPerceptron-iris.txt");
42
+ assert.ok(Math.abs(3.33 - 100 * linearPerceptron.test(iris.getInstanceList()).getErrorRate()) <= 0.01);
43
+ linearPerceptron.loadModel("models/linearPerceptron-bupa.txt");
44
+ assert.ok(Math.abs(31.88 - 100 * linearPerceptron.test(bupa.getInstanceList()).getErrorRate()) <= 0.01);
45
+ linearPerceptron.loadModel("models/linearPerceptron-dermatology.txt");
46
+ assert.ok(Math.abs(0.82 - 100 * linearPerceptron.test(dermatology.getInstanceList()).getErrorRate()) <= 0.01);
47
+ });
48
+ });
49
+ });
@@ -0,0 +1,51 @@
1
+ import * as assert from "assert";
2
+ import {AttributeType} from "../../dist/Attribute/AttributeType";
3
+ import {DataDefinition} from "../../dist/DataSet/DataDefinition";
4
+ import {DataSet} from "../../dist/DataSet/DataSet";
5
+ import {LinearPerceptronParameter} from "../../dist/Parameter/LinearPerceptronParameter";
6
+ import {MultiLayerPerceptron} from "../../dist/Classifier/MultiLayerPerceptron";
7
+ import {MultiLayerPerceptronParameter} from "../../dist/Parameter/MultiLayerPerceptronParameter";
8
+ import {ActivationFunction} from "../../dist/Parameter/ActivationFunction";
9
+
10
+ describe('MultiLayerPerceptronTest', function() {
11
+ describe('MultiLayerPerceptronTest', function() {
12
+ let multiLayerPerceptron = new MultiLayerPerceptron()
13
+ let attributeTypes = new Array<AttributeType>();
14
+ for (let i = 0; i < 4; i++){
15
+ attributeTypes.push(AttributeType.CONTINUOUS)
16
+ }
17
+ let dataDefinition = new DataDefinition(attributeTypes)
18
+ let iris = new DataSet(dataDefinition, ",", "datasets/iris.data")
19
+ attributeTypes = new Array<AttributeType>();
20
+ for (let i = 0; i < 6; i++){
21
+ attributeTypes.push(AttributeType.CONTINUOUS)
22
+ }
23
+ dataDefinition = new DataDefinition(attributeTypes)
24
+ let bupa = new DataSet(dataDefinition, ",", "datasets/bupa.data")
25
+ attributeTypes = new Array<AttributeType>()
26
+ for (let i = 0; i < 34; i++){
27
+ attributeTypes.push(AttributeType.CONTINUOUS)
28
+ }
29
+ dataDefinition = new DataDefinition(attributeTypes)
30
+ let dermatology = new DataSet(dataDefinition, ",", "datasets/dermatology.data")
31
+ it('testTrain', function() {
32
+ let multiLayerPerceptronParameter = new MultiLayerPerceptronParameter(1, 0.1, 0.99, 0.2, 100, 3, ActivationFunction.SIGMOID)
33
+ multiLayerPerceptron.train(iris.getInstanceList(), multiLayerPerceptronParameter);
34
+ assert.ok(Math.abs(7.33 - 100 * multiLayerPerceptron.test(iris.getInstanceList()).getErrorRate()) <= 0.01);
35
+ multiLayerPerceptronParameter = new MultiLayerPerceptronParameter(1, 0.01, 0.99, 0.2, 100, 30, ActivationFunction.SIGMOID)
36
+ multiLayerPerceptron.train(bupa.getInstanceList(), multiLayerPerceptronParameter);
37
+ assert.ok(Math.abs(29.57 - 100 * multiLayerPerceptron.test(bupa.getInstanceList()).getErrorRate()) <= 0.01);
38
+ multiLayerPerceptronParameter = new MultiLayerPerceptronParameter(1, 0.01, 0.99, 0.2, 100, 20, ActivationFunction.SIGMOID)
39
+ multiLayerPerceptron.train(dermatology.getInstanceList(), multiLayerPerceptronParameter);
40
+ assert.ok(Math.abs(2.19 - 100 * multiLayerPerceptron.test(dermatology.getInstanceList()).getErrorRate()) <= 0.01);
41
+ });
42
+ it('testLoad', function() {
43
+ multiLayerPerceptron.loadModel("models/multiLayerPerceptron-iris.txt");
44
+ assert.ok(Math.abs(2.67 - 100 * multiLayerPerceptron.test(iris.getInstanceList()).getErrorRate()) <= 0.01);
45
+ multiLayerPerceptron.loadModel("models/multiLayerPerceptron-bupa.txt");
46
+ assert.ok(Math.abs(27.54 - 100 * multiLayerPerceptron.test(bupa.getInstanceList()).getErrorRate()) <= 0.01);
47
+ multiLayerPerceptron.loadModel("models/multiLayerPerceptron-dermatology.txt");
48
+ assert.ok(Math.abs(1.09 - 100 * multiLayerPerceptron.test(dermatology.getInstanceList()).getErrorRate()) <= 0.01);
49
+ });
50
+ });
51
+ });
@@ -0,0 +1,45 @@
1
+ import * as assert from "assert";
2
+ import {AttributeType} from "../../dist/Attribute/AttributeType";
3
+ import {DataDefinition} from "../../dist/DataSet/DataDefinition";
4
+ import {DataSet} from "../../dist/DataSet/DataSet";
5
+ import {NaiveBayes} from "../../dist/Classifier/NaiveBayes";
6
+
7
+ describe('NaiveBayesTest', function() {
8
+ describe('NaiveBayesTest', function() {
9
+ let naiveBayes = new NaiveBayes()
10
+ let attributeTypes = new Array<AttributeType>();
11
+ for (let i = 0; i < 4; i++){
12
+ attributeTypes.push(AttributeType.CONTINUOUS)
13
+ }
14
+ let dataDefinition = new DataDefinition(attributeTypes)
15
+ let iris = new DataSet(dataDefinition, ",", "datasets/iris.data")
16
+ attributeTypes = new Array<AttributeType>();
17
+ for (let i = 0; i < 6; i++){
18
+ attributeTypes.push(AttributeType.CONTINUOUS)
19
+ }
20
+ dataDefinition = new DataDefinition(attributeTypes)
21
+ let bupa = new DataSet(dataDefinition, ",", "datasets/bupa.data")
22
+ attributeTypes = new Array<AttributeType>()
23
+ for (let i = 0; i < 34; i++){
24
+ attributeTypes.push(AttributeType.CONTINUOUS)
25
+ }
26
+ dataDefinition = new DataDefinition(attributeTypes)
27
+ let dermatology = new DataSet(dataDefinition, ",", "datasets/dermatology.data")
28
+ it('testTrain', function() {
29
+ naiveBayes.train(iris.getInstanceList(), null);
30
+ assert.ok(Math.abs(5.33 - 100 * naiveBayes.test(iris.getInstanceList()).getErrorRate()) <= 0.01);
31
+ naiveBayes.train(bupa.getInstanceList(), null);
32
+ assert.ok(Math.abs(38.55 - 100 * naiveBayes.test(bupa.getInstanceList()).getErrorRate()) <= 0.01);
33
+ naiveBayes.train(dermatology.getInstanceList(), null);
34
+ assert.ok(Math.abs(9.56 - 100 * naiveBayes.test(dermatology.getInstanceList()).getErrorRate()) <= 0.01);
35
+ });
36
+ it('testLoad', function() {
37
+ naiveBayes.loadModel("models/naiveBayes-iris.txt");
38
+ assert.ok(Math.abs(5.33 - 100 * naiveBayes.test(iris.getInstanceList()).getErrorRate()) <= 0.01);
39
+ naiveBayes.loadModel("models/naiveBayes-bupa.txt");
40
+ assert.ok(Math.abs(38.55 - 100 * naiveBayes.test(bupa.getInstanceList()).getErrorRate()) <= 0.01);
41
+ naiveBayes.loadModel("models/naiveBayes-dermatology.txt");
42
+ assert.ok(Math.abs(9.56 - 100 * naiveBayes.test(dermatology.getInstanceList()).getErrorRate()) <= 0.01);
43
+ });
44
+ });
45
+ });
@@ -0,0 +1,35 @@
1
+ import * as assert from "assert";
2
+ import {AttributeType} from "../../dist/Attribute/AttributeType";
3
+ import {DataDefinition} from "../../dist/DataSet/DataDefinition";
4
+ import {DataSet} from "../../dist/DataSet/DataSet";
5
+ import {Qda} from "../../dist/Classifier/Qda";
6
+
7
+ describe('QdaTest', function() {
8
+ describe('QdaTest', function() {
9
+ let qda = new Qda()
10
+ let attributeTypes = new Array<AttributeType>();
11
+ for (let i = 0; i < 4; i++){
12
+ attributeTypes.push(AttributeType.CONTINUOUS)
13
+ }
14
+ let dataDefinition = new DataDefinition(attributeTypes)
15
+ let iris = new DataSet(dataDefinition, ",", "datasets/iris.data")
16
+ attributeTypes = new Array<AttributeType>();
17
+ for (let i = 0; i < 6; i++){
18
+ attributeTypes.push(AttributeType.CONTINUOUS)
19
+ }
20
+ dataDefinition = new DataDefinition(attributeTypes)
21
+ let bupa = new DataSet(dataDefinition, ",", "datasets/bupa.data")
22
+ it('testTrain', function() {
23
+ qda.train(iris.getInstanceList(), null);
24
+ assert.ok(Math.abs(2.00 - 100 * qda.test(iris.getInstanceList()).getErrorRate()) <= 0.01);
25
+ qda.train(bupa.getInstanceList(), null);
26
+ assert.ok(Math.abs(36.52 - 100 * qda.test(bupa.getInstanceList()).getErrorRate()) <= 0.01);
27
+ });
28
+ it('testLoad', function() {
29
+ qda.loadModel("models/qda-iris.txt");
30
+ assert.ok(Math.abs(2.00 - 100 * qda.test(iris.getInstanceList()).getErrorRate()) <= 0.01);
31
+ qda.loadModel("models/qda-bupa.txt");
32
+ assert.ok(Math.abs(36.52 - 100 * qda.test(bupa.getInstanceList()).getErrorRate()) <= 0.01);
33
+ });
34
+ });
35
+ });