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.
- package/README.md +1 -0
- package/dist/Attribute/DiscreteAttribute.d.ts +1 -1
- package/dist/Attribute/DiscreteAttribute.js.map +1 -1
- package/dist/Attribute/DiscreteIndexedAttribute.d.ts +2 -2
- package/dist/DataSet/DataDefinition.d.ts +11 -0
- package/dist/DataSet/DataDefinition.js +11 -0
- package/dist/DataSet/DataDefinition.js.map +1 -1
- package/dist/Experiment/BootstrapRun.js +2 -2
- package/dist/Experiment/BootstrapRun.js.map +1 -1
- package/dist/Experiment/Experiment.d.ts +7 -7
- package/dist/Experiment/Experiment.js +6 -6
- package/dist/Experiment/Experiment.js.map +1 -1
- package/dist/Experiment/KFoldRun.d.ts +17 -2
- package/dist/Experiment/KFoldRun.js +19 -4
- package/dist/Experiment/KFoldRun.js.map +1 -1
- package/dist/Experiment/KFoldRunSeparateTest.d.ts +13 -2
- package/dist/Experiment/KFoldRunSeparateTest.js +15 -4
- package/dist/Experiment/KFoldRunSeparateTest.js.map +1 -1
- package/dist/Experiment/MxKFoldRun.js +1 -1
- package/dist/Experiment/MxKFoldRun.js.map +1 -1
- package/dist/Experiment/MxKFoldRunSeparateTest.js +1 -1
- package/dist/Experiment/MxKFoldRunSeparateTest.js.map +1 -1
- package/dist/Experiment/SingleRunWithK.d.ts +18 -3
- package/dist/Experiment/SingleRunWithK.js +18 -3
- package/dist/Experiment/SingleRunWithK.js.map +1 -1
- package/dist/Experiment/StratifiedKFoldRun.js +1 -1
- package/dist/Experiment/StratifiedKFoldRun.js.map +1 -1
- package/dist/Experiment/StratifiedKFoldRunSeparateTest.js +1 -1
- package/dist/Experiment/StratifiedKFoldRunSeparateTest.js.map +1 -1
- package/dist/Experiment/StratifiedMxKFoldRun.js +1 -1
- package/dist/Experiment/StratifiedMxKFoldRun.js.map +1 -1
- package/dist/Experiment/StratifiedMxKFoldRunSeparateTest.js +3 -3
- package/dist/Experiment/StratifiedMxKFoldRunSeparateTest.js.map +1 -1
- package/dist/Experiment/StratifiedSingleRunWithK.js +1 -1
- package/dist/Experiment/StratifiedSingleRunWithK.js.map +1 -1
- package/dist/Filter/LaryFilter.d.ts +1 -1
- package/dist/Filter/LaryFilter.js +1 -1
- package/dist/Filter/TrainedFeatureFilter.d.ts +1 -1
- package/dist/Filter/TrainedFeatureFilter.js +1 -1
- package/dist/InstanceList/Partition.d.ts +45 -0
- package/dist/InstanceList/Partition.js +125 -70
- package/dist/InstanceList/Partition.js.map +1 -1
- package/dist/Model/DecisionTree/DecisionCondition.d.ts +8 -0
- package/dist/Model/DecisionTree/DecisionCondition.js +8 -0
- package/dist/Model/DecisionTree/DecisionCondition.js.map +1 -1
- package/dist/Model/DecisionTree/DecisionNode.d.ts +39 -1
- package/dist/Model/DecisionTree/DecisionNode.js +64 -22
- package/dist/Model/DecisionTree/DecisionNode.js.map +1 -1
- package/dist/Model/DecisionTree/DecisionStump.d.ts +17 -0
- package/dist/{Classifier/C45Stump.js → Model/DecisionTree/DecisionStump.js} +13 -10
- package/dist/Model/DecisionTree/DecisionStump.js.map +1 -0
- package/dist/Model/DecisionTree/DecisionTree.d.ts +24 -9
- package/dist/Model/DecisionTree/DecisionTree.js +39 -16
- package/dist/Model/DecisionTree/DecisionTree.js.map +1 -1
- package/dist/Model/DummyModel.d.ts +28 -3
- package/dist/Model/DummyModel.js +36 -23
- package/dist/Model/DummyModel.js.map +1 -1
- package/dist/{Classifier/Bagging.d.ts → Model/Ensemble/BaggingModel.d.ts} +8 -4
- package/dist/{Classifier/Bagging.js → Model/Ensemble/BaggingModel.js} +16 -14
- package/dist/Model/Ensemble/BaggingModel.js.map +1 -0
- package/dist/{Classifier/RandomForest.d.ts → Model/Ensemble/RandomForestModel.d.ts} +8 -4
- package/dist/{Classifier/RandomForest.js → Model/Ensemble/RandomForestModel.js} +16 -14
- package/dist/Model/Ensemble/RandomForestModel.js.map +1 -0
- package/dist/Model/Ensemble/TreeEnsembleModel.d.ts +32 -0
- package/dist/Model/{TreeEnsembleModel.js → Ensemble/TreeEnsembleModel.js} +23 -17
- package/dist/Model/Ensemble/TreeEnsembleModel.js.map +1 -0
- package/dist/Model/Model.d.ts +52 -0
- package/dist/Model/Model.js +84 -1
- package/dist/Model/Model.js.map +1 -1
- package/dist/Model/NeuralNetwork/DeepNetworkModel.d.ts +47 -0
- package/dist/Model/{DeepNetworkModel.js → NeuralNetwork/DeepNetworkModel.js} +55 -55
- package/dist/Model/NeuralNetwork/DeepNetworkModel.js.map +1 -0
- package/dist/Model/NeuralNetwork/LinearPerceptronModel.d.ts +31 -0
- package/dist/Model/NeuralNetwork/LinearPerceptronModel.js +84 -0
- package/dist/Model/NeuralNetwork/LinearPerceptronModel.js.map +1 -0
- package/dist/Model/NeuralNetwork/MultiLayerPerceptronModel.d.ts +39 -0
- package/dist/Model/{MultiLayerPerceptronModel.js → NeuralNetwork/MultiLayerPerceptronModel.js} +41 -37
- package/dist/Model/NeuralNetwork/MultiLayerPerceptronModel.js.map +1 -0
- package/dist/Model/{NeuralNetworkModel.d.ts → NeuralNetwork/NeuralNetworkModel.d.ts} +19 -5
- package/dist/Model/{NeuralNetworkModel.js → NeuralNetwork/NeuralNetworkModel.js} +19 -6
- package/dist/Model/NeuralNetwork/NeuralNetworkModel.js.map +1 -0
- package/dist/Model/{KnnInstance.d.ts → NonParametric/KnnInstance.d.ts} +1 -1
- package/dist/Model/NonParametric/KnnInstance.js.map +1 -0
- package/dist/Model/{KnnModel.d.ts → NonParametric/KnnModel.d.ts} +30 -6
- package/dist/Model/{KnnModel.js → NonParametric/KnnModel.js} +42 -19
- package/dist/Model/NonParametric/KnnModel.js.map +1 -0
- package/dist/Model/{GaussianModel.d.ts → Parametric/GaussianModel.d.ts} +20 -2
- package/dist/Model/{GaussianModel.js → Parametric/GaussianModel.js} +21 -3
- package/dist/Model/Parametric/GaussianModel.js.map +1 -0
- package/dist/Model/Parametric/KMeansModel.d.ts +36 -0
- package/dist/Model/Parametric/KMeansModel.js +73 -0
- package/dist/Model/Parametric/KMeansModel.js.map +1 -0
- package/dist/Model/Parametric/LdaModel.d.ts +44 -0
- package/dist/Model/Parametric/LdaModel.js +98 -0
- package/dist/Model/Parametric/LdaModel.js.map +1 -0
- package/dist/Model/{NaiveBayesModel.d.ts → Parametric/NaiveBayesModel.d.ts} +30 -10
- package/dist/Model/{NaiveBayesModel.js → Parametric/NaiveBayesModel.js} +64 -27
- package/dist/Model/Parametric/NaiveBayesModel.js.map +1 -0
- package/dist/Model/Parametric/QdaModel.d.ts +30 -0
- package/dist/Model/Parametric/QdaModel.js +84 -0
- package/dist/Model/Parametric/QdaModel.js.map +1 -0
- package/dist/Model/RandomModel.d.ts +32 -2
- package/dist/Model/RandomModel.js +48 -16
- package/dist/Model/RandomModel.js.map +1 -1
- package/dist/Parameter/C45Parameter.d.ts +2 -2
- package/dist/Parameter/DeepNetworkParameter.d.ts +2 -2
- package/dist/Parameter/KnnParameter.d.ts +1 -1
- package/dist/Parameter/LinearPerceptronParameter.d.ts +4 -4
- package/dist/Parameter/MultiLayerPerceptronParameter.d.ts +2 -2
- package/dist/Parameter/Parameter.d.ts +1 -1
- package/dist/Performance/ConfusionMatrix.d.ts +1 -1
- package/dist/StatisticalTest/Combined5x2F.d.ts +12 -0
- package/dist/StatisticalTest/Combined5x2F.js +12 -0
- package/dist/StatisticalTest/Combined5x2F.js.map +1 -1
- package/dist/StatisticalTest/Combined5x2t.d.ts +13 -0
- package/dist/StatisticalTest/Combined5x2t.js +13 -0
- package/dist/StatisticalTest/Combined5x2t.js.map +1 -1
- package/dist/StatisticalTest/Paired5x2t.d.ts +12 -0
- package/dist/StatisticalTest/Paired5x2t.js +12 -0
- package/dist/StatisticalTest/Paired5x2t.js.map +1 -1
- package/dist/StatisticalTest/PairedTest.d.ts +12 -0
- package/dist/StatisticalTest/PairedTest.js +12 -0
- package/dist/StatisticalTest/PairedTest.js.map +1 -1
- package/dist/StatisticalTest/Pairedt.d.ts +12 -0
- package/dist/StatisticalTest/Pairedt.js +12 -0
- package/dist/StatisticalTest/Pairedt.js.map +1 -1
- package/dist/StatisticalTest/Sign.d.ts +17 -0
- package/dist/StatisticalTest/Sign.js +17 -0
- package/dist/StatisticalTest/Sign.js.map +1 -1
- package/dist/StatisticalTest/StatisticalTestResult.d.ts +30 -0
- package/dist/StatisticalTest/StatisticalTestResult.js +30 -0
- package/dist/StatisticalTest/StatisticalTestResult.js.map +1 -1
- package/dist/index.d.ts +88 -0
- package/dist/index.js +111 -0
- package/dist/index.js.map +1 -0
- package/models/bagging-bupa.txt +10346 -0
- package/models/bagging-car.txt +40752 -0
- package/models/bagging-dermatology.txt +2990 -0
- package/models/bagging-iris.txt +1332 -0
- package/models/bagging-tictactoe.txt +29442 -0
- package/models/c45-bupa.txt +3 -0
- package/models/c45-car.txt +212 -0
- package/models/c45-carIndexed.txt +92 -0
- package/models/c45-dermatology.txt +22 -0
- package/models/c45-iris.txt +7 -0
- package/models/c45-tictactoe.txt +147 -0
- package/models/c45-tictactoeIndexed.txt +79 -0
- package/models/c45stump-bupa.txt +6 -0
- package/models/c45stump-car.txt +11 -0
- package/models/c45stump-chess.txt +35 -0
- package/models/c45stump-dermatology.txt +11 -0
- package/models/c45stump-iris.txt +5 -0
- package/models/c45stump-nursery.txt +10 -0
- package/models/c45stump-tictactoe.txt +9 -0
- package/models/randomforest-bupa.txt +10346 -0
- package/models/randomforest-car.txt +40752 -0
- package/models/randomforest-carIndexed.txt +15594 -0
- package/models/randomforest-dermatology.txt +2990 -0
- package/models/randomforest-iris.txt +1332 -0
- package/models/randomforest-tictactoe.txt +29442 -0
- package/package.json +7 -7
- package/source/Attribute/DiscreteAttribute.ts +1 -1
- package/source/Attribute/DiscreteIndexedAttribute.ts +2 -2
- package/source/DataSet/DataDefinition.ts +11 -0
- package/source/Experiment/BootstrapRun.ts +2 -2
- package/source/Experiment/Experiment.ts +10 -10
- package/source/Experiment/KFoldRun.ts +20 -5
- package/source/Experiment/KFoldRunSeparateTest.ts +16 -5
- package/source/Experiment/MxKFoldRun.ts +1 -1
- package/source/Experiment/MxKFoldRunSeparateTest.ts +1 -1
- package/source/Experiment/SingleRunWithK.ts +20 -5
- package/source/Experiment/StratifiedKFoldRun.ts +1 -1
- package/source/Experiment/StratifiedKFoldRunSeparateTest.ts +1 -1
- package/source/Experiment/StratifiedMxKFoldRun.ts +1 -1
- package/source/Experiment/StratifiedMxKFoldRunSeparateTest.ts +3 -3
- package/source/Experiment/StratifiedSingleRunWithK.ts +1 -1
- package/source/Filter/LaryFilter.ts +1 -1
- package/source/Filter/TrainedFeatureFilter.ts +1 -1
- package/source/InstanceList/Partition.ts +125 -65
- package/source/Model/DecisionTree/DecisionCondition.ts +8 -0
- package/source/Model/DecisionTree/DecisionNode.ts +65 -22
- package/source/Model/DecisionTree/DecisionStump.ts +26 -0
- package/source/Model/DecisionTree/DecisionTree.ts +44 -15
- package/source/Model/DummyModel.ts +40 -19
- package/source/{Classifier/Bagging.ts → Model/Ensemble/BaggingModel.ts} +15 -12
- package/source/{Classifier/RandomForest.ts → Model/Ensemble/RandomForestModel.ts} +14 -12
- package/source/Model/{TreeEnsembleModel.ts → Ensemble/TreeEnsembleModel.ts} +26 -18
- package/source/Model/Model.ts +92 -0
- package/source/Model/{DeepNetworkModel.ts → NeuralNetwork/DeepNetworkModel.ts} +59 -56
- package/source/Model/NeuralNetwork/LinearPerceptronModel.ts +81 -0
- package/source/Model/{MultiLayerPerceptronModel.ts → NeuralNetwork/MultiLayerPerceptronModel.ts} +46 -39
- package/source/Model/{NeuralNetworkModel.ts → NeuralNetwork/NeuralNetworkModel.ts} +20 -7
- package/source/Model/{KnnInstance.ts → NonParametric/KnnInstance.ts} +1 -1
- package/source/Model/{KnnModel.ts → NonParametric/KnnModel.ts} +48 -19
- package/source/Model/{GaussianModel.ts → Parametric/GaussianModel.ts} +21 -3
- package/source/Model/Parametric/KMeansModel.ts +72 -0
- package/source/Model/Parametric/LdaModel.ts +98 -0
- package/source/Model/{NaiveBayesModel.ts → Parametric/NaiveBayesModel.ts} +68 -25
- package/source/Model/Parametric/QdaModel.ts +83 -0
- package/source/Model/RandomModel.ts +54 -16
- package/source/Parameter/C45Parameter.ts +2 -2
- package/source/Parameter/DeepNetworkParameter.ts +2 -2
- package/source/Parameter/KnnParameter.ts +1 -1
- package/source/Parameter/LinearPerceptronParameter.ts +4 -4
- package/source/Parameter/MultiLayerPerceptronParameter.ts +2 -2
- package/source/Parameter/Parameter.ts +1 -1
- package/source/Performance/ConfusionMatrix.ts +1 -1
- package/source/StatisticalTest/Combined5x2F.ts +12 -0
- package/source/StatisticalTest/Combined5x2t.ts +13 -0
- package/source/StatisticalTest/Paired5x2t.ts +12 -0
- package/source/StatisticalTest/PairedTest.ts +12 -0
- package/source/StatisticalTest/Pairedt.ts +12 -0
- package/source/StatisticalTest/Sign.ts +17 -0
- package/source/StatisticalTest/StatisticalTestResult.ts +30 -0
- package/source/index.ts +88 -0
- package/source/tsconfig.json +1 -1
- package/tests/Classifier/C45Test.ts +2 -2
- package/tests/Classifier/DeepNetworkTest.ts +3 -5
- package/tests/Classifier/DummyTest.ts +2 -2
- package/tests/Classifier/KMeansTest.ts +2 -2
- package/tests/Classifier/KnnTest.ts +2 -2
- package/tests/Classifier/LdaTest.ts +2 -2
- package/tests/Classifier/LinearPerceptronTest.ts +2 -2
- package/tests/Classifier/MultiLayerPerceptronTest.ts +2 -3
- package/tests/Classifier/NaiveBayesTest.ts +2 -2
- package/tests/Classifier/QdaTest.ts +2 -2
- package/tests/Classifier/RandomForestTest.ts +2 -2
- package/tsconfig.json +1 -2
- package/dist/Classifier/Bagging.js.map +0 -1
- package/dist/Classifier/C45.d.ts +0 -14
- package/dist/Classifier/C45.js +0 -43
- package/dist/Classifier/C45.js.map +0 -1
- package/dist/Classifier/C45Stump.d.ts +0 -13
- package/dist/Classifier/C45Stump.js.map +0 -1
- package/dist/Classifier/Classifier.d.ts +0 -40
- package/dist/Classifier/Classifier.js +0 -72
- package/dist/Classifier/Classifier.js.map +0 -1
- package/dist/Classifier/DeepNetwork.d.ts +0 -14
- package/dist/Classifier/DeepNetwork.js +0 -34
- package/dist/Classifier/DeepNetwork.js.map +0 -1
- package/dist/Classifier/Dummy.d.ts +0 -14
- package/dist/Classifier/Dummy.js +0 -32
- package/dist/Classifier/Dummy.js.map +0 -1
- package/dist/Classifier/KMeans.d.ts +0 -13
- package/dist/Classifier/KMeans.js +0 -39
- package/dist/Classifier/KMeans.js.map +0 -1
- package/dist/Classifier/Knn.d.ts +0 -14
- package/dist/Classifier/Knn.js +0 -32
- package/dist/Classifier/Knn.js.map +0 -1
- package/dist/Classifier/Lda.d.ts +0 -13
- package/dist/Classifier/Lda.js +0 -55
- package/dist/Classifier/Lda.js.map +0 -1
- package/dist/Classifier/LinearPerceptron.d.ts +0 -15
- package/dist/Classifier/LinearPerceptron.js +0 -35
- package/dist/Classifier/LinearPerceptron.js.map +0 -1
- package/dist/Classifier/MultiLayerPerceptron.d.ts +0 -15
- package/dist/Classifier/MultiLayerPerceptron.js +0 -35
- package/dist/Classifier/MultiLayerPerceptron.js.map +0 -1
- package/dist/Classifier/NaiveBayes.d.ts +0 -26
- package/dist/Classifier/NaiveBayes.js +0 -70
- package/dist/Classifier/NaiveBayes.js.map +0 -1
- package/dist/Classifier/Qda.d.ts +0 -13
- package/dist/Classifier/Qda.js +0 -53
- package/dist/Classifier/Qda.js.map +0 -1
- package/dist/Classifier/RandomClassifier.d.ts +0 -13
- package/dist/Classifier/RandomClassifier.js +0 -35
- package/dist/Classifier/RandomClassifier.js.map +0 -1
- package/dist/Classifier/RandomForest.js.map +0 -1
- package/dist/Model/DeepNetworkModel.d.ts +0 -45
- package/dist/Model/DeepNetworkModel.js.map +0 -1
- package/dist/Model/GaussianModel.js.map +0 -1
- package/dist/Model/KMeansModel.d.ts +0 -28
- package/dist/Model/KMeansModel.js +0 -61
- package/dist/Model/KMeansModel.js.map +0 -1
- package/dist/Model/KnnInstance.js.map +0 -1
- package/dist/Model/KnnModel.js.map +0 -1
- package/dist/Model/LdaModel.d.ts +0 -28
- package/dist/Model/LdaModel.js +0 -67
- package/dist/Model/LdaModel.js.map +0 -1
- package/dist/Model/LinearPerceptronModel.d.ts +0 -24
- package/dist/Model/LinearPerceptronModel.js +0 -91
- package/dist/Model/LinearPerceptronModel.js.map +0 -1
- package/dist/Model/MultiLayerPerceptronModel.d.ts +0 -33
- package/dist/Model/MultiLayerPerceptronModel.js.map +0 -1
- package/dist/Model/NaiveBayesModel.js.map +0 -1
- package/dist/Model/NeuralNetworkModel.js.map +0 -1
- package/dist/Model/QdaModel.d.ts +0 -27
- package/dist/Model/QdaModel.js +0 -63
- package/dist/Model/QdaModel.js.map +0 -1
- package/dist/Model/TreeEnsembleModel.d.ts +0 -22
- package/dist/Model/TreeEnsembleModel.js.map +0 -1
- package/index.js +0 -100
- package/source/Classifier/C45.ts +0 -34
- package/source/Classifier/C45Stump.ts +0 -23
- package/source/Classifier/Classifier.ts +0 -72
- package/source/Classifier/DeepNetwork.ts +0 -26
- package/source/Classifier/Dummy.ts +0 -23
- package/source/Classifier/KMeans.ts +0 -30
- package/source/Classifier/Knn.ts +0 -25
- package/source/Classifier/Lda.ts +0 -47
- package/source/Classifier/LinearPerceptron.ts +0 -27
- package/source/Classifier/MultiLayerPerceptron.ts +0 -27
- package/source/Classifier/NaiveBayes.ts +0 -66
- package/source/Classifier/Qda.ts +0 -46
- package/source/Classifier/RandomClassifier.ts +0 -26
- package/source/Model/KMeansModel.ts +0 -56
- package/source/Model/LdaModel.ts +0 -62
- package/source/Model/LinearPerceptronModel.ts +0 -83
- package/source/Model/QdaModel.ts +0 -57
- /package/dist/Model/{KnnInstance.js → NonParametric/KnnInstance.js} +0 -0
|
@@ -0,0 +1,73 @@
|
|
|
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", "./GaussianModel", "../../InstanceList/InstanceList", "nlptoolkit-util/dist/FileContents", "../../DistanceMetric/EuclidianDistance", "../../InstanceList/Partition"], factory);
|
|
8
|
+
}
|
|
9
|
+
})(function (require, exports) {
|
|
10
|
+
"use strict";
|
|
11
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
+
exports.KMeansModel = void 0;
|
|
13
|
+
const GaussianModel_1 = require("./GaussianModel");
|
|
14
|
+
const InstanceList_1 = require("../../InstanceList/InstanceList");
|
|
15
|
+
const FileContents_1 = require("nlptoolkit-util/dist/FileContents");
|
|
16
|
+
const EuclidianDistance_1 = require("../../DistanceMetric/EuclidianDistance");
|
|
17
|
+
const Partition_1 = require("../../InstanceList/Partition");
|
|
18
|
+
class KMeansModel extends GaussianModel_1.GaussianModel {
|
|
19
|
+
/**
|
|
20
|
+
* Loads a K-means model from an input model file.
|
|
21
|
+
* @param fileName Model file name.
|
|
22
|
+
*/
|
|
23
|
+
constructor2(fileName) {
|
|
24
|
+
this.distanceMetric = new EuclidianDistance_1.EuclidianDistance();
|
|
25
|
+
let input = new FileContents_1.FileContents(fileName);
|
|
26
|
+
this.loadPriorDistribution(input);
|
|
27
|
+
this.classMeans = this.loadInstanceList(input);
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* The calculateMetric method takes an {@link Instance} and a String as inputs. It loops through the class means, if
|
|
31
|
+
* the corresponding class label is same as the given String it returns the negated distance between given instance and the
|
|
32
|
+
* current item of class means. Otherwise it returns the smallest negative number.
|
|
33
|
+
*
|
|
34
|
+
* @param instance {@link Instance} input.
|
|
35
|
+
* @param Ci String input.
|
|
36
|
+
* @return The negated distance between given instance and the current item of class means.
|
|
37
|
+
*/
|
|
38
|
+
calculateMetric(instance, Ci) {
|
|
39
|
+
for (let i = 0; i < this.classMeans.size(); i++) {
|
|
40
|
+
if (this.classMeans.get(i).getClassLabel() == Ci) {
|
|
41
|
+
return -this.distanceMetric.distance(instance, this.classMeans.get(i));
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
return Number.NEGATIVE_INFINITY;
|
|
45
|
+
}
|
|
46
|
+
saveTxt(fileName) {
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* Training algorithm for K-Means classifier. K-Means finds the mean of each class for training.
|
|
50
|
+
*
|
|
51
|
+
* @param trainSet Training data given to the algorithm.
|
|
52
|
+
* @param parameters distanceMetric: distance metric used to calculate the distance between two instances.
|
|
53
|
+
*/
|
|
54
|
+
train(trainSet, parameters) {
|
|
55
|
+
this.priorDistribution = trainSet.classDistribution();
|
|
56
|
+
this.classMeans = new InstanceList_1.InstanceList();
|
|
57
|
+
let classLists = new Partition_1.Partition(trainSet);
|
|
58
|
+
for (let i = 0; i < classLists.size(); i++) {
|
|
59
|
+
this.classMeans.add(classLists.get(i).average());
|
|
60
|
+
}
|
|
61
|
+
this.distanceMetric = parameters.getDistanceMetric();
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* Loads the K-means model from an input file.
|
|
65
|
+
* @param fileName File name of the K-means model.
|
|
66
|
+
*/
|
|
67
|
+
loadModel(fileName) {
|
|
68
|
+
this.constructor2(fileName);
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
exports.KMeansModel = KMeansModel;
|
|
72
|
+
});
|
|
73
|
+
//# sourceMappingURL=KMeansModel.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"KMeansModel.js","sourceRoot":"","sources":["../../../source/Model/Parametric/KMeansModel.ts"],"names":[],"mappings":";;;;;;;;;;;;IAAA,mDAA8C;IAC9C,kEAA6D;IAG7D,oEAA+D;IAC/D,8EAAyE;IAEzE,4DAAuD;IAGvD,MAAa,WAAY,SAAQ,6BAAa;QAK1C;;;WAGG;QACH,YAAY,CAAC,QAAgB;YACzB,IAAI,CAAC,cAAc,GAAG,IAAI,qCAAiB,EAAE,CAAA;YAC7C,IAAI,KAAK,GAAG,IAAI,2BAAY,CAAC,QAAQ,CAAC,CAAA;YACtC,IAAI,CAAC,qBAAqB,CAAC,KAAK,CAAC,CAAA;YACjC,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAA;QAClD,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;QAED;;;;;WAKG;QACH,KAAK,CAAC,QAAsB,EAAE,UAAqB;YAC/C,IAAI,CAAC,iBAAiB,GAAG,QAAQ,CAAC,iBAAiB,EAAE,CAAC;YACtD,IAAI,CAAC,UAAU,GAAG,IAAI,2BAAY,EAAE,CAAC;YACrC,IAAI,UAAU,GAAG,IAAI,qBAAS,CAAC,QAAQ,CAAC,CAAC;YACzC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,UAAU,CAAC,IAAI,EAAE,EAAE,CAAC,EAAE,EAAE;gBACxC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC;aACpD;YACD,IAAI,CAAC,cAAc,GAAsB,UAAW,CAAC,iBAAiB,EAAE,CAAA;QAC5E,CAAC;QAED;;;WAGG;QACH,SAAS,CAAC,QAAgB;YACtB,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAA;QAC/B,CAAC;KAEJ;IA7DD,kCA6DC"}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import { GaussianModel } from "./GaussianModel";
|
|
2
|
+
import { Vector } from "nlptoolkit-math/dist/Vector";
|
|
3
|
+
import { Instance } from "../../Instance/Instance";
|
|
4
|
+
import { FileContents } from "nlptoolkit-util/dist/FileContents";
|
|
5
|
+
import { InstanceList } from "../../InstanceList/InstanceList";
|
|
6
|
+
import { Parameter } from "../../Parameter/Parameter";
|
|
7
|
+
export declare class LdaModel extends GaussianModel {
|
|
8
|
+
protected w0: Map<string, number>;
|
|
9
|
+
protected w: Map<string, Vector>;
|
|
10
|
+
/**
|
|
11
|
+
* Loads a Linear Discriminant Analysis model from an input model file.
|
|
12
|
+
* @param fileName Model file name.
|
|
13
|
+
*/
|
|
14
|
+
constructor2(fileName: string): void;
|
|
15
|
+
/**
|
|
16
|
+
* The calculateMetric method takes an {@link Instance} and a String as inputs. It returns the dot product of given Instance
|
|
17
|
+
* and wi plus w0i.
|
|
18
|
+
*
|
|
19
|
+
* @param instance {@link Instance} input.
|
|
20
|
+
* @param Ci String input.
|
|
21
|
+
* @return The dot product of given Instance and wi plus w0i.
|
|
22
|
+
*/
|
|
23
|
+
calculateMetric(instance: Instance, Ci: string): number;
|
|
24
|
+
/**
|
|
25
|
+
* Loads w0 and w hash maps from an input file. The number of items in the hash map is given by the parameter size.
|
|
26
|
+
* @param input Input file
|
|
27
|
+
* @param size Number of items in the hash map read.
|
|
28
|
+
* @throws IOException If the file can not be read, it throws IOException.
|
|
29
|
+
*/
|
|
30
|
+
loadWandW0(input: FileContents, size: number): void;
|
|
31
|
+
saveTxt(fileName: string): void;
|
|
32
|
+
/**
|
|
33
|
+
* Training algorithm for the linear discriminant analysis classifier (Introduction to Machine Learning, Alpaydin, 2015).
|
|
34
|
+
*
|
|
35
|
+
* @param trainSet Training data given to the algorithm.
|
|
36
|
+
* @param parameters -
|
|
37
|
+
*/
|
|
38
|
+
train(trainSet: InstanceList, parameters: Parameter): void;
|
|
39
|
+
/**
|
|
40
|
+
* Loads the Lda model from an input file.
|
|
41
|
+
* @param fileName File name of the Lda model.
|
|
42
|
+
*/
|
|
43
|
+
loadModel(fileName: string): void;
|
|
44
|
+
}
|
|
@@ -0,0 +1,98 @@
|
|
|
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", "./GaussianModel", "nlptoolkit-math/dist/Vector", "nlptoolkit-util/dist/FileContents", "../../InstanceList/Partition", "nlptoolkit-math/dist/Matrix"], factory);
|
|
8
|
+
}
|
|
9
|
+
})(function (require, exports) {
|
|
10
|
+
"use strict";
|
|
11
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
+
exports.LdaModel = void 0;
|
|
13
|
+
const GaussianModel_1 = require("./GaussianModel");
|
|
14
|
+
const Vector_1 = require("nlptoolkit-math/dist/Vector");
|
|
15
|
+
const FileContents_1 = require("nlptoolkit-util/dist/FileContents");
|
|
16
|
+
const Partition_1 = require("../../InstanceList/Partition");
|
|
17
|
+
const Matrix_1 = require("nlptoolkit-math/dist/Matrix");
|
|
18
|
+
class LdaModel extends GaussianModel_1.GaussianModel {
|
|
19
|
+
/**
|
|
20
|
+
* Loads a Linear Discriminant Analysis model from an input model file.
|
|
21
|
+
* @param fileName Model file name.
|
|
22
|
+
*/
|
|
23
|
+
constructor2(fileName) {
|
|
24
|
+
let input = new FileContents_1.FileContents(fileName);
|
|
25
|
+
let size = this.loadPriorDistribution(input);
|
|
26
|
+
this.loadWandW0(input, size);
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* The calculateMetric method takes an {@link Instance} and a String as inputs. It returns the dot product of given Instance
|
|
30
|
+
* and wi plus w0i.
|
|
31
|
+
*
|
|
32
|
+
* @param instance {@link Instance} input.
|
|
33
|
+
* @param Ci String input.
|
|
34
|
+
* @return The dot product of given Instance and wi plus w0i.
|
|
35
|
+
*/
|
|
36
|
+
calculateMetric(instance, Ci) {
|
|
37
|
+
let xi = instance.toVector();
|
|
38
|
+
let wi = this.w.get(Ci);
|
|
39
|
+
let w0i = this.w0.get(Ci);
|
|
40
|
+
return wi.dotProduct(xi) + w0i;
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* Loads w0 and w hash maps from an input file. The number of items in the hash map is given by the parameter size.
|
|
44
|
+
* @param input Input file
|
|
45
|
+
* @param size Number of items in the hash map read.
|
|
46
|
+
* @throws IOException If the file can not be read, it throws IOException.
|
|
47
|
+
*/
|
|
48
|
+
loadWandW0(input, size) {
|
|
49
|
+
this.w0 = new Map();
|
|
50
|
+
for (let i = 0; i < size; i++) {
|
|
51
|
+
let line = input.readLine();
|
|
52
|
+
let items = line.split(" ");
|
|
53
|
+
this.w0.set(items[0], parseFloat(items[1]));
|
|
54
|
+
}
|
|
55
|
+
this.w = this.loadVectors(input, size);
|
|
56
|
+
}
|
|
57
|
+
saveTxt(fileName) {
|
|
58
|
+
}
|
|
59
|
+
/**
|
|
60
|
+
* Training algorithm for the linear discriminant analysis classifier (Introduction to Machine Learning, Alpaydin, 2015).
|
|
61
|
+
*
|
|
62
|
+
* @param trainSet Training data given to the algorithm.
|
|
63
|
+
* @param parameters -
|
|
64
|
+
*/
|
|
65
|
+
train(trainSet, parameters) {
|
|
66
|
+
this.w0 = new Map();
|
|
67
|
+
this.w = new Map();
|
|
68
|
+
this.priorDistribution = trainSet.classDistribution();
|
|
69
|
+
let classLists = new Partition_1.Partition(trainSet);
|
|
70
|
+
let covariance = new Matrix_1.Matrix(trainSet.get(0).continuousAttributeSize(), trainSet.get(0).continuousAttributeSize());
|
|
71
|
+
for (let i = 0; i < classLists.size(); i++) {
|
|
72
|
+
let averageVector = new Vector_1.Vector(classLists.get(i).continuousAttributeAverage());
|
|
73
|
+
let classCovariance = classLists.get(i).covariance(averageVector);
|
|
74
|
+
classCovariance.multiplyWithConstant(classLists.get(i).size() - 1);
|
|
75
|
+
covariance.add(classCovariance);
|
|
76
|
+
}
|
|
77
|
+
covariance.divideByConstant(trainSet.size() - classLists.size());
|
|
78
|
+
covariance.inverse();
|
|
79
|
+
for (let i = 0; i < classLists.size(); i++) {
|
|
80
|
+
let Ci = classLists.get(i).getClassLabel();
|
|
81
|
+
let averageVector = new Vector_1.Vector(classLists.get(i).continuousAttributeAverage());
|
|
82
|
+
let wi = covariance.multiplyWithVectorFromRight(averageVector);
|
|
83
|
+
this.w.set(Ci, wi);
|
|
84
|
+
let w0i = -0.5 * wi.dotProduct(averageVector) + Math.log(this.priorDistribution.getProbability(Ci));
|
|
85
|
+
this.w0.set(Ci, w0i);
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
/**
|
|
89
|
+
* Loads the Lda model from an input file.
|
|
90
|
+
* @param fileName File name of the Lda model.
|
|
91
|
+
*/
|
|
92
|
+
loadModel(fileName) {
|
|
93
|
+
this.constructor2(fileName);
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
exports.LdaModel = LdaModel;
|
|
97
|
+
});
|
|
98
|
+
//# sourceMappingURL=LdaModel.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"LdaModel.js","sourceRoot":"","sources":["../../../source/Model/Parametric/LdaModel.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,19 +1,16 @@
|
|
|
1
1
|
import { GaussianModel } from "./GaussianModel";
|
|
2
|
-
import { Instance } from "
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
2
|
+
import { Instance } from "../../Instance/Instance";
|
|
3
|
+
import { InstanceList } from "../../InstanceList/InstanceList";
|
|
4
|
+
import { Parameter } from "../../Parameter/Parameter";
|
|
5
5
|
export declare class NaiveBayesModel extends GaussianModel {
|
|
6
6
|
private classMeans;
|
|
7
7
|
private classDeviations;
|
|
8
|
-
private
|
|
8
|
+
private classAttributeDistributions;
|
|
9
9
|
/**
|
|
10
|
-
*
|
|
11
|
-
*
|
|
12
|
-
* @param priorDistribution {@link DiscreteDistribution} input.
|
|
13
|
-
* @param classMeans A {@link Map} of String and {@link Vector}.
|
|
14
|
-
* @param classDeviations A {@link Map} of String and {@link Vector}.
|
|
10
|
+
* Loads a naive Bayes model from an input model file.
|
|
11
|
+
* @param fileName Model file name.
|
|
15
12
|
*/
|
|
16
|
-
|
|
13
|
+
constructor3(fileName: string): void;
|
|
17
14
|
/**
|
|
18
15
|
* The calculateMetric method takes an {@link Instance} and a String as inputs, and it returns the log likelihood of
|
|
19
16
|
* these inputs.
|
|
@@ -45,4 +42,27 @@ export declare class NaiveBayesModel extends GaussianModel {
|
|
|
45
42
|
*/
|
|
46
43
|
private logLikelihoodDiscrete;
|
|
47
44
|
saveTxt(fileName: string): void;
|
|
45
|
+
/**
|
|
46
|
+
* Training algorithm for Naive Bayes algorithm with a continuous data set.
|
|
47
|
+
*
|
|
48
|
+
* @param classLists Instances are divided into K lists, where each list contains only instances from a single class
|
|
49
|
+
*/
|
|
50
|
+
private trainContinuousVersion;
|
|
51
|
+
/**
|
|
52
|
+
* Training algorithm for Naive Bayes algorithm with a discrete data set.
|
|
53
|
+
* @param classLists Instances are divided into K lists, where each list contains only instances from a single class
|
|
54
|
+
*/
|
|
55
|
+
private trainDiscreteVersion;
|
|
56
|
+
/**
|
|
57
|
+
* Training algorithm for Naive Bayes algorithm. It basically calls trainContinuousVersion for continuous data sets,
|
|
58
|
+
* trainDiscreteVersion for discrete data sets.
|
|
59
|
+
* @param trainSet Training data given to the algorithm
|
|
60
|
+
* @param parameters -
|
|
61
|
+
*/
|
|
62
|
+
train(trainSet: InstanceList, parameters: Parameter): void;
|
|
63
|
+
/**
|
|
64
|
+
* Loads the naive Bayes model from an input file.
|
|
65
|
+
* @param fileName File name of the naive Bayes model.
|
|
66
|
+
*/
|
|
67
|
+
loadModel(fileName: string): void;
|
|
48
68
|
}
|
|
@@ -4,44 +4,32 @@
|
|
|
4
4
|
if (v !== undefined) module.exports = v;
|
|
5
5
|
}
|
|
6
6
|
else if (typeof define === "function" && define.amd) {
|
|
7
|
-
define(["require", "exports", "./GaussianModel", "
|
|
7
|
+
define(["require", "exports", "./GaussianModel", "../../Attribute/DiscreteAttribute", "nlptoolkit-util/dist/FileContents", "../../InstanceList/Partition"], factory);
|
|
8
8
|
}
|
|
9
9
|
})(function (require, exports) {
|
|
10
10
|
"use strict";
|
|
11
11
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
12
|
exports.NaiveBayesModel = void 0;
|
|
13
13
|
const GaussianModel_1 = require("./GaussianModel");
|
|
14
|
-
const
|
|
14
|
+
const DiscreteAttribute_1 = require("../../Attribute/DiscreteAttribute");
|
|
15
15
|
const FileContents_1 = require("nlptoolkit-util/dist/FileContents");
|
|
16
|
+
const Partition_1 = require("../../InstanceList/Partition");
|
|
16
17
|
class NaiveBayesModel extends GaussianModel_1.GaussianModel {
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
*
|
|
20
|
-
* @param priorDistribution {@link DiscreteDistribution} input.
|
|
21
|
-
* @param classMeans A {@link Map} of String and {@link Vector}.
|
|
22
|
-
* @param classDeviations A {@link Map} of String and {@link Vector}.
|
|
23
|
-
*/
|
|
24
|
-
constructor(priorDistribution, classMeans, classDeviations) {
|
|
25
|
-
super();
|
|
18
|
+
constructor() {
|
|
19
|
+
super(...arguments);
|
|
26
20
|
this.classMeans = undefined;
|
|
27
21
|
this.classDeviations = undefined;
|
|
28
22
|
this.classAttributeDistributions = undefined;
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
else {
|
|
40
|
-
let input = new FileContents_1.FileContents(priorDistribution);
|
|
41
|
-
let size = this.loadPriorDistribution(input);
|
|
42
|
-
this.classMeans = this.loadVectors(input, size);
|
|
43
|
-
this.classDeviations = this.loadVectors(input, size);
|
|
44
|
-
}
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* Loads a naive Bayes model from an input model file.
|
|
26
|
+
* @param fileName Model file name.
|
|
27
|
+
*/
|
|
28
|
+
constructor3(fileName) {
|
|
29
|
+
let input = new FileContents_1.FileContents(fileName);
|
|
30
|
+
let size = this.loadPriorDistribution(input);
|
|
31
|
+
this.classMeans = this.loadVectors(input, size);
|
|
32
|
+
this.classDeviations = this.loadVectors(input, size);
|
|
45
33
|
}
|
|
46
34
|
/**
|
|
47
35
|
* The calculateMetric method takes an {@link Instance} and a String as inputs, and it returns the log likelihood of
|
|
@@ -101,6 +89,55 @@
|
|
|
101
89
|
}
|
|
102
90
|
saveTxt(fileName) {
|
|
103
91
|
}
|
|
92
|
+
/**
|
|
93
|
+
* Training algorithm for Naive Bayes algorithm with a continuous data set.
|
|
94
|
+
*
|
|
95
|
+
* @param classLists Instances are divided into K lists, where each list contains only instances from a single class
|
|
96
|
+
*/
|
|
97
|
+
trainContinuousVersion(classLists) {
|
|
98
|
+
this.classMeans = new Map();
|
|
99
|
+
this.classDeviations = new Map();
|
|
100
|
+
for (let i = 0; i < classLists.size(); i++) {
|
|
101
|
+
let classLabel = classLists.get(i).getClassLabel();
|
|
102
|
+
let averageVector = classLists.get(i).average().toVector();
|
|
103
|
+
this.classMeans.set(classLabel, averageVector);
|
|
104
|
+
let standardDeviationVector = classLists.get(i).standardDeviation().toVector();
|
|
105
|
+
this.classDeviations.set(classLabel, standardDeviationVector);
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
/**
|
|
109
|
+
* Training algorithm for Naive Bayes algorithm with a discrete data set.
|
|
110
|
+
* @param classLists Instances are divided into K lists, where each list contains only instances from a single class
|
|
111
|
+
*/
|
|
112
|
+
trainDiscreteVersion(classLists) {
|
|
113
|
+
this.classAttributeDistributions = new Map();
|
|
114
|
+
for (let i = 0; i < classLists.size(); i++) {
|
|
115
|
+
this.classAttributeDistributions.set(classLists.get(i).getClassLabel(), classLists.get(i).allAttributesDistribution());
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
/**
|
|
119
|
+
* Training algorithm for Naive Bayes algorithm. It basically calls trainContinuousVersion for continuous data sets,
|
|
120
|
+
* trainDiscreteVersion for discrete data sets.
|
|
121
|
+
* @param trainSet Training data given to the algorithm
|
|
122
|
+
* @param parameters -
|
|
123
|
+
*/
|
|
124
|
+
train(trainSet, parameters) {
|
|
125
|
+
this.priorDistribution = trainSet.classDistribution();
|
|
126
|
+
let classLists = new Partition_1.Partition(trainSet);
|
|
127
|
+
if (classLists.get(0).get(0).getAttribute(0) instanceof DiscreteAttribute_1.DiscreteAttribute) {
|
|
128
|
+
this.trainDiscreteVersion(classLists);
|
|
129
|
+
}
|
|
130
|
+
else {
|
|
131
|
+
this.trainContinuousVersion(classLists);
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
/**
|
|
135
|
+
* Loads the naive Bayes model from an input file.
|
|
136
|
+
* @param fileName File name of the naive Bayes model.
|
|
137
|
+
*/
|
|
138
|
+
loadModel(fileName) {
|
|
139
|
+
this.constructor3(fileName);
|
|
140
|
+
}
|
|
104
141
|
}
|
|
105
142
|
exports.NaiveBayesModel = NaiveBayesModel;
|
|
106
143
|
});
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"NaiveBayesModel.js","sourceRoot":"","sources":["../../../source/Model/Parametric/NaiveBayesModel.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { LdaModel } from "./LdaModel";
|
|
2
|
+
import { Instance } from "../../Instance/Instance";
|
|
3
|
+
import { InstanceList } from "../../InstanceList/InstanceList";
|
|
4
|
+
import { Parameter } from "../../Parameter/Parameter";
|
|
5
|
+
export declare class QdaModel extends LdaModel {
|
|
6
|
+
private W;
|
|
7
|
+
constructor2(fileName: string): void;
|
|
8
|
+
/**
|
|
9
|
+
* The calculateMetric method takes an {@link Instance} and a String as inputs. It multiplies Matrix Wi with Vector xi
|
|
10
|
+
* then calculates the dot product of it with xi. Then, again it finds the dot product of wi and xi and returns the summation with w0i.
|
|
11
|
+
*
|
|
12
|
+
* @param instance {@link Instance} input.
|
|
13
|
+
* @param Ci String input.
|
|
14
|
+
* @return The result of Wi.multiplyWithVectorFromLeft(xi).dotProduct(xi) + wi.dotProduct(xi) + w0i.
|
|
15
|
+
*/
|
|
16
|
+
calculateMetric(instance: Instance, Ci: string): number;
|
|
17
|
+
saveTxt(fileName: string): void;
|
|
18
|
+
/**
|
|
19
|
+
* Training algorithm for the quadratic discriminant analysis classifier (Introduction to Machine Learning, Alpaydin, 2015).
|
|
20
|
+
*
|
|
21
|
+
* @param trainSet Training data given to the algorithm.
|
|
22
|
+
* @param parameters -
|
|
23
|
+
*/
|
|
24
|
+
train(trainSet: InstanceList, parameters: Parameter): void;
|
|
25
|
+
/**
|
|
26
|
+
* Loads the Qda model from an input file.
|
|
27
|
+
* @param fileName File name of the Qda model.
|
|
28
|
+
*/
|
|
29
|
+
loadModel(fileName: string): void;
|
|
30
|
+
}
|
|
@@ -0,0 +1,84 @@
|
|
|
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", "./LdaModel", "nlptoolkit-math/dist/Vector", "nlptoolkit-util/dist/FileContents", "../../InstanceList/Partition"], factory);
|
|
8
|
+
}
|
|
9
|
+
})(function (require, exports) {
|
|
10
|
+
"use strict";
|
|
11
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
+
exports.QdaModel = void 0;
|
|
13
|
+
const LdaModel_1 = require("./LdaModel");
|
|
14
|
+
const Vector_1 = require("nlptoolkit-math/dist/Vector");
|
|
15
|
+
const FileContents_1 = require("nlptoolkit-util/dist/FileContents");
|
|
16
|
+
const Partition_1 = require("../../InstanceList/Partition");
|
|
17
|
+
class QdaModel extends LdaModel_1.LdaModel {
|
|
18
|
+
constructor2(fileName) {
|
|
19
|
+
let input = new FileContents_1.FileContents(fileName);
|
|
20
|
+
let size = this.loadPriorDistribution(input);
|
|
21
|
+
this.loadWandW0(input, size);
|
|
22
|
+
this.W = new Map();
|
|
23
|
+
for (let i = 0; i < size; i++) {
|
|
24
|
+
let c = input.readLine();
|
|
25
|
+
let matrix = this.loadMatrix(input);
|
|
26
|
+
this.W.set(c, matrix);
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* The calculateMetric method takes an {@link Instance} and a String as inputs. It multiplies Matrix Wi with Vector xi
|
|
31
|
+
* then calculates the dot product of it with xi. Then, again it finds the dot product of wi and xi and returns the summation with w0i.
|
|
32
|
+
*
|
|
33
|
+
* @param instance {@link Instance} input.
|
|
34
|
+
* @param Ci String input.
|
|
35
|
+
* @return The result of Wi.multiplyWithVectorFromLeft(xi).dotProduct(xi) + wi.dotProduct(xi) + w0i.
|
|
36
|
+
*/
|
|
37
|
+
calculateMetric(instance, Ci) {
|
|
38
|
+
let xi = instance.toVector();
|
|
39
|
+
let Wi = this.W.get(Ci);
|
|
40
|
+
let wi = this.w.get(Ci);
|
|
41
|
+
let w0i = this.w0.get(Ci);
|
|
42
|
+
return Wi.multiplyWithVectorFromLeft(xi).dotProduct(xi) + wi.dotProduct(xi) + w0i;
|
|
43
|
+
}
|
|
44
|
+
saveTxt(fileName) {
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* Training algorithm for the quadratic discriminant analysis classifier (Introduction to Machine Learning, Alpaydin, 2015).
|
|
48
|
+
*
|
|
49
|
+
* @param trainSet Training data given to the algorithm.
|
|
50
|
+
* @param parameters -
|
|
51
|
+
*/
|
|
52
|
+
train(trainSet, parameters) {
|
|
53
|
+
let determinant = 0;
|
|
54
|
+
this.w0 = new Map();
|
|
55
|
+
this.w = new Map();
|
|
56
|
+
this.W = new Map();
|
|
57
|
+
let classLists = new Partition_1.Partition(trainSet);
|
|
58
|
+
this.priorDistribution = trainSet.classDistribution();
|
|
59
|
+
for (let i = 0; i < classLists.size(); i++) {
|
|
60
|
+
let Ci = classLists.get(i).getClassLabel();
|
|
61
|
+
let averageVector = new Vector_1.Vector(classLists.get(i).continuousAttributeAverage());
|
|
62
|
+
let classCovariance = classLists.get(i).covariance(averageVector);
|
|
63
|
+
determinant = classCovariance.determinant();
|
|
64
|
+
classCovariance.inverse();
|
|
65
|
+
let Wi = classCovariance.clone();
|
|
66
|
+
Wi.multiplyWithConstant(-0.5);
|
|
67
|
+
this.W.set(Ci, Wi);
|
|
68
|
+
let wi = classCovariance.multiplyWithVectorFromLeft(averageVector);
|
|
69
|
+
this.w.set(Ci, wi);
|
|
70
|
+
let w0i = -0.5 * (wi.dotProduct(averageVector) + Math.log(determinant)) + Math.log(this.priorDistribution.getProbability(Ci));
|
|
71
|
+
this.w0.set(Ci, w0i);
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
/**
|
|
75
|
+
* Loads the Qda model from an input file.
|
|
76
|
+
* @param fileName File name of the Qda model.
|
|
77
|
+
*/
|
|
78
|
+
loadModel(fileName) {
|
|
79
|
+
this.constructor2(fileName);
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
exports.QdaModel = QdaModel;
|
|
83
|
+
});
|
|
84
|
+
//# sourceMappingURL=QdaModel.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"QdaModel.js","sourceRoot":"","sources":["../../../source/Model/Parametric/QdaModel.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,10 +1,23 @@
|
|
|
1
1
|
import { Model } from "./Model";
|
|
2
2
|
import { Instance } from "../Instance/Instance";
|
|
3
|
+
import { InstanceList } from "../InstanceList/InstanceList";
|
|
4
|
+
import { Parameter } from "../Parameter/Parameter";
|
|
3
5
|
export declare class RandomModel extends Model {
|
|
4
|
-
private
|
|
6
|
+
private classLabels;
|
|
5
7
|
private random;
|
|
6
8
|
private seed;
|
|
7
|
-
|
|
9
|
+
/**
|
|
10
|
+
* A constructor that sets the class labels.
|
|
11
|
+
*
|
|
12
|
+
* @param classLabels An ArrayList of class labels.
|
|
13
|
+
* @param seed Seed of the random function.
|
|
14
|
+
*/
|
|
15
|
+
constructor1(classLabels: Array<string>, seed: number): void;
|
|
16
|
+
/**
|
|
17
|
+
* Loads a random classifier model from an input model file.
|
|
18
|
+
* @param fileName Model file name.
|
|
19
|
+
*/
|
|
20
|
+
constructor2(fileName: string): void;
|
|
8
21
|
/**
|
|
9
22
|
* The predict method gets an Instance as an input and retrieves the possible class labels as an ArrayList. Then selects a
|
|
10
23
|
* random number as an index and returns the class label at this selected index.
|
|
@@ -13,6 +26,23 @@ export declare class RandomModel extends Model {
|
|
|
13
26
|
* @return The class label at the randomly selected index.
|
|
14
27
|
*/
|
|
15
28
|
predict(instance: Instance): string;
|
|
29
|
+
/**
|
|
30
|
+
* Calculates the posterior probability distribution for the given instance according to random model.
|
|
31
|
+
* @param instance Instance for which posterior probability distribution is calculated.
|
|
32
|
+
* @return Posterior probability distribution for the given instance.
|
|
33
|
+
*/
|
|
16
34
|
predictProbability(instance: Instance): Map<string, number>;
|
|
17
35
|
saveTxt(fileName: string): void;
|
|
36
|
+
/**
|
|
37
|
+
* Training algorithm for random classifier.
|
|
38
|
+
*
|
|
39
|
+
* @param trainSet Training data given to the algorithm.
|
|
40
|
+
* @param parameters -
|
|
41
|
+
*/
|
|
42
|
+
train(trainSet: InstanceList, parameters: Parameter): void;
|
|
43
|
+
/**
|
|
44
|
+
* Loads the random classifier model from an input file.
|
|
45
|
+
* @param fileName File name of the random classifier model.
|
|
46
|
+
*/
|
|
47
|
+
loadModel(fileName: string): void;
|
|
18
48
|
}
|