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.
- package/dist/Classifier/Bagging.d.ts +1 -0
- package/dist/Classifier/Bagging.js +3 -0
- package/dist/Classifier/Bagging.js.map +1 -1
- package/dist/Classifier/C45.d.ts +1 -0
- package/dist/Classifier/C45.js +3 -0
- package/dist/Classifier/C45.js.map +1 -1
- package/dist/Classifier/C45Stump.d.ts +1 -0
- package/dist/Classifier/C45Stump.js +3 -0
- package/dist/Classifier/C45Stump.js.map +1 -1
- package/dist/Classifier/Classifier.d.ts +1 -0
- package/dist/Classifier/Classifier.js.map +1 -1
- package/dist/Classifier/DeepNetwork.d.ts +1 -0
- package/dist/Classifier/DeepNetwork.js +3 -0
- package/dist/Classifier/DeepNetwork.js.map +1 -1
- package/dist/Classifier/Dummy.d.ts +1 -0
- package/dist/Classifier/Dummy.js +3 -0
- package/dist/Classifier/Dummy.js.map +1 -1
- package/dist/Classifier/KMeans.d.ts +1 -0
- package/dist/Classifier/KMeans.js +3 -0
- package/dist/Classifier/KMeans.js.map +1 -1
- package/dist/Classifier/Knn.d.ts +1 -0
- package/dist/Classifier/Knn.js +3 -0
- package/dist/Classifier/Knn.js.map +1 -1
- package/dist/Classifier/Lda.d.ts +1 -0
- package/dist/Classifier/Lda.js +3 -0
- package/dist/Classifier/Lda.js.map +1 -1
- package/dist/Classifier/LinearPerceptron.d.ts +1 -0
- package/dist/Classifier/LinearPerceptron.js +3 -0
- package/dist/Classifier/LinearPerceptron.js.map +1 -1
- package/dist/Classifier/MultiLayerPerceptron.d.ts +1 -0
- package/dist/Classifier/MultiLayerPerceptron.js +3 -0
- package/dist/Classifier/MultiLayerPerceptron.js.map +1 -1
- package/dist/Classifier/NaiveBayes.d.ts +1 -0
- package/dist/Classifier/NaiveBayes.js +3 -0
- package/dist/Classifier/NaiveBayes.js.map +1 -1
- package/dist/Classifier/Qda.d.ts +1 -0
- package/dist/Classifier/Qda.js +3 -0
- package/dist/Classifier/Qda.js.map +1 -1
- package/dist/Classifier/RandomClassifier.d.ts +1 -0
- package/dist/Classifier/RandomClassifier.js +3 -0
- package/dist/Classifier/RandomClassifier.js.map +1 -1
- package/dist/Classifier/RandomForest.d.ts +1 -0
- package/dist/Classifier/RandomForest.js +3 -0
- package/dist/Classifier/RandomForest.js.map +1 -1
- package/dist/DataSet/DataDefinition.d.ts +5 -1
- package/dist/DataSet/DataDefinition.js +16 -1
- package/dist/DataSet/DataDefinition.js.map +1 -1
- package/dist/DataSet/DataSet.js +1 -1
- package/dist/DataSet/DataSet.js.map +1 -1
- package/dist/InstanceList/InstanceList.js +3 -0
- package/dist/InstanceList/InstanceList.js.map +1 -1
- package/dist/Model/DecisionTree/DecisionNode.d.ts +6 -3
- package/dist/Model/DecisionTree/DecisionNode.js +48 -3
- package/dist/Model/DecisionTree/DecisionNode.js.map +1 -1
- package/dist/Model/DecisionTree/DecisionTree.d.ts +4 -3
- package/dist/Model/DecisionTree/DecisionTree.js +14 -4
- package/dist/Model/DecisionTree/DecisionTree.js.map +1 -1
- package/dist/Model/DeepNetworkModel.d.ts +6 -3
- package/dist/Model/DeepNetworkModel.js +53 -30
- package/dist/Model/DeepNetworkModel.js.map +1 -1
- package/dist/Model/DummyModel.d.ts +2 -1
- package/dist/Model/DummyModel.js +22 -2
- package/dist/Model/DummyModel.js.map +1 -1
- package/dist/Model/GaussianModel.d.ts +4 -0
- package/dist/Model/GaussianModel.js +28 -1
- package/dist/Model/GaussianModel.js.map +1 -1
- package/dist/Model/KMeansModel.d.ts +3 -2
- package/dist/Model/KMeansModel.js +19 -6
- package/dist/Model/KMeansModel.js.map +1 -1
- package/dist/Model/KnnModel.d.ts +3 -2
- package/dist/Model/KnnModel.js +18 -6
- package/dist/Model/KnnModel.js.map +1 -1
- package/dist/Model/LdaModel.d.ts +5 -2
- package/dist/Model/LdaModel.js +28 -6
- package/dist/Model/LdaModel.js.map +1 -1
- package/dist/Model/LinearPerceptronModel.d.ts +5 -2
- package/dist/Model/LinearPerceptronModel.js +38 -10
- package/dist/Model/LinearPerceptronModel.js.map +1 -1
- package/dist/Model/Model.d.ts +7 -0
- package/dist/Model/Model.js +40 -1
- package/dist/Model/Model.js.map +1 -1
- package/dist/Model/MultiLayerPerceptronModel.d.ts +5 -2
- package/dist/Model/MultiLayerPerceptronModel.js +33 -13
- package/dist/Model/MultiLayerPerceptronModel.js.map +1 -1
- package/dist/Model/NaiveBayesModel.d.ts +2 -1
- package/dist/Model/NaiveBayesModel.js +18 -6
- package/dist/Model/NaiveBayesModel.js.map +1 -1
- package/dist/Model/NeuralNetworkModel.d.ts +4 -1
- package/dist/Model/NeuralNetworkModel.js +27 -6
- package/dist/Model/NeuralNetworkModel.js.map +1 -1
- package/dist/Model/QdaModel.d.ts +3 -2
- package/dist/Model/QdaModel.js +23 -5
- package/dist/Model/QdaModel.js.map +1 -1
- package/dist/Model/RandomModel.d.ts +4 -2
- package/dist/Model/RandomModel.js +20 -4
- package/dist/Model/RandomModel.js.map +1 -1
- package/dist/Model/TreeEnsembleModel.d.ts +3 -2
- package/dist/Model/TreeEnsembleModel.js +19 -4
- package/dist/Model/TreeEnsembleModel.js.map +1 -1
- package/models/bagging-bupa.txt +25666 -0
- package/models/bagging-car.txt +78923 -0
- package/models/bagging-dermatology.txt +7276 -0
- package/models/bagging-iris.txt +3131 -0
- package/models/bagging-tictactoe.txt +61186 -0
- package/models/c45-bupa.txt +3 -0
- package/models/c45-car.txt +331 -0
- package/models/c45-carIndexed.txt +188 -0
- package/models/c45-dermatology.txt +43 -0
- package/models/c45-iris.txt +13 -0
- package/models/c45-tictactoe.txt +270 -0
- package/models/c45-tictactoeIndexed.txt +173 -0
- package/models/c45stump-bupa.txt +8 -0
- package/models/c45stump-car.txt +11 -0
- package/models/c45stump-chess.txt +8 -0
- package/models/c45stump-dermatology.txt +8 -0
- package/models/c45stump-iris.txt +8 -0
- package/models/c45stump-nursery.txt +11 -0
- package/models/c45stump-tictactoe.txt +11 -0
- package/models/deepNetwork-bupa.txt +40 -0
- package/models/deepNetwork-dermatology.txt +37 -0
- package/models/deepNetwork-iris.txt +22 -0
- package/models/dummy-bupa.txt +3 -0
- package/models/dummy-car.txt +5 -0
- package/models/dummy-chess.txt +19 -0
- package/models/dummy-dermatology.txt +7 -0
- package/models/dummy-iris.txt +4 -0
- package/models/dummy-nursery.txt +6 -0
- package/models/dummy-tictactoe.txt +3 -0
- package/models/kMeans-bupa.txt +7 -0
- package/models/kMeans-car.txt +11 -0
- package/models/kMeans-chess.txt +39 -0
- package/models/kMeans-dermatology.txt +15 -0
- package/models/kMeans-iris.txt +9 -0
- package/models/kMeans-nursery.txt +13 -0
- package/models/kMeans-tictactoe.txt +7 -0
- package/models/knn-bupa.txt +348 -0
- package/models/knn-car.txt +1731 -0
- package/models/knn-dermatology.txt +369 -0
- package/models/knn-iris.txt +153 -0
- package/models/knn-tictactoe.txt +961 -0
- package/models/lda-bupa.txt +7 -0
- package/models/lda-dermatology.txt +19 -0
- package/models/lda-iris.txt +10 -0
- package/models/linearPerceptron-bupa.txt +6 -0
- package/models/linearPerceptron-dermatology.txt +14 -0
- package/models/linearPerceptron-iris.txt +8 -0
- package/models/multiLayerPerceptron-bupa.txt +38 -0
- package/models/multiLayerPerceptron-dermatology.txt +36 -0
- package/models/multiLayerPerceptron-iris.txt +13 -0
- package/models/naiveBayes-bupa.txt +7 -0
- package/models/naiveBayes-dermatology.txt +19 -0
- package/models/naiveBayes-iris.txt +10 -0
- package/models/qda-bupa.txt +23 -0
- package/models/qda-iris.txt +28 -0
- package/models/random-bupa.txt +4 -0
- package/models/random-car.txt +6 -0
- package/models/random-chess.txt +20 -0
- package/models/random-dermatology.txt +8 -0
- package/models/random-iris.txt +5 -0
- package/models/random-nursery.txt +7 -0
- package/models/random-tictactoe.txt +4 -0
- package/models/randomforest-bupa.txt +25666 -0
- package/models/randomforest-car.txt +78923 -0
- package/models/randomforest-carIndexed.txt +38786 -0
- package/models/randomforest-dermatology.txt +7276 -0
- package/models/randomforest-iris.txt +3131 -0
- package/models/randomforest-tictactoe.txt +61186 -0
- package/package.json +3 -3
- package/source/Classifier/Bagging.ts +3 -0
- package/source/Classifier/C45.ts +4 -0
- package/source/Classifier/C45Stump.ts +4 -0
- package/source/Classifier/Classifier.ts +1 -0
- package/source/Classifier/DeepNetwork.ts +4 -0
- package/source/Classifier/Dummy.ts +4 -0
- package/source/Classifier/KMeans.ts +4 -0
- package/source/Classifier/Knn.ts +5 -1
- package/source/Classifier/Lda.ts +4 -0
- package/source/Classifier/LinearPerceptron.ts +4 -0
- package/source/Classifier/MultiLayerPerceptron.ts +4 -0
- package/source/Classifier/NaiveBayes.ts +4 -0
- package/source/Classifier/Qda.ts +4 -0
- package/source/Classifier/RandomClassifier.ts +4 -0
- package/source/Classifier/RandomForest.ts +4 -0
- package/source/DataSet/DataDefinition.ts +19 -1
- package/source/DataSet/DataSet.ts +1 -1
- package/source/InstanceList/InstanceList.ts +5 -0
- package/source/Model/DecisionTree/DecisionNode.ts +69 -29
- package/source/Model/DecisionTree/DecisionTree.ts +14 -4
- package/source/Model/DeepNetworkModel.ts +40 -16
- package/source/Model/DummyModel.ts +20 -2
- package/source/Model/GaussianModel.ts +29 -0
- package/source/Model/KMeansModel.ts +18 -6
- package/source/Model/KnnModel.ts +19 -6
- package/source/Model/LdaModel.ts +29 -6
- package/source/Model/LinearPerceptronModel.ts +52 -25
- package/source/Model/Model.ts +43 -0
- package/source/Model/MultiLayerPerceptronModel.ts +34 -12
- package/source/Model/NaiveBayesModel.ts +19 -7
- package/source/Model/NeuralNetworkModel.ts +31 -7
- package/source/Model/QdaModel.ts +22 -4
- package/source/Model/RandomModel.ts +21 -4
- package/source/Model/TreeEnsembleModel.ts +17 -3
- package/tests/Classifier/C45Test.ts +98 -0
- package/tests/Classifier/DeepNetworkTest.ts +52 -0
- package/tests/Classifier/DummyTest.ts +89 -0
- package/tests/Classifier/KMeansTest.ts +89 -0
- package/tests/Classifier/KnnTest.ts +68 -0
- package/tests/Classifier/LdaTest.ts +45 -0
- package/tests/Classifier/LinearPerceptronTest.ts +49 -0
- package/tests/Classifier/MultiLayerPerceptronTest.ts +51 -0
- package/tests/Classifier/NaiveBayesTest.ts +45 -0
- package/tests/Classifier/QdaTest.ts +35 -0
- package/tests/Classifier/RandomForestTest.ts +85 -0
|
@@ -4,26 +4,37 @@
|
|
|
4
4
|
if (v !== undefined) module.exports = v;
|
|
5
5
|
}
|
|
6
6
|
else if (typeof define === "function" && define.amd) {
|
|
7
|
-
define(["require", "exports", "./GaussianModel"], factory);
|
|
7
|
+
define(["require", "exports", "./GaussianModel", "nlptoolkit-math/dist/DiscreteDistribution", "nlptoolkit-util/dist/FileContents", "../DistanceMetric/EuclidianDistance"], factory);
|
|
8
8
|
}
|
|
9
9
|
})(function (require, exports) {
|
|
10
10
|
"use strict";
|
|
11
11
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
12
|
exports.KMeansModel = void 0;
|
|
13
13
|
const GaussianModel_1 = require("./GaussianModel");
|
|
14
|
+
const DiscreteDistribution_1 = require("nlptoolkit-math/dist/DiscreteDistribution");
|
|
15
|
+
const FileContents_1 = require("nlptoolkit-util/dist/FileContents");
|
|
16
|
+
const EuclidianDistance_1 = require("../DistanceMetric/EuclidianDistance");
|
|
14
17
|
class KMeansModel extends GaussianModel_1.GaussianModel {
|
|
15
18
|
/**
|
|
16
19
|
* The constructor that sets the classMeans, priorDistribution and distanceMetric according to given inputs.
|
|
17
20
|
*
|
|
18
|
-
* @param
|
|
21
|
+
* @param priorDistributionOrFileName {@link DiscreteDistribution} input.
|
|
19
22
|
* @param classMeans {@link InstanceList} of class means.
|
|
20
23
|
* @param distanceMetric {@link DistanceMetric} input.
|
|
21
24
|
*/
|
|
22
|
-
constructor(
|
|
25
|
+
constructor(priorDistributionOrFileName, classMeans, distanceMetric) {
|
|
23
26
|
super();
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
+
if (priorDistributionOrFileName instanceof DiscreteDistribution_1.DiscreteDistribution) {
|
|
28
|
+
this.classMeans = classMeans;
|
|
29
|
+
this.priorDistribution = priorDistributionOrFileName;
|
|
30
|
+
this.distanceMetric = distanceMetric;
|
|
31
|
+
}
|
|
32
|
+
else {
|
|
33
|
+
this.distanceMetric = new EuclidianDistance_1.EuclidianDistance();
|
|
34
|
+
let input = new FileContents_1.FileContents(priorDistributionOrFileName);
|
|
35
|
+
this.loadPriorDistribution(input);
|
|
36
|
+
this.classMeans = this.loadInstanceList(input);
|
|
37
|
+
}
|
|
27
38
|
}
|
|
28
39
|
/**
|
|
29
40
|
* The calculateMetric method takes an {@link Instance} and a String as inputs. It loops through the class means, if
|
|
@@ -42,6 +53,8 @@
|
|
|
42
53
|
}
|
|
43
54
|
return Number.NEGATIVE_INFINITY;
|
|
44
55
|
}
|
|
56
|
+
saveTxt(fileName) {
|
|
57
|
+
}
|
|
45
58
|
}
|
|
46
59
|
exports.KMeansModel = KMeansModel;
|
|
47
60
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"KMeansModel.js","sourceRoot":"","sources":["../../source/Model/KMeansModel.ts"],"names":[],"mappings":";;;;;;;;;;;;IAAA,mDAA8C;
|
|
1
|
+
{"version":3,"file":"KMeansModel.js","sourceRoot":"","sources":["../../source/Model/KMeansModel.ts"],"names":[],"mappings":";;;;;;;;;;;;IAAA,mDAA8C;IAI9C,oFAA+E;IAC/E,oEAA+D;IAC/D,2EAAsE;IAEtE,MAAa,WAAY,SAAQ,6BAAa;QAK1C;;;;;;WAMG;QACH,YAAY,2BAA0D,EAAE,UAAyB,EAAE,cAA+B;YAC9H,KAAK,EAAE,CAAA;YACP,IAAI,2BAA2B,YAAY,2CAAoB,EAAC;gBAC5D,IAAI,CAAC,UAAU,GAAG,UAAU,CAAA;gBAC5B,IAAI,CAAC,iBAAiB,GAAG,2BAA2B,CAAA;gBACpD,IAAI,CAAC,cAAc,GAAG,cAAc,CAAA;aACvC;iBAAM;gBACH,IAAI,CAAC,cAAc,GAAG,IAAI,qCAAiB,EAAE,CAAA;gBAC7C,IAAI,KAAK,GAAG,IAAI,2BAAY,CAAC,2BAA2B,CAAC,CAAA;gBACzD,IAAI,CAAC,qBAAqB,CAAC,KAAK,CAAC,CAAA;gBACjC,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAA;aACjD;QACL,CAAC;QAED;;;;;;;;WAQG;QACH,eAAe,CAAC,QAAkB,EAAE,EAAU;YAC1C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,EAAE,CAAC,EAAE,EAAE;gBAC7C,IAAI,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,aAAa,EAAE,IAAI,EAAE,EAAE;oBAC9C,OAAO,CAAC,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,QAAQ,EAAE,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;iBAC1E;aACJ;YACD,OAAO,MAAM,CAAC,iBAAiB,CAAC;QACpC,CAAC;QAED,OAAO,CAAC,QAAgB;QACxB,CAAC;KAEJ;IA/CD,kCA+CC"}
|
package/dist/Model/KnnModel.d.ts
CHANGED
|
@@ -9,11 +9,11 @@ export declare class KnnModel extends Model {
|
|
|
9
9
|
/**
|
|
10
10
|
* Constructor that sets the data {@link InstanceList}, k value and the {@link DistanceMetric}.
|
|
11
11
|
*
|
|
12
|
-
* @param
|
|
12
|
+
* @param dataOrFileName {@link InstanceList} input.
|
|
13
13
|
* @param k K value.
|
|
14
14
|
* @param distanceMetric {@link DistanceMetric} input.
|
|
15
15
|
*/
|
|
16
|
-
constructor(
|
|
16
|
+
constructor(dataOrFileName: InstanceList | string, k?: number, distanceMetric?: DistanceMetric);
|
|
17
17
|
/**
|
|
18
18
|
* The predict method takes an {@link Instance} as an input and finds the nearest neighbors of given instance. Then
|
|
19
19
|
* it returns the first possible class label as the predicted class.
|
|
@@ -33,4 +33,5 @@ export declare class KnnModel extends Model {
|
|
|
33
33
|
* @return The first k instances which are nearest to the given instance as an {@link InstanceList}.
|
|
34
34
|
*/
|
|
35
35
|
nearestNeighbors(instance: Instance): InstanceList;
|
|
36
|
+
saveTxt(fileName: string): void;
|
|
36
37
|
}
|
package/dist/Model/KnnModel.js
CHANGED
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
if (v !== undefined) module.exports = v;
|
|
5
5
|
}
|
|
6
6
|
else if (typeof define === "function" && define.amd) {
|
|
7
|
-
define(["require", "exports", "./Model", "../InstanceList/InstanceList", "../Instance/CompositeInstance", "./KnnInstance"], factory);
|
|
7
|
+
define(["require", "exports", "./Model", "../InstanceList/InstanceList", "../Instance/CompositeInstance", "./KnnInstance", "../DistanceMetric/EuclidianDistance", "nlptoolkit-util/dist/FileContents"], factory);
|
|
8
8
|
}
|
|
9
9
|
})(function (require, exports) {
|
|
10
10
|
"use strict";
|
|
@@ -14,19 +14,29 @@
|
|
|
14
14
|
const InstanceList_1 = require("../InstanceList/InstanceList");
|
|
15
15
|
const CompositeInstance_1 = require("../Instance/CompositeInstance");
|
|
16
16
|
const KnnInstance_1 = require("./KnnInstance");
|
|
17
|
+
const EuclidianDistance_1 = require("../DistanceMetric/EuclidianDistance");
|
|
18
|
+
const FileContents_1 = require("nlptoolkit-util/dist/FileContents");
|
|
17
19
|
class KnnModel extends Model_1.Model {
|
|
18
20
|
/**
|
|
19
21
|
* Constructor that sets the data {@link InstanceList}, k value and the {@link DistanceMetric}.
|
|
20
22
|
*
|
|
21
|
-
* @param
|
|
23
|
+
* @param dataOrFileName {@link InstanceList} input.
|
|
22
24
|
* @param k K value.
|
|
23
25
|
* @param distanceMetric {@link DistanceMetric} input.
|
|
24
26
|
*/
|
|
25
|
-
constructor(
|
|
27
|
+
constructor(dataOrFileName, k, distanceMetric) {
|
|
26
28
|
super();
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
29
|
+
if (dataOrFileName instanceof InstanceList_1.InstanceList) {
|
|
30
|
+
this.data = dataOrFileName;
|
|
31
|
+
this.k = k;
|
|
32
|
+
this.distanceMetric = distanceMetric;
|
|
33
|
+
}
|
|
34
|
+
else {
|
|
35
|
+
this.distanceMetric = new EuclidianDistance_1.EuclidianDistance();
|
|
36
|
+
let input = new FileContents_1.FileContents(dataOrFileName);
|
|
37
|
+
this.k = parseInt(input.readLine());
|
|
38
|
+
this.data = this.loadInstanceList(input);
|
|
39
|
+
}
|
|
30
40
|
}
|
|
31
41
|
/**
|
|
32
42
|
* The predict method takes an {@link Instance} as an input and finds the nearest neighbors of given instance. Then
|
|
@@ -77,6 +87,8 @@
|
|
|
77
87
|
}
|
|
78
88
|
return result;
|
|
79
89
|
}
|
|
90
|
+
saveTxt(fileName) {
|
|
91
|
+
}
|
|
80
92
|
}
|
|
81
93
|
exports.KnnModel = KnnModel;
|
|
82
94
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"KnnModel.js","sourceRoot":"","sources":["../../source/Model/KnnModel.ts"],"names":[],"mappings":";;;;;;;;;;;;IAAA,mCAA8B;IAC9B,+DAA0D;IAG1D,qEAAgE;IAChE,+CAA0C;
|
|
1
|
+
{"version":3,"file":"KnnModel.js","sourceRoot":"","sources":["../../source/Model/KnnModel.ts"],"names":[],"mappings":"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"}
|
package/dist/Model/LdaModel.d.ts
CHANGED
|
@@ -2,17 +2,18 @@ import { GaussianModel } from "./GaussianModel";
|
|
|
2
2
|
import { Vector } from "nlptoolkit-math/dist/Vector";
|
|
3
3
|
import { DiscreteDistribution } from "nlptoolkit-math/dist/DiscreteDistribution";
|
|
4
4
|
import { Instance } from "../Instance/Instance";
|
|
5
|
+
import { FileContents } from "nlptoolkit-util/dist/FileContents";
|
|
5
6
|
export declare class LdaModel extends GaussianModel {
|
|
6
7
|
protected w0: Map<string, number>;
|
|
7
8
|
protected w: Map<string, Vector>;
|
|
8
9
|
/**
|
|
9
10
|
* A constructor which sets the priorDistribution, w and w0 according to given inputs.
|
|
10
11
|
*
|
|
11
|
-
* @param
|
|
12
|
+
* @param priorDistributionOrFileName {@link DiscreteDistribution} input.
|
|
12
13
|
* @param w {@link HashMap} of String and Vectors.
|
|
13
14
|
* @param w0 {@link HashMap} of String and Double.
|
|
14
15
|
*/
|
|
15
|
-
constructor(
|
|
16
|
+
constructor(priorDistributionOrFileName?: DiscreteDistribution | string, w?: Map<string, Vector>, w0?: Map<string, number>);
|
|
16
17
|
/**
|
|
17
18
|
* The calculateMetric method takes an {@link Instance} and a String as inputs. It returns the dot product of given Instance
|
|
18
19
|
* and wi plus w0i.
|
|
@@ -22,4 +23,6 @@ export declare class LdaModel extends GaussianModel {
|
|
|
22
23
|
* @return The dot product of given Instance and wi plus w0i.
|
|
23
24
|
*/
|
|
24
25
|
calculateMetric(instance: Instance, Ci: string): number;
|
|
26
|
+
loadWandW0(input: FileContents, size: number): void;
|
|
27
|
+
saveTxt(fileName: string): void;
|
|
25
28
|
}
|
package/dist/Model/LdaModel.js
CHANGED
|
@@ -4,26 +4,37 @@
|
|
|
4
4
|
if (v !== undefined) module.exports = v;
|
|
5
5
|
}
|
|
6
6
|
else if (typeof define === "function" && define.amd) {
|
|
7
|
-
define(["require", "exports", "./GaussianModel"], factory);
|
|
7
|
+
define(["require", "exports", "./GaussianModel", "nlptoolkit-math/dist/DiscreteDistribution", "nlptoolkit-util/dist/FileContents"], factory);
|
|
8
8
|
}
|
|
9
9
|
})(function (require, exports) {
|
|
10
10
|
"use strict";
|
|
11
11
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
12
|
exports.LdaModel = void 0;
|
|
13
13
|
const GaussianModel_1 = require("./GaussianModel");
|
|
14
|
+
const DiscreteDistribution_1 = require("nlptoolkit-math/dist/DiscreteDistribution");
|
|
15
|
+
const FileContents_1 = require("nlptoolkit-util/dist/FileContents");
|
|
14
16
|
class LdaModel extends GaussianModel_1.GaussianModel {
|
|
15
17
|
/**
|
|
16
18
|
* A constructor which sets the priorDistribution, w and w0 according to given inputs.
|
|
17
19
|
*
|
|
18
|
-
* @param
|
|
20
|
+
* @param priorDistributionOrFileName {@link DiscreteDistribution} input.
|
|
19
21
|
* @param w {@link HashMap} of String and Vectors.
|
|
20
22
|
* @param w0 {@link HashMap} of String and Double.
|
|
21
23
|
*/
|
|
22
|
-
constructor(
|
|
24
|
+
constructor(priorDistributionOrFileName, w, w0) {
|
|
23
25
|
super();
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
26
|
+
if (priorDistributionOrFileName instanceof DiscreteDistribution_1.DiscreteDistribution) {
|
|
27
|
+
this.priorDistribution = priorDistributionOrFileName;
|
|
28
|
+
this.w = w;
|
|
29
|
+
this.w0 = w0;
|
|
30
|
+
}
|
|
31
|
+
else {
|
|
32
|
+
if (priorDistributionOrFileName != undefined) {
|
|
33
|
+
let input = new FileContents_1.FileContents(priorDistributionOrFileName);
|
|
34
|
+
let size = this.loadPriorDistribution(input);
|
|
35
|
+
this.loadWandW0(input, size);
|
|
36
|
+
}
|
|
37
|
+
}
|
|
27
38
|
}
|
|
28
39
|
/**
|
|
29
40
|
* The calculateMetric method takes an {@link Instance} and a String as inputs. It returns the dot product of given Instance
|
|
@@ -39,6 +50,17 @@
|
|
|
39
50
|
let w0i = this.w0.get(Ci);
|
|
40
51
|
return wi.dotProduct(xi) + w0i;
|
|
41
52
|
}
|
|
53
|
+
loadWandW0(input, size) {
|
|
54
|
+
this.w0 = new Map();
|
|
55
|
+
for (let i = 0; i < size; i++) {
|
|
56
|
+
let line = input.readLine();
|
|
57
|
+
let items = line.split(" ");
|
|
58
|
+
this.w0.set(items[0], parseFloat(items[1]));
|
|
59
|
+
}
|
|
60
|
+
this.w = this.loadVectors(input, size);
|
|
61
|
+
}
|
|
62
|
+
saveTxt(fileName) {
|
|
63
|
+
}
|
|
42
64
|
}
|
|
43
65
|
exports.LdaModel = LdaModel;
|
|
44
66
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"LdaModel.js","sourceRoot":"","sources":["../../source/Model/LdaModel.ts"],"names":[],"mappings":";;;;;;;;;;;;IAAA,mDAA8C;
|
|
1
|
+
{"version":3,"file":"LdaModel.js","sourceRoot":"","sources":["../../source/Model/LdaModel.ts"],"names":[],"mappings":";;;;;;;;;;;;IAAA,mDAA8C;IAE9C,oFAA+E;IAE/E,oEAA+D;IAE/D,MAAa,QAAS,SAAQ,6BAAa;QAKvC;;;;;;WAMG;QACH,YAAY,2BAA2D,EAAE,CAAuB,EAAE,EAAwB;YACtH,KAAK,EAAE,CAAA;YACP,IAAI,2BAA2B,YAAY,2CAAoB,EAAC;gBAC5D,IAAI,CAAC,iBAAiB,GAAG,2BAA2B,CAAA;gBACpD,IAAI,CAAC,CAAC,GAAG,CAAC,CAAA;gBACV,IAAI,CAAC,EAAE,GAAG,EAAE,CAAA;aACf;iBAAM;gBACH,IAAI,2BAA2B,IAAI,SAAS,EAAC;oBACzC,IAAI,KAAK,GAAG,IAAI,2BAAY,CAAC,2BAA2B,CAAC,CAAA;oBACzD,IAAI,IAAI,GAAG,IAAI,CAAC,qBAAqB,CAAC,KAAK,CAAC,CAAA;oBAC5C,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,IAAI,CAAC,CAAA;iBAC/B;aACJ;QACL,CAAC;QAED;;;;;;;WAOG;QACH,eAAe,CAAC,QAAkB,EAAE,EAAU;YAC1C,IAAI,EAAE,GAAG,QAAQ,CAAC,QAAQ,EAAE,CAAC;YAC7B,IAAI,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YACxB,IAAI,GAAG,GAAG,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YAC1B,OAAO,EAAE,CAAC,UAAU,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC;QACnC,CAAC;QAED,UAAU,CAAC,KAAmB,EAAE,IAAY;YACxC,IAAI,CAAC,EAAE,GAAG,IAAI,GAAG,EAAkB,CAAA;YACnC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,EAAE,CAAC,EAAE,EAAC;gBAC1B,IAAI,IAAI,GAAG,KAAK,CAAC,QAAQ,EAAE,CAAA;gBAC3B,IAAI,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;gBAC3B,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;aAC9C;YACD,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,IAAI,CAAC,CAAA;QAC1C,CAAC;QAED,OAAO,CAAC,QAAgB;QACxB,CAAC;KAEJ;IAvDD,4BAuDC"}
|
|
@@ -4,18 +4,21 @@ import { InstanceList } from "../InstanceList/InstanceList";
|
|
|
4
4
|
import { LinearPerceptronParameter } from "../Parameter/LinearPerceptronParameter";
|
|
5
5
|
export declare class LinearPerceptronModel extends NeuralNetworkModel {
|
|
6
6
|
protected W: Matrix;
|
|
7
|
+
constructor1(trainSet: InstanceList, validationSet?: InstanceList, parameters?: LinearPerceptronParameter): void;
|
|
8
|
+
constructor2(fileName: string): void;
|
|
7
9
|
/**
|
|
8
10
|
* Constructor that takes {@link InstanceList}s as trainsSet and validationSet. Initially it allocates layer weights,
|
|
9
11
|
* then creates an input vector by using given trainSet and finds error. Via the validationSet it finds the classification
|
|
10
12
|
* performance and at the end it reassigns the allocated weight Matrix with the matrix that has the best accuracy.
|
|
11
13
|
*
|
|
12
|
-
* @param
|
|
14
|
+
* @param trainSetOrFileName InstanceList that is used to train.
|
|
13
15
|
* @param validationSet InstanceList that is used to validate.
|
|
14
16
|
* @param parameters Linear perceptron parameters; learningRate, etaDecrease, crossValidationRatio, epoch.
|
|
15
17
|
*/
|
|
16
|
-
constructor(
|
|
18
|
+
constructor(trainSetOrFileName?: InstanceList | string, validationSet?: InstanceList, parameters?: LinearPerceptronParameter);
|
|
17
19
|
/**
|
|
18
20
|
* The calculateOutput method calculates the {@link Matrix} y by multiplying Matrix W with {@link Vector} x.
|
|
19
21
|
*/
|
|
20
22
|
protected calculateOutput(): void;
|
|
23
|
+
saveTxt(fileName: string): void;
|
|
21
24
|
}
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
if (v !== undefined) module.exports = v;
|
|
5
5
|
}
|
|
6
6
|
else if (typeof define === "function" && define.amd) {
|
|
7
|
-
define(["require", "exports", "./NeuralNetworkModel", "nlptoolkit-math/dist/Matrix", "../Performance/ClassificationPerformance", "nlptoolkit-util/dist/Random"], factory);
|
|
7
|
+
define(["require", "exports", "./NeuralNetworkModel", "nlptoolkit-math/dist/Matrix", "../InstanceList/InstanceList", "../Performance/ClassificationPerformance", "nlptoolkit-util/dist/Random", "nlptoolkit-util/dist/FileContents"], factory);
|
|
8
8
|
}
|
|
9
9
|
})(function (require, exports) {
|
|
10
10
|
"use strict";
|
|
@@ -12,23 +12,44 @@
|
|
|
12
12
|
exports.LinearPerceptronModel = void 0;
|
|
13
13
|
const NeuralNetworkModel_1 = require("./NeuralNetworkModel");
|
|
14
14
|
const Matrix_1 = require("nlptoolkit-math/dist/Matrix");
|
|
15
|
+
const InstanceList_1 = require("../InstanceList/InstanceList");
|
|
15
16
|
const ClassificationPerformance_1 = require("../Performance/ClassificationPerformance");
|
|
16
17
|
const Random_1 = require("nlptoolkit-util/dist/Random");
|
|
18
|
+
const FileContents_1 = require("nlptoolkit-util/dist/FileContents");
|
|
17
19
|
class LinearPerceptronModel extends NeuralNetworkModel_1.NeuralNetworkModel {
|
|
18
20
|
/**
|
|
19
21
|
* Constructor that takes {@link InstanceList}s as trainsSet and validationSet. Initially it allocates layer weights,
|
|
20
22
|
* then creates an input vector by using given trainSet and finds error. Via the validationSet it finds the classification
|
|
21
23
|
* performance and at the end it reassigns the allocated weight Matrix with the matrix that has the best accuracy.
|
|
22
24
|
*
|
|
23
|
-
* @param
|
|
25
|
+
* @param trainSetOrFileName InstanceList that is used to train.
|
|
24
26
|
* @param validationSet InstanceList that is used to validate.
|
|
25
27
|
* @param parameters Linear perceptron parameters; learningRate, etaDecrease, crossValidationRatio, epoch.
|
|
26
28
|
*/
|
|
27
|
-
constructor(
|
|
28
|
-
|
|
29
|
+
constructor(trainSetOrFileName, validationSet, parameters) {
|
|
30
|
+
if (trainSetOrFileName instanceof InstanceList_1.InstanceList) {
|
|
31
|
+
if (validationSet != undefined) {
|
|
32
|
+
super(trainSetOrFileName);
|
|
33
|
+
this.constructor1(trainSetOrFileName, validationSet, parameters);
|
|
34
|
+
}
|
|
35
|
+
else {
|
|
36
|
+
super(trainSetOrFileName);
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
else {
|
|
40
|
+
if (trainSetOrFileName != undefined) {
|
|
41
|
+
super();
|
|
42
|
+
this.constructor2(trainSetOrFileName);
|
|
43
|
+
}
|
|
44
|
+
else {
|
|
45
|
+
super();
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
constructor1(trainSet, validationSet, parameters) {
|
|
29
50
|
if (validationSet != undefined) {
|
|
30
|
-
|
|
31
|
-
let bestW = W.clone();
|
|
51
|
+
this.W = this.allocateLayerWeights(this.K, this.d + 1, new Random_1.Random(parameters.getSeed()));
|
|
52
|
+
let bestW = this.W.clone();
|
|
32
53
|
let bestClassificationPerformance = new ClassificationPerformance_1.ClassificationPerformance(0.0);
|
|
33
54
|
let epoch = parameters.getEpoch();
|
|
34
55
|
let learningRate = parameters.getLearningRate();
|
|
@@ -36,27 +57,34 @@
|
|
|
36
57
|
trainSet.shuffle(new Random_1.Random(parameters.getSeed()));
|
|
37
58
|
for (let j = 0; j < trainSet.size(); j++) {
|
|
38
59
|
this.createInputVector(trainSet.get(j));
|
|
39
|
-
let rMinusY = this.calculateRMinusY(trainSet.get(j), this.x, W);
|
|
60
|
+
let rMinusY = this.calculateRMinusY(trainSet.get(j), this.x, this.W);
|
|
40
61
|
let deltaW = new Matrix_1.Matrix(rMinusY, this.x);
|
|
41
62
|
deltaW.multiplyWithConstant(learningRate);
|
|
42
|
-
W.add(deltaW);
|
|
63
|
+
this.W.add(deltaW);
|
|
43
64
|
}
|
|
44
65
|
let currentClassificationPerformance = this.testClassifier(validationSet);
|
|
45
66
|
if (currentClassificationPerformance.getAccuracy() > bestClassificationPerformance.getAccuracy()) {
|
|
46
67
|
bestClassificationPerformance = currentClassificationPerformance;
|
|
47
|
-
bestW = W.clone();
|
|
68
|
+
bestW = this.W.clone();
|
|
48
69
|
}
|
|
49
70
|
learningRate *= parameters.getEtaDecrease();
|
|
50
71
|
}
|
|
51
|
-
W = bestW;
|
|
72
|
+
this.W = bestW;
|
|
52
73
|
}
|
|
53
74
|
}
|
|
75
|
+
constructor2(fileName) {
|
|
76
|
+
let input = new FileContents_1.FileContents(fileName);
|
|
77
|
+
this.loadClassLabels(input);
|
|
78
|
+
this.W = this.loadMatrix(input);
|
|
79
|
+
}
|
|
54
80
|
/**
|
|
55
81
|
* The calculateOutput method calculates the {@link Matrix} y by multiplying Matrix W with {@link Vector} x.
|
|
56
82
|
*/
|
|
57
83
|
calculateOutput() {
|
|
58
84
|
this.y = this.W.multiplyWithVectorFromRight(this.x);
|
|
59
85
|
}
|
|
86
|
+
saveTxt(fileName) {
|
|
87
|
+
}
|
|
60
88
|
}
|
|
61
89
|
exports.LinearPerceptronModel = LinearPerceptronModel;
|
|
62
90
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"LinearPerceptronModel.js","sourceRoot":"","sources":["../../source/Model/LinearPerceptronModel.ts"],"names":[],"mappings":";;;;;;;;;;;;IAAA,6DAAwD;IACxD,wDAAmD;
|
|
1
|
+
{"version":3,"file":"LinearPerceptronModel.js","sourceRoot":"","sources":["../../source/Model/LinearPerceptronModel.ts"],"names":[],"mappings":"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"}
|
package/dist/Model/Model.d.ts
CHANGED
|
@@ -1,7 +1,11 @@
|
|
|
1
1
|
import { Instance } from "../Instance/Instance";
|
|
2
|
+
import { FileContents } from "nlptoolkit-util/dist/FileContents";
|
|
3
|
+
import { InstanceList } from "../InstanceList/InstanceList";
|
|
4
|
+
import { Matrix } from "nlptoolkit-math/dist/Matrix";
|
|
2
5
|
export declare abstract class Model {
|
|
3
6
|
abstract predict(instance: Instance): string;
|
|
4
7
|
abstract predictProbability(instance: Instance): Map<string, number>;
|
|
8
|
+
abstract saveTxt(fileName: String): void;
|
|
5
9
|
/**
|
|
6
10
|
* Given an array of class labels, returns the maximum occurred one.
|
|
7
11
|
*
|
|
@@ -9,4 +13,7 @@ export declare abstract class Model {
|
|
|
9
13
|
* @return The class label that occurs most in the array of class labels (mod of class label list).
|
|
10
14
|
*/
|
|
11
15
|
static getMaximum(classLabels: Array<string>): string;
|
|
16
|
+
loadInstance(line: string, attributeTypes: string[]): Instance;
|
|
17
|
+
loadInstanceList(input: FileContents): InstanceList;
|
|
18
|
+
loadMatrix(input: FileContents): Matrix;
|
|
12
19
|
}
|
package/dist/Model/Model.js
CHANGED
|
@@ -4,13 +4,16 @@
|
|
|
4
4
|
if (v !== undefined) module.exports = v;
|
|
5
5
|
}
|
|
6
6
|
else if (typeof define === "function" && define.amd) {
|
|
7
|
-
define(["require", "exports", "nlptoolkit-datastructure/dist/CounterHashMap"], factory);
|
|
7
|
+
define(["require", "exports", "../Instance/Instance", "nlptoolkit-datastructure/dist/CounterHashMap", "../InstanceList/InstanceList", "nlptoolkit-math/dist/Matrix"], factory);
|
|
8
8
|
}
|
|
9
9
|
})(function (require, exports) {
|
|
10
10
|
"use strict";
|
|
11
11
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
12
|
exports.Model = void 0;
|
|
13
|
+
const Instance_1 = require("../Instance/Instance");
|
|
13
14
|
const CounterHashMap_1 = require("nlptoolkit-datastructure/dist/CounterHashMap");
|
|
15
|
+
const InstanceList_1 = require("../InstanceList/InstanceList");
|
|
16
|
+
const Matrix_1 = require("nlptoolkit-math/dist/Matrix");
|
|
14
17
|
class Model {
|
|
15
18
|
/**
|
|
16
19
|
* Given an array of class labels, returns the maximum occurred one.
|
|
@@ -25,6 +28,42 @@
|
|
|
25
28
|
}
|
|
26
29
|
return frequencies.max();
|
|
27
30
|
}
|
|
31
|
+
loadInstance(line, attributeTypes) {
|
|
32
|
+
let items = line.split(",");
|
|
33
|
+
let instance = new Instance_1.Instance(items[items.length - 1]);
|
|
34
|
+
for (let i = 0; i < items.length - 1; i++) {
|
|
35
|
+
switch (attributeTypes[i]) {
|
|
36
|
+
case "DISCRETE":
|
|
37
|
+
instance.addAttribute(items[i]);
|
|
38
|
+
break;
|
|
39
|
+
case "CONTINUOUS":
|
|
40
|
+
instance.addAttribute(parseFloat(items[i]));
|
|
41
|
+
break;
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
return instance;
|
|
45
|
+
}
|
|
46
|
+
loadInstanceList(input) {
|
|
47
|
+
let types = input.readLine().split(" ");
|
|
48
|
+
let instanceCount = parseInt(input.readLine());
|
|
49
|
+
let instanceList = new InstanceList_1.InstanceList();
|
|
50
|
+
for (let i = 0; i < instanceCount; i++) {
|
|
51
|
+
instanceList.add(this.loadInstance(input.readLine(), types));
|
|
52
|
+
}
|
|
53
|
+
return instanceList;
|
|
54
|
+
}
|
|
55
|
+
loadMatrix(input) {
|
|
56
|
+
let items = input.readLine().split(" ");
|
|
57
|
+
let matrix = new Matrix_1.Matrix(parseInt(items[0]), parseInt(items[1]));
|
|
58
|
+
for (let j = 0; j < matrix.getRow(); j++) {
|
|
59
|
+
let line = input.readLine();
|
|
60
|
+
items = line.split(" ");
|
|
61
|
+
for (let k = 0; k < matrix.getColumn(); k++) {
|
|
62
|
+
matrix.setValue(j, k, parseFloat(items[k]));
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
return matrix;
|
|
66
|
+
}
|
|
28
67
|
}
|
|
29
68
|
exports.Model = Model;
|
|
30
69
|
});
|
package/dist/Model/Model.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Model.js","sourceRoot":"","sources":["../../source/Model/Model.ts"],"names":[],"mappings":";;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"Model.js","sourceRoot":"","sources":["../../source/Model/Model.ts"],"names":[],"mappings":";;;;;;;;;;;;IAAA,mDAA8C;IAC9C,iFAA4E;IAE5E,+DAA0D;IAC1D,wDAAmD;IAEnD,MAAsB,KAAK;QAMvB;;;;;WAKG;QACH,MAAM,CAAC,UAAU,CAAC,WAA0B;YACxC,IAAI,WAAW,GAAG,IAAI,+BAAc,EAAU,CAAC;YAC/C,KAAK,IAAI,KAAK,IAAI,WAAW,EAAE;gBAC3B,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;aAC1B;YACD,OAAO,WAAW,CAAC,GAAG,EAAE,CAAC;QAC7B,CAAC;QAED,YAAY,CAAC,IAAY,EAAE,cAAwB;YAC/C,IAAI,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;YAC3B,IAAI,QAAQ,GAAG,IAAI,mBAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAA;YACpD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,EAAE,EAAC;gBACtC,QAAQ,cAAc,CAAC,CAAC,CAAC,EAAC;oBACtB,KAAK,UAAU;wBACX,QAAQ,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAA;wBAC/B,MAAK;oBACT,KAAK,YAAY;wBACb,QAAQ,CAAC,YAAY,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;wBAC3C,MAAK;iBACZ;aACJ;YACD,OAAO,QAAQ,CAAA;QACnB,CAAC;QAED,gBAAgB,CAAC,KAAmB;YAChC,IAAI,KAAK,GAAG,KAAK,CAAC,QAAQ,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;YACvC,IAAI,aAAa,GAAG,QAAQ,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAA;YAC9C,IAAI,YAAY,GAAG,IAAI,2BAAY,EAAE,CAAA;YACrC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,aAAa,EAAE,CAAC,EAAE,EAAC;gBACnC,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,QAAQ,EAAE,EAAE,KAAK,CAAC,CAAC,CAAA;aAC/D;YACD,OAAO,YAAY,CAAC;QACxB,CAAC;QAED,UAAU,CAAC,KAAmB;YAC1B,IAAI,KAAK,GAAG,KAAK,CAAC,QAAQ,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;YACvC,IAAI,MAAM,GAAG,IAAI,eAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;YAC/D,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,EAAE,CAAC,EAAE,EAAC;gBACrC,IAAI,IAAI,GAAG,KAAK,CAAC,QAAQ,EAAE,CAAA;gBAC3B,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;gBACvB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,SAAS,EAAE,EAAE,CAAC,EAAE,EAAC;oBACxC,MAAM,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAE,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;iBAC9C;aACJ;YACD,OAAO,MAAM,CAAA;QACjB,CAAC;KACJ;IA1DD,sBA0DC"}
|
|
@@ -12,19 +12,22 @@ export declare class MultiLayerPerceptronModel extends LinearPerceptronModel {
|
|
|
12
12
|
* @param random Random function to set weights.
|
|
13
13
|
*/
|
|
14
14
|
private allocateWeights;
|
|
15
|
+
constructor1(trainSet: InstanceList, validationSet?: InstanceList, parameters?: MultiLayerPerceptronParameter): void;
|
|
16
|
+
constructor2(fileName: string): void;
|
|
15
17
|
/**
|
|
16
18
|
* A constructor that takes {@link InstanceList}s as trainsSet and validationSet. It sets the {@link NeuralNetworkModel}
|
|
17
19
|
* nodes with given {@link InstanceList} then creates an input vector by using given trainSet and finds error.
|
|
18
20
|
* Via the validationSet it finds the classification performance and reassigns the allocated weight Matrix with the matrix
|
|
19
21
|
* that has the best accuracy and the Matrix V with the best Vector input.
|
|
20
22
|
*
|
|
21
|
-
* @param
|
|
23
|
+
* @param trainSetOrFileName InstanceList that is used to train.
|
|
22
24
|
* @param validationSet InstanceList that is used to validate.
|
|
23
25
|
* @param parameters Multi layer perceptron parameters; seed, learningRate, etaDecrease, crossValidationRatio, epoch, hiddenNodes.
|
|
24
26
|
*/
|
|
25
|
-
constructor(
|
|
27
|
+
constructor(trainSetOrFileName: InstanceList | string, validationSet?: InstanceList, parameters?: MultiLayerPerceptronParameter);
|
|
26
28
|
/**
|
|
27
29
|
* The calculateOutput method calculates the forward single hidden layer by using Matrices W and V.
|
|
28
30
|
*/
|
|
29
31
|
protected calculateOutput(): void;
|
|
32
|
+
saveTxt(fileName: string): void;
|
|
30
33
|
}
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
if (v !== undefined) module.exports = v;
|
|
5
5
|
}
|
|
6
6
|
else if (typeof define === "function" && define.amd) {
|
|
7
|
-
define(["require", "exports", "./LinearPerceptronModel", "nlptoolkit-math/dist/Matrix", "../Parameter/ActivationFunction", "../Performance/ClassificationPerformance", "nlptoolkit-math/dist/Vector", "nlptoolkit-util/dist/Random"], factory);
|
|
7
|
+
define(["require", "exports", "./LinearPerceptronModel", "nlptoolkit-math/dist/Matrix", "../Parameter/ActivationFunction", "../InstanceList/InstanceList", "../Performance/ClassificationPerformance", "nlptoolkit-math/dist/Vector", "nlptoolkit-util/dist/Random", "nlptoolkit-util/dist/FileContents"], factory);
|
|
8
8
|
}
|
|
9
9
|
})(function (require, exports) {
|
|
10
10
|
"use strict";
|
|
@@ -13,9 +13,11 @@
|
|
|
13
13
|
const LinearPerceptronModel_1 = require("./LinearPerceptronModel");
|
|
14
14
|
const Matrix_1 = require("nlptoolkit-math/dist/Matrix");
|
|
15
15
|
const ActivationFunction_1 = require("../Parameter/ActivationFunction");
|
|
16
|
+
const InstanceList_1 = require("../InstanceList/InstanceList");
|
|
16
17
|
const ClassificationPerformance_1 = require("../Performance/ClassificationPerformance");
|
|
17
18
|
const Vector_1 = require("nlptoolkit-math/dist/Vector");
|
|
18
19
|
const Random_1 = require("nlptoolkit-util/dist/Random");
|
|
20
|
+
const FileContents_1 = require("nlptoolkit-util/dist/FileContents");
|
|
19
21
|
class MultiLayerPerceptronModel extends LinearPerceptronModel_1.LinearPerceptronModel {
|
|
20
22
|
/**
|
|
21
23
|
* A constructor that takes {@link InstanceList}s as trainsSet and validationSet. It sets the {@link NeuralNetworkModel}
|
|
@@ -23,12 +25,31 @@
|
|
|
23
25
|
* Via the validationSet it finds the classification performance and reassigns the allocated weight Matrix with the matrix
|
|
24
26
|
* that has the best accuracy and the Matrix V with the best Vector input.
|
|
25
27
|
*
|
|
26
|
-
* @param
|
|
28
|
+
* @param trainSetOrFileName InstanceList that is used to train.
|
|
27
29
|
* @param validationSet InstanceList that is used to validate.
|
|
28
30
|
* @param parameters Multi layer perceptron parameters; seed, learningRate, etaDecrease, crossValidationRatio, epoch, hiddenNodes.
|
|
29
31
|
*/
|
|
30
|
-
constructor(
|
|
31
|
-
|
|
32
|
+
constructor(trainSetOrFileName, validationSet, parameters) {
|
|
33
|
+
if (trainSetOrFileName instanceof InstanceList_1.InstanceList) {
|
|
34
|
+
super(trainSetOrFileName);
|
|
35
|
+
this.constructor1(trainSetOrFileName, validationSet, parameters);
|
|
36
|
+
}
|
|
37
|
+
else {
|
|
38
|
+
super();
|
|
39
|
+
this.constructor2(trainSetOrFileName);
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* The allocateWeights method allocates layers' weights of Matrix W and V.
|
|
44
|
+
*
|
|
45
|
+
* @param H Integer value for weights.
|
|
46
|
+
* @param random Random function to set weights.
|
|
47
|
+
*/
|
|
48
|
+
allocateWeights(H, random) {
|
|
49
|
+
this.W = this.allocateLayerWeights(H, this.d + 1, random);
|
|
50
|
+
this.V = this.allocateLayerWeights(this.K, H + 1, random);
|
|
51
|
+
}
|
|
52
|
+
constructor1(trainSet, validationSet, parameters) {
|
|
32
53
|
this.activationFunction = parameters.getActivationFunction();
|
|
33
54
|
this.allocateWeights(parameters.getHiddenNodes(), new Random_1.Random(parameters.getSeed()));
|
|
34
55
|
let bestW = this.W.clone();
|
|
@@ -81,15 +102,12 @@
|
|
|
81
102
|
this.W = bestW;
|
|
82
103
|
this.V = bestV;
|
|
83
104
|
}
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
allocateWeights(H, random) {
|
|
91
|
-
this.W = this.allocateLayerWeights(H, this.d + 1, random);
|
|
92
|
-
this.V = this.allocateLayerWeights(this.K, H + 1, random);
|
|
105
|
+
constructor2(fileName) {
|
|
106
|
+
let input = new FileContents_1.FileContents(fileName);
|
|
107
|
+
this.activationFunction = this.loadActivationFunction(input);
|
|
108
|
+
this.loadClassLabels(input);
|
|
109
|
+
this.W = this.loadMatrix(input);
|
|
110
|
+
this.V = this.loadMatrix(input);
|
|
93
111
|
}
|
|
94
112
|
/**
|
|
95
113
|
* The calculateOutput method calculates the forward single hidden layer by using Matrices W and V.
|
|
@@ -97,6 +115,8 @@
|
|
|
97
115
|
calculateOutput() {
|
|
98
116
|
this.calculateForwardSingleHiddenLayer(this.W, this.V, this.activationFunction);
|
|
99
117
|
}
|
|
118
|
+
saveTxt(fileName) {
|
|
119
|
+
}
|
|
100
120
|
}
|
|
101
121
|
exports.MultiLayerPerceptronModel = MultiLayerPerceptronModel;
|
|
102
122
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MultiLayerPerceptronModel.js","sourceRoot":"","sources":["../../source/Model/MultiLayerPerceptronModel.ts"],"names":[],"mappings":";;;;;;;;;;;;IAAA,mEAA8D;IAC9D,wDAAmD;IACnD,wEAAmE;
|
|
1
|
+
{"version":3,"file":"MultiLayerPerceptronModel.js","sourceRoot":"","sources":["../../source/Model/MultiLayerPerceptronModel.ts"],"names":[],"mappings":"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"}
|
|
@@ -13,7 +13,7 @@ export declare class NaiveBayesModel extends GaussianModel {
|
|
|
13
13
|
* @param classMeans A {@link Map} of String and {@link Vector}.
|
|
14
14
|
* @param classDeviations A {@link Map} of String and {@link Vector}.
|
|
15
15
|
*/
|
|
16
|
-
constructor(priorDistribution: DiscreteDistribution, classMeans
|
|
16
|
+
constructor(priorDistribution: DiscreteDistribution | string, classMeans?: any, classDeviations?: Map<string, Vector>);
|
|
17
17
|
/**
|
|
18
18
|
* The calculateMetric method takes an {@link Instance} and a String as inputs, and it returns the log likelihood of
|
|
19
19
|
* these inputs.
|
|
@@ -44,4 +44,5 @@ export declare class NaiveBayesModel extends GaussianModel {
|
|
|
44
44
|
* @return The log likelihood of given class label and {@link Instance}.
|
|
45
45
|
*/
|
|
46
46
|
private logLikelihoodDiscrete;
|
|
47
|
+
saveTxt(fileName: string): void;
|
|
47
48
|
}
|