Skip to content
GitLab
Projects
Groups
Snippets
Help
Loading...
Help
What's new
10
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
Open sidebar
Bruno López Trigo
ExpliClas-TFG
Commits
7a01bfa3
Commit
7a01bfa3
authored
Dec 13, 2018
by
Bruno López Trigo
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Engadidas cabeceiras de licencia e actualizada documentación
parent
0e1c7d2b
Changes
150
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
150 changed files
with
9333 additions
and
8128 deletions
+9333
-8128
codigo/expliclas-api/src/main/java/brunolopez/expliclas/builder/BuilderManager.java
...ain/java/brunolopez/expliclas/builder/BuilderManager.java
+24
-3
codigo/expliclas-api/src/main/java/brunolopez/expliclas/builder/BuilderManagerImpl.java
...java/brunolopez/expliclas/builder/BuilderManagerImpl.java
+30
-12
codigo/expliclas-api/src/main/java/brunolopez/expliclas/classifiers/ClassifierManager.java
...a/brunolopez/expliclas/classifiers/ClassifierManager.java
+18
-0
codigo/expliclas-api/src/main/java/brunolopez/expliclas/classifiers/ClassifierManagerImpl.java
...unolopez/expliclas/classifiers/ClassifierManagerImpl.java
+933
-884
codigo/expliclas-api/src/main/java/brunolopez/expliclas/classifiers/MatrixBuilder.java
.../java/brunolopez/expliclas/classifiers/MatrixBuilder.java
+133
-112
codigo/expliclas-api/src/main/java/brunolopez/expliclas/classifiers/RuleBuilder.java
...in/java/brunolopez/expliclas/classifiers/RuleBuilder.java
+60
-43
codigo/expliclas-api/src/main/java/brunolopez/expliclas/classifiers/RuleInterpreter.java
...ava/brunolopez/expliclas/classifiers/RuleInterpreter.java
+53
-34
codigo/expliclas-api/src/main/java/brunolopez/expliclas/classifiers/TreeBuilder.java
...in/java/brunolopez/expliclas/classifiers/TreeBuilder.java
+1097
-1033
codigo/expliclas-api/src/main/java/brunolopez/expliclas/classifiers/TreeInterpreter.java
...ava/brunolopez/expliclas/classifiers/TreeInterpreter.java
+516
-472
codigo/expliclas-api/src/main/java/brunolopez/expliclas/datasets/DatasetManager.java
...in/java/brunolopez/expliclas/datasets/DatasetManager.java
+35
-9
codigo/expliclas-api/src/main/java/brunolopez/expliclas/datasets/DatasetManagerImpl.java
...ava/brunolopez/expliclas/datasets/DatasetManagerImpl.java
+293
-271
codigo/expliclas-api/src/main/java/brunolopez/expliclas/datasets/FormatChecker.java
...ain/java/brunolopez/expliclas/datasets/FormatChecker.java
+123
-106
codigo/expliclas-api/src/main/java/brunolopez/expliclas/exceptions/ConflictEx.java
...main/java/brunolopez/expliclas/exceptions/ConflictEx.java
+23
-5
codigo/expliclas-api/src/main/java/brunolopez/expliclas/exceptions/FormatEx.java
...c/main/java/brunolopez/expliclas/exceptions/FormatEx.java
+22
-4
codigo/expliclas-api/src/main/java/brunolopez/expliclas/exceptions/NotAllowedEx.java
...in/java/brunolopez/expliclas/exceptions/NotAllowedEx.java
+22
-4
codigo/expliclas-api/src/main/java/brunolopez/expliclas/exceptions/NotFoundEx.java
...main/java/brunolopez/expliclas/exceptions/NotFoundEx.java
+23
-6
codigo/expliclas-api/src/main/java/brunolopez/expliclas/explainer/ClauseGenerator.java
.../java/brunolopez/expliclas/explainer/ClauseGenerator.java
+22
-2
codigo/expliclas-api/src/main/java/brunolopez/expliclas/explainer/ClauseGeneratorEn.java
...ava/brunolopez/expliclas/explainer/ClauseGeneratorEn.java
+30
-12
codigo/expliclas-api/src/main/java/brunolopez/expliclas/explainer/ClauseGeneratorEs.java
...ava/brunolopez/expliclas/explainer/ClauseGeneratorEs.java
+29
-11
codigo/expliclas-api/src/main/java/brunolopez/expliclas/explainer/ClauseGeneratorGl.java
...ava/brunolopez/expliclas/explainer/ClauseGeneratorGl.java
+29
-11
codigo/expliclas-api/src/main/java/brunolopez/expliclas/explainer/ConfusionAnalyzer.java
...ava/brunolopez/expliclas/explainer/ConfusionAnalyzer.java
+119
-96
codigo/expliclas-api/src/main/java/brunolopez/expliclas/explainer/ExplainerManager.java
...java/brunolopez/expliclas/explainer/ExplainerManager.java
+30
-5
codigo/expliclas-api/src/main/java/brunolopez/expliclas/explainer/ExplainerManagerImpl.java
.../brunolopez/expliclas/explainer/ExplainerManagerImpl.java
+64
-43
codigo/expliclas-api/src/main/java/brunolopez/expliclas/explainer/InfoExtractor.java
...in/java/brunolopez/expliclas/explainer/InfoExtractor.java
+56
-40
codigo/expliclas-api/src/main/java/brunolopez/expliclas/explainer/InfoExtractorMatrix.java
...a/brunolopez/expliclas/explainer/InfoExtractorMatrix.java
+76
-54
codigo/expliclas-api/src/main/java/brunolopez/expliclas/explainer/InfoExtractorTree.java
...ava/brunolopez/expliclas/explainer/InfoExtractorTree.java
+288
-250
codigo/expliclas-api/src/main/java/brunolopez/expliclas/filters/CORSFilter.java
...rc/main/java/brunolopez/expliclas/filters/CORSFilter.java
+8
-8
codigo/expliclas-api/src/main/java/brunolopez/expliclas/filters/DatasetView.java
...c/main/java/brunolopez/expliclas/filters/DatasetView.java
+26
-6
codigo/expliclas-api/src/main/java/brunolopez/expliclas/filters/TokenFilter.java
...c/main/java/brunolopez/expliclas/filters/TokenFilter.java
+50
-45
codigo/expliclas-api/src/main/java/brunolopez/expliclas/filters/TokenNeeded.java
...c/main/java/brunolopez/expliclas/filters/TokenNeeded.java
+3
-3
codigo/expliclas-api/src/main/java/brunolopez/expliclas/models/BuildParams.java
...rc/main/java/brunolopez/expliclas/models/BuildParams.java
+21
-3
codigo/expliclas-api/src/main/java/brunolopez/expliclas/models/Dataset.java
...pi/src/main/java/brunolopez/expliclas/models/Dataset.java
+48
-30
codigo/expliclas-api/src/main/java/brunolopez/expliclas/models/DatasetConfig.java
.../main/java/brunolopez/expliclas/models/DatasetConfig.java
+112
-94
codigo/expliclas-api/src/main/java/brunolopez/expliclas/models/Explanation.java
...rc/main/java/brunolopez/expliclas/models/Explanation.java
+51
-33
codigo/expliclas-api/src/main/java/brunolopez/expliclas/models/GlobalConfig.java
...c/main/java/brunolopez/expliclas/models/GlobalConfig.java
+93
-76
codigo/expliclas-api/src/main/java/brunolopez/expliclas/models/Instance.java
...i/src/main/java/brunolopez/expliclas/models/Instance.java
+63
-45
codigo/expliclas-api/src/main/java/brunolopez/expliclas/models/Line.java
...s-api/src/main/java/brunolopez/expliclas/models/Line.java
+41
-23
codigo/expliclas-api/src/main/java/brunolopez/expliclas/models/Matrix.java
...api/src/main/java/brunolopez/expliclas/models/Matrix.java
+133
-115
codigo/expliclas-api/src/main/java/brunolopez/expliclas/models/ModifiedDataset.java
...ain/java/brunolopez/expliclas/models/ModifiedDataset.java
+29
-11
codigo/expliclas-api/src/main/java/brunolopez/expliclas/models/Position.java
...i/src/main/java/brunolopez/expliclas/models/Position.java
+67
-49
codigo/expliclas-api/src/main/java/brunolopez/expliclas/models/SimpleMessage.java
.../main/java/brunolopez/expliclas/models/SimpleMessage.java
+30
-12
codigo/expliclas-api/src/main/java/brunolopez/expliclas/models/fuzzy/BuildParamsFURIA.java
...a/brunolopez/expliclas/models/fuzzy/BuildParamsFURIA.java
+44
-27
codigo/expliclas-api/src/main/java/brunolopez/expliclas/models/fuzzy/CategoricComponent.java
...brunolopez/expliclas/models/fuzzy/CategoricComponent.java
+23
-5
codigo/expliclas-api/src/main/java/brunolopez/expliclas/models/fuzzy/ConsequentCoord.java
...va/brunolopez/expliclas/models/fuzzy/ConsequentCoord.java
+24
-5
codigo/expliclas-api/src/main/java/brunolopez/expliclas/models/fuzzy/Coordinate.java
...in/java/brunolopez/expliclas/models/fuzzy/Coordinate.java
+24
-5
codigo/expliclas-api/src/main/java/brunolopez/expliclas/models/fuzzy/NumericComponent.java
...a/brunolopez/expliclas/models/fuzzy/NumericComponent.java
+49
-31
codigo/expliclas-api/src/main/java/brunolopez/expliclas/models/fuzzy/Rule.java
...src/main/java/brunolopez/expliclas/models/fuzzy/Rule.java
+34
-16
codigo/expliclas-api/src/main/java/brunolopez/expliclas/models/fuzzy/RuleComponent.java
...java/brunolopez/expliclas/models/fuzzy/RuleComponent.java
+42
-26
codigo/expliclas-api/src/main/java/brunolopez/expliclas/models/fuzzy/Rules.java
...rc/main/java/brunolopez/expliclas/models/fuzzy/Rules.java
+37
-19
codigo/expliclas-api/src/main/java/brunolopez/expliclas/models/fuzzy/VisualComponent.java
...va/brunolopez/expliclas/models/fuzzy/VisualComponent.java
+28
-10
codigo/expliclas-api/src/main/java/brunolopez/expliclas/models/fuzzy/VisualRule.java
...in/java/brunolopez/expliclas/models/fuzzy/VisualRule.java
+30
-12
codigo/expliclas-api/src/main/java/brunolopez/expliclas/models/fuzzy/VisualRules.java
...n/java/brunolopez/expliclas/models/fuzzy/VisualRules.java
+35
-17
codigo/expliclas-api/src/main/java/brunolopez/expliclas/models/trees/Antecedent.java
...in/java/brunolopez/expliclas/models/trees/Antecedent.java
+64
-46
codigo/expliclas-api/src/main/java/brunolopez/expliclas/models/trees/Attribute.java
...ain/java/brunolopez/expliclas/models/trees/Attribute.java
+93
-77
codigo/expliclas-api/src/main/java/brunolopez/expliclas/models/trees/AttributeProperty.java
.../brunolopez/expliclas/models/trees/AttributeProperty.java
+32
-15
codigo/expliclas-api/src/main/java/brunolopez/expliclas/models/trees/BuildParamsJ48.java
...ava/brunolopez/expliclas/models/trees/BuildParamsJ48.java
+142
-122
codigo/expliclas-api/src/main/java/brunolopez/expliclas/models/trees/BuildParamsREP.java
...ava/brunolopez/expliclas/models/trees/BuildParamsREP.java
+133
-114
codigo/expliclas-api/src/main/java/brunolopez/expliclas/models/trees/BuildParamsRT.java
...java/brunolopez/expliclas/models/trees/BuildParamsRT.java
+133
-114
codigo/expliclas-api/src/main/java/brunolopez/expliclas/models/trees/CategoricAttribute.java
...brunolopez/expliclas/models/trees/CategoricAttribute.java
+37
-19
codigo/expliclas-api/src/main/java/brunolopez/expliclas/models/trees/CategoricNode.java
...java/brunolopez/expliclas/models/trees/CategoricNode.java
+93
-75
codigo/expliclas-api/src/main/java/brunolopez/expliclas/models/trees/CategoricProperty.java
.../brunolopez/expliclas/models/trees/CategoricProperty.java
+37
-19
codigo/expliclas-api/src/main/java/brunolopez/expliclas/models/trees/Classification.java
...ava/brunolopez/expliclas/models/trees/Classification.java
+109
-91
codigo/expliclas-api/src/main/java/brunolopez/expliclas/models/trees/Consequent.java
...in/java/brunolopez/expliclas/models/trees/Consequent.java
+75
-57
codigo/expliclas-api/src/main/java/brunolopez/expliclas/models/trees/ConsequentNode.java
...ava/brunolopez/expliclas/models/trees/ConsequentNode.java
+35
-17
codigo/expliclas-api/src/main/java/brunolopez/expliclas/models/trees/Interval.java
...main/java/brunolopez/expliclas/models/trees/Interval.java
+107
-88
codigo/expliclas-api/src/main/java/brunolopez/expliclas/models/trees/Node.java
...src/main/java/brunolopez/expliclas/models/trees/Node.java
+25
-9
codigo/expliclas-api/src/main/java/brunolopez/expliclas/models/trees/NumericAttribute.java
...a/brunolopez/expliclas/models/trees/NumericAttribute.java
+60
-44
codigo/expliclas-api/src/main/java/brunolopez/expliclas/models/trees/NumericNode.java
...n/java/brunolopez/expliclas/models/trees/NumericNode.java
+73
-55
codigo/expliclas-api/src/main/java/brunolopez/expliclas/models/trees/NumericProperty.java
...va/brunolopez/expliclas/models/trees/NumericProperty.java
+49
-31
codigo/expliclas-api/src/main/java/brunolopez/expliclas/models/trees/Property.java
...main/java/brunolopez/expliclas/models/trees/Property.java
+53
-37
codigo/expliclas-api/src/main/java/brunolopez/expliclas/models/trees/VisualNode.java
...in/java/brunolopez/expliclas/models/trees/VisualNode.java
+85
-68
codigo/expliclas-api/src/main/java/brunolopez/expliclas/services/Application.java
.../main/java/brunolopez/expliclas/services/Application.java
+20
-3
codigo/expliclas-api/src/main/java/brunolopez/expliclas/services/BuilderService.java
...in/java/brunolopez/expliclas/services/BuilderService.java
+196
-294
codigo/expliclas-api/src/main/java/brunolopez/expliclas/services/ClassifierService.java
...java/brunolopez/expliclas/services/ClassifierService.java
+796
-1228
codigo/expliclas-api/src/main/java/brunolopez/expliclas/services/DatasetService.java
...in/java/brunolopez/expliclas/services/DatasetService.java
+300
-443
codigo/expliclas-api/src/main/java/brunolopez/expliclas/services/ExplainerService.java
.../java/brunolopez/expliclas/services/ExplainerService.java
+185
-250
codigo/expliclas-api/src/main/java/brunolopez/expliclas/services/SessionService.java
...in/java/brunolopez/expliclas/services/SessionService.java
+99
-152
codigo/expliclas-api/src/main/java/brunolopez/expliclas/utils/FileManager.java
...src/main/java/brunolopez/expliclas/utils/FileManager.java
+330
-305
codigo/expliclas-api/src/main/java/brunolopez/expliclas/utils/MapperJSON.java
.../src/main/java/brunolopez/expliclas/utils/MapperJSON.java
+55
-37
codigo/expliclas-api/target/classes/brunolopez/expliclas/builder/BuilderManagerImpl.class
...ses/brunolopez/expliclas/builder/BuilderManagerImpl.class
+0
-0
codigo/expliclas-api/target/classes/brunolopez/expliclas/classifiers/ClassifierManagerImpl.class
...nolopez/expliclas/classifiers/ClassifierManagerImpl.class
+0
-0
codigo/expliclas-api/target/classes/brunolopez/expliclas/classifiers/MatrixBuilder.class
...sses/brunolopez/expliclas/classifiers/MatrixBuilder.class
+0
-0
codigo/expliclas-api/target/classes/brunolopez/expliclas/classifiers/TreeBuilder.class
...lasses/brunolopez/expliclas/classifiers/TreeBuilder.class
+0
-0
codigo/expliclas-api/target/classes/brunolopez/expliclas/classifiers/TreeInterpreter.class
...es/brunolopez/expliclas/classifiers/TreeInterpreter.class
+0
-0
codigo/expliclas-api/target/classes/brunolopez/expliclas/datasets/DatasetManagerImpl.class
...es/brunolopez/expliclas/datasets/DatasetManagerImpl.class
+0
-0
codigo/expliclas-api/target/classes/brunolopez/expliclas/datasets/FormatChecker.class
...classes/brunolopez/expliclas/datasets/FormatChecker.class
+0
-0
codigo/expliclas-api/target/classes/brunolopez/expliclas/exceptions/ConflictEx.class
.../classes/brunolopez/expliclas/exceptions/ConflictEx.class
+0
-0
codigo/expliclas-api/target/classes/brunolopez/expliclas/exceptions/FormatEx.class
...et/classes/brunolopez/expliclas/exceptions/FormatEx.class
+0
-0
codigo/expliclas-api/target/classes/brunolopez/expliclas/exceptions/NotAllowedEx.class
...lasses/brunolopez/expliclas/exceptions/NotAllowedEx.class
+0
-0
codigo/expliclas-api/target/classes/brunolopez/expliclas/exceptions/NotFoundEx.class
.../classes/brunolopez/expliclas/exceptions/NotFoundEx.class
+0
-0
codigo/expliclas-api/target/classes/brunolopez/expliclas/explainer/ClauseGenerator.class
...sses/brunolopez/expliclas/explainer/ClauseGenerator.class
+0
-0
codigo/expliclas-api/target/classes/brunolopez/expliclas/explainer/ClauseGeneratorEn.class
...es/brunolopez/expliclas/explainer/ClauseGeneratorEn.class
+0
-0
codigo/expliclas-api/target/classes/brunolopez/expliclas/explainer/ClauseGeneratorEs.class
...es/brunolopez/expliclas/explainer/ClauseGeneratorEs.class
+0
-0
codigo/expliclas-api/target/classes/brunolopez/expliclas/explainer/ClauseGeneratorGl.class
...es/brunolopez/expliclas/explainer/ClauseGeneratorGl.class
+0
-0
codigo/expliclas-api/target/classes/brunolopez/expliclas/explainer/ConfusionAnalyzer.class
...es/brunolopez/expliclas/explainer/ConfusionAnalyzer.class
+0
-0
codigo/expliclas-api/target/classes/brunolopez/expliclas/explainer/ExplainerManagerImpl.class
...brunolopez/expliclas/explainer/ExplainerManagerImpl.class
+0
-0
codigo/expliclas-api/target/classes/brunolopez/expliclas/filters/DatasetView$Instances.class
.../brunolopez/expliclas/filters/DatasetView$Instances.class
+0
-0
codigo/expliclas-api/target/classes/brunolopez/expliclas/filters/DatasetView$NoInstances.class
...runolopez/expliclas/filters/DatasetView$NoInstances.class
+0
-0
codigo/expliclas-api/target/classes/brunolopez/expliclas/filters/DatasetView.class
...et/classes/brunolopez/expliclas/filters/DatasetView.class
+0
-0
codigo/expliclas-api/target/classes/brunolopez/expliclas/filters/TokenFilter.class
...et/classes/brunolopez/expliclas/filters/TokenFilter.class
+0
-0
codigo/expliclas-api/target/classes/brunolopez/expliclas/models/Dataset.class
.../target/classes/brunolopez/expliclas/models/Dataset.class
+0
-0
codigo/expliclas-api/target/classes/brunolopez/expliclas/models/DatasetConfig.class
...t/classes/brunolopez/expliclas/models/DatasetConfig.class
+0
-0
codigo/expliclas-api/target/classes/brunolopez/expliclas/models/Explanation.class
...get/classes/brunolopez/expliclas/models/Explanation.class
+0
-0
codigo/expliclas-api/target/classes/brunolopez/expliclas/models/GlobalConfig.class
...et/classes/brunolopez/expliclas/models/GlobalConfig.class
+0
-0
codigo/expliclas-api/target/classes/brunolopez/expliclas/models/Instance.class
...target/classes/brunolopez/expliclas/models/Instance.class
+0
-0
codigo/expliclas-api/target/classes/brunolopez/expliclas/models/Line.class
...api/target/classes/brunolopez/expliclas/models/Line.class
+0
-0
codigo/expliclas-api/target/classes/brunolopez/expliclas/models/Matrix.class
...i/target/classes/brunolopez/expliclas/models/Matrix.class
+0
-0
codigo/expliclas-api/target/classes/brunolopez/expliclas/models/ModifiedDataset.class
...classes/brunolopez/expliclas/models/ModifiedDataset.class
+0
-0
codigo/expliclas-api/target/classes/brunolopez/expliclas/models/Position.class
...target/classes/brunolopez/expliclas/models/Position.class
+0
-0
codigo/expliclas-api/target/classes/brunolopez/expliclas/models/SimpleMessage.class
...t/classes/brunolopez/expliclas/models/SimpleMessage.class
+0
-0
codigo/expliclas-api/target/classes/brunolopez/expliclas/services/BuilderService.class
...lasses/brunolopez/expliclas/services/BuilderService.class
+0
-0
codigo/expliclas-api/target/classes/brunolopez/expliclas/services/ClassifierService.class
...ses/brunolopez/expliclas/services/ClassifierService.class
+0
-0
codigo/expliclas-api/target/classes/brunolopez/expliclas/services/DatasetService.class
...lasses/brunolopez/expliclas/services/DatasetService.class
+0
-0
codigo/expliclas-api/target/classes/brunolopez/expliclas/services/ExplainerService.class
...sses/brunolopez/expliclas/services/ExplainerService.class
+0
-0
codigo/expliclas-api/target/classes/brunolopez/expliclas/services/SessionService.class
...lasses/brunolopez/expliclas/services/SessionService.class
+0
-0
codigo/expliclas-api/target/classes/brunolopez/expliclas/utils/FileManager.class
...rget/classes/brunolopez/expliclas/utils/FileManager.class
+0
-0
codigo/expliclas-api/target/classes/brunolopez/expliclas/utils/MapperJSON.class
...arget/classes/brunolopez/expliclas/utils/MapperJSON.class
+0
-0
codigo/expliclas/src/components/builder/FormFURIA.js
codigo/expliclas/src/components/builder/FormFURIA.js
+18
-0
codigo/expliclas/src/components/builder/FormJ48.js
codigo/expliclas/src/components/builder/FormJ48.js
+18
-0
codigo/expliclas/src/components/builder/FormREP.js
codigo/expliclas/src/components/builder/FormREP.js
+18
-0
codigo/expliclas/src/components/builder/FormRandom.js
codigo/expliclas/src/components/builder/FormRandom.js
+18
-0
codigo/expliclas/src/components/classifiers/AlternativesSelect.js
...xpliclas/src/components/classifiers/AlternativesSelect.js
+18
-0
codigo/expliclas/src/components/classifiers/Attribute.js
codigo/expliclas/src/components/classifiers/Attribute.js
+18
-0
codigo/expliclas/src/components/classifiers/ConfigurationPanel.js
...xpliclas/src/components/classifiers/ConfigurationPanel.js
+18
-0
codigo/expliclas/src/components/classifiers/ExplanationPanel.js
.../expliclas/src/components/classifiers/ExplanationPanel.js
+18
-0
codigo/expliclas/src/components/classifiers/Instances.js
codigo/expliclas/src/components/classifiers/Instances.js
+18
-0
codigo/expliclas/src/components/classifiers/Matrix.js
codigo/expliclas/src/components/classifiers/Matrix.js
+18
-0
codigo/expliclas/src/components/classifiers/Rules.js
codigo/expliclas/src/components/classifiers/Rules.js
+18
-0
codigo/expliclas/src/components/classifiers/Tree.js
codigo/expliclas/src/components/classifiers/Tree.js
+18
-0
codigo/expliclas/src/components/datasets/DatasedAdd.js
codigo/expliclas/src/components/datasets/DatasedAdd.js
+18
-0
codigo/expliclas/src/components/datasets/DatasetCard.js
codigo/expliclas/src/components/datasets/DatasetCard.js
+18
-0
codigo/expliclas/src/components/global/API.js
codigo/expliclas/src/components/global/API.js
+18
-0
codigo/expliclas/src/components/global/CustomizedSnackbars.js
...go/expliclas/src/components/global/CustomizedSnackbars.js
+18
-0
codigo/expliclas/src/components/global/NavBar.js
codigo/expliclas/src/components/global/NavBar.js
+18
-0
codigo/expliclas/src/components/global/Routes.js
codigo/expliclas/src/components/global/Routes.js
+18
-0
codigo/expliclas/src/components/home/HomeCard.js
codigo/expliclas/src/components/home/HomeCard.js
+18
-0
codigo/expliclas/src/config-remoto.js
codigo/expliclas/src/config-remoto.js
+0
-21
codigo/expliclas/src/containers/ClassifierPanel.js
codigo/expliclas/src/containers/ClassifierPanel.js
+18
-0
codigo/expliclas/src/containers/Datasets.js
codigo/expliclas/src/containers/Datasets.js
+18
-0
codigo/expliclas/src/containers/FormBuilder.js
codigo/expliclas/src/containers/FormBuilder.js
+18
-0
codigo/expliclas/src/containers/Help.js
codigo/expliclas/src/containers/Help.js
+18
-0
codigo/expliclas/src/containers/Home.js
codigo/expliclas/src/containers/Home.js
+18
-0
codigo/expliclas/src/language.js
codigo/expliclas/src/language.js
+19
-1
documentacion/ExpliClas/main.aux
documentacion/ExpliClas/main.aux
+13
-7
documentacion/ExpliClas/main.bbl
documentacion/ExpliClas/main.bbl
+6
-0
documentacion/ExpliClas/main.log
documentacion/ExpliClas/main.log
+46
-36
documentacion/ExpliClas/main.out
documentacion/ExpliClas/main.out
+8
-4
documentacion/ExpliClas/main.pdf
documentacion/ExpliClas/main.pdf
+0
-0
documentacion/ExpliClas/main.tex
documentacion/ExpliClas/main.tex
+94
-1
documentacion/ExpliClas/sample.bib
documentacion/ExpliClas/sample.bib
+6
-0
No files found.
codigo/expliclas-api/src/main/java/brunolopez/expliclas/builder/BuilderManager.java
View file @
7a01bfa3
/*
* Copyright (C) 2018 Bruno López Trigo
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
* as published by the Free Software Foundation; either version 2
* of the License, or (at your option) any later version.
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
*/
package
brunolopez.expliclas.builder
;
import
brunolopez.expliclas.exceptions.ConflictEx
;
...
...
@@ -7,7 +25,10 @@ import brunolopez.expliclas.models.DatasetConfig;
import
brunolopez.expliclas.models.Instance
;
public
interface
BuilderManager
{
public
DatasetConfig
buildModels
(
String
token
,
String
datasetName
,
String
model
,
String
[]
options
)
throws
ConflictEx
,
FormatEx
,
NotFoundEx
;
public
double
classifyFURIA
(
String
token
,
String
datasetName
,
String
[]
options
,
Instance
instance
)
throws
FormatEx
,
NotFoundEx
;
public
DatasetConfig
buildModels
(
String
token
,
String
datasetName
,
String
model
,
String
[]
options
)
throws
ConflictEx
,
FormatEx
,
NotFoundEx
;
public
double
classifyFURIA
(
String
token
,
String
datasetName
,
String
[]
options
,
Instance
instance
)
throws
FormatEx
,
NotFoundEx
;
}
codigo/expliclas-api/src/main/java/brunolopez/expliclas/builder/BuilderManagerImpl.java
View file @
7a01bfa3
/*
* Copyright (C) 2018 Bruno López Trigo
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
* as published by the Free Software Foundation; either version 2
* of the License, or (at your option) any later version.
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
*/
package
brunolopez.expliclas.builder
;
import
java.io.File
;
...
...
@@ -156,15 +174,15 @@ public class BuilderManagerImpl implements BuilderManager {
double
distance
;
// Genera la configuración del experto
for
(
int
i
=
0
;
i
<
instancesLRN
.
numAttributes
();
i
++)
{
log
.
println
(
" "
+
instancesLRN
.
attribute
(
i
).
name
());
if
(
i
!=
(
instancesLRN
.
numAttributes
()
-
1
))
{
/*
/*
*
* Para el caso de los atributos numéricos dividir el atributo en 3 intervalos
* idénticos con etiquetas (Low, Medium, High)
* idénticos con etiquetas (Low, Medium, High)
*
*/
if
(
instancesLRN
.
attribute
(
i
).
isNumeric
())
{
...
...
@@ -182,11 +200,11 @@ public class BuilderManagerImpl implements BuilderManager {
new
Interval
(
minMax
[
0
]
+
distance
,
minMax
[
0
]
+
2
*
distance
),
1
));
config
.
getAttributes
().
get
(
i
).
getProperties
()
.
add
(
new
NumericProperty
(
"High"
,
new
Interval
(
minMax
[
0
]
+
2
*
distance
,
minMax
[
1
]),
2
));
}
/*
}
/*
*
* Para el caso de los atributos categóricos las etiquetas son los posibles
valores
* del atributo
* Para el caso de los atributos categóricos las etiquetas son los posibles
*
valores
del atributo
*
*/
else
{
...
...
@@ -202,7 +220,7 @@ public class BuilderManagerImpl implements BuilderManager {
}
// Añadir a la configuración los consecuentes o clases del problema
for
(
int
i
=
0
;
i
<
instancesLRN
.
classAttribute
().
numValues
();
i
++)
{
config
.
getConsequents
().
add
(
new
Consequent
((
i
+
1
),
instancesLRN
.
classAttribute
().
value
(
i
),
...
...
@@ -233,7 +251,6 @@ public class BuilderManagerImpl implements BuilderManager {
Evaluation
evalLRN
=
new
Evaluation
(
instancesLRN
,
null
);
/*
*
* Evaluar el modelo usando un 10 cross-validation por defecto
...
...
@@ -312,7 +329,7 @@ public class BuilderManagerImpl implements BuilderManager {
/*
*
* Construye el modelo de clasificación de WEKA para FURIA para clasificar una
* instancia concreta. Este método se utiliza para clasificar cuando se produce
* instancia concreta. Este método se utiliza para clasificar cuando se produce
* stretching, vote for the most frequent class o abstain.
*
*/
...
...
@@ -351,7 +368,8 @@ public class BuilderManagerImpl implements BuilderManager {
}
}
// Especificamos que la instancia es del mismo tipo que las instancias de entrenamiento
// Especificamos que la instancia es del mismo tipo que las instancias de
// entrenamiento
wekaInstance
.
setDataset
(
instancesLRN
);
// Especificamos una clase cualquiera de salida (en este caso la primera)
wekaInstance
.
setClassValue
(
instancesLRN
.
instance
(
0
).
classValue
());
...
...
codigo/expliclas-api/src/main/java/brunolopez/expliclas/classifiers/ClassifierManager.java
View file @
7a01bfa3
/*
* Copyright (C) 2018 Bruno López Trigo
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
* as published by the Free Software Foundation; either version 2
* of the License, or (at your option) any later version.
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
*/
package
brunolopez.expliclas.classifiers
;
import
brunolopez.expliclas.exceptions.ConflictEx
;
...
...
codigo/expliclas-api/src/main/java/brunolopez/expliclas/classifiers/ClassifierManagerImpl.java
View file @
7a01bfa3
This diff is collapsed.
Click to expand it.
codigo/expliclas-api/src/main/java/brunolopez/expliclas/classifiers/MatrixBuilder.java
View file @
7a01bfa3
/*
* Copyright (C) 2018 Bruno López Trigo
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
* as published by the Free Software Foundation; either version 2
* of the License, or (at your option) any later version.
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
*/
package
brunolopez.expliclas.classifiers
;
import
java.io.BufferedReader
;
...
...
@@ -22,116 +40,119 @@ import brunolopez.expliclas.utils.MapperJSON;
*/
public
class
MatrixBuilder
{
private
BufferedReader
reader
;
private
final
FileManager
fmanager
;
public
MatrixBuilder
(
File
input
)
throws
FileNotFoundException
{
this
.
reader
=
new
BufferedReader
(
new
FileReader
(
input
));
this
.
fmanager
=
new
FileManager
();
}
/*
*
* Construcción de la matriz de cross-validation, se limita a la lectura
* del modelo de WEKA
*
*/
public
Matrix
readMatrix
()
throws
IOException
{
String
line
=
""
;
ArrayList
<
Integer
>
row
=
new
ArrayList
<>();
Matrix
m
=
new
Matrix
();
while
(!
line
.
startsWith
(
"=== Confusion"
))
{
line
=
this
.
reader
.
readLine
();
}
for
(
int
i
=
0
;
i
<
2
;
i
++)
{
this
.
reader
.
readLine
();
}
line
=
this
.
reader
.
readLine
().
split
(
" \\| "
)[
0
].
trim
();
while
(
line
!=
null
&&
!
line
.
isEmpty
())
{
for
(
String
s
:
line
.
split
(
"\\s+"
))
{
row
.
add
(
Integer
.
parseInt
(
s
));
}
m
.
addRow
(
row
);
row
.
clear
();
line
=
this
.
reader
.
readLine
();
if
(
line
!=
null
)
{
line
=
line
.
split
(
" \\| "
)[
0
].
trim
();
}
}
this
.
reader
.
close
();
m
.
setPrecision
();
return
m
;
}
/*
*
* Construcción de la matriz de confusión de entrenamiento y test, requiere de la lectura
* de los archivos de predicciones
*
*/
public
Matrix
buildMatrixInstances
(
String
token
,
String
name
,
String
algorithm
,
String
type
,
boolean
abstain
)
throws
NotFoundEx
,
IOException
,
FormatEx
{
File
predictions
;
File
configFile
;
MapperJSON
mapper
=
new
MapperJSON
();
Position
p
;
Matrix
m
;
try
{
configFile
=
this
.
fmanager
.
getConfig
(
token
,
name
,
"en"
);
DatasetConfig
config
=
mapper
.
readConfigJSON
(
configFile
);
// Se obtienen las predicciones
if
(
type
.
equals
(
"train"
))
{
predictions
=
this
.
fmanager
.
getPredictions
(
token
,
name
,
algorithm
);
}
else
{
predictions
=
this
.
fmanager
.
getPredictionsTest
(
token
,
name
,
algorithm
);
}
// Se crea una matriz, indicando se tiene columna de abstenciones o no
m
=
new
Matrix
(
config
.
getConsequents
().
size
(),
abstain
);
this
.
reader
=
new
BufferedReader
(
new
FileReader
(
predictions
));
String
line
=
reader
.
readLine
();
int
instance
=
1
;
while
(
line
!=
null
)
{
// Si la predicción es "NaN" entonces hay una abstención
if
(
line
.
split
(
" "
)[
1
].
equals
(
"NaN"
))
{
p
=
new
Position
((
int
)
Float
.
parseFloat
(
line
.
split
(
" "
)[
0
]),
config
.
getConsequents
().
size
());
}
else
{
p
=
new
Position
((
int
)
Float
.
parseFloat
(
line
.
split
(
" "
)[
0
]),
(
int
)
Float
.
parseFloat
(
line
.
split
(
" "
)[
1
]));
}
// Si la predicción es incorrecta se añade a la lista de instancias confundidas la instancia
if
(
p
.
getRow
()
!=
p
.
getColumn
())
{
m
.
addConfused
(
p
,
instance
);
}
// Se incrementa en la matriz la posición correspondiente a la predicción
m
.
increment
(
p
.
getRow
(),
p
.
getColumn
());
line
=
reader
.
readLine
();
instance
++;
}
}
catch
(
Exception
ex
)
{
throw
new
FormatEx
(
"Something went wrong building "
+
type
+
" matrix"
);
}
m
.
setPrecision
();
return
m
;
}
private
BufferedReader
reader
;
private
final
FileManager
fmanager
;
public
MatrixBuilder
(
File
input
)
throws
FileNotFoundException
{
this
.
reader
=
new
BufferedReader
(
new
FileReader
(
input
));
this
.
fmanager
=
new
FileManager
();
}
/*
*
* Construcción de la matriz de cross-validation, se limita a la lectura del
* modelo de WEKA
*
*/
public
Matrix
readMatrix
()
throws
IOException
{
String
line
=
""
;
ArrayList
<
Integer
>
row
=
new
ArrayList
<>();
Matrix
m
=
new
Matrix
();
while
(!
line
.
startsWith
(
"=== Confusion"
))
{
line
=
this
.
reader
.
readLine
();
}
for
(
int
i
=
0
;
i
<
2
;
i
++)
{
this
.
reader
.
readLine
();
}
line
=
this
.
reader
.
readLine
().
split
(
" \\| "
)[
0
].
trim
();
while
(
line
!=
null
&&
!
line
.
isEmpty
())
{
for
(
String
s
:
line
.
split
(
"\\s+"
))
{
row
.
add
(
Integer
.
parseInt
(
s
));
}
m
.
addRow
(
row
);
row
.
clear
();
line
=
this
.
reader
.
readLine
();
if
(
line
!=
null
)
{
line
=
line
.
split
(
" \\| "
)[
0
].
trim
();
}
}
this
.
reader
.
close
();
m
.
setPrecision
();
return
m
;
}
/*
*
* Construcción de la matriz de confusión de entrenamiento y test, requiere de
* la lectura de los archivos de predicciones
*
*/
public
Matrix
buildMatrixInstances
(
String
token
,
String
name
,
String
algorithm
,
String
type
,
boolean
abstain
)
throws
NotFoundEx
,
IOException
,
FormatEx
{
File
predictions
;
File
configFile
;
MapperJSON
mapper
=
new
MapperJSON
();
Position
p
;
Matrix
m
;
try
{
configFile
=
this
.
fmanager
.
getConfig
(
token
,
name
,
"en"
);
DatasetConfig
config
=
mapper
.
readConfigJSON
(
configFile
);
// Se obtienen las predicciones
if
(
type
.
equals
(
"train"
))
{
predictions
=
this
.
fmanager
.
getPredictions
(
token
,
name
,
algorithm
);
}
else
{
predictions
=
this
.
fmanager
.
getPredictionsTest
(
token
,
name
,
algorithm
);
}
// Se crea una matriz, indicando se tiene columna de abstenciones o no
m
=
new
Matrix
(
config
.
getConsequents
().
size
(),
abstain
);
this
.
reader
=
new
BufferedReader
(
new
FileReader
(
predictions
));
String
line
=
reader
.
readLine
();
int
instance
=
1
;
while
(
line
!=
null
)
{
// Si la predicción es "NaN" entonces hay una abstención
if
(
line
.
split
(
" "
)[
1
].
equals
(
"NaN"
))
{
p
=
new
Position
((
int
)
Float
.
parseFloat
(
line
.
split
(
" "
)[
0
]),
config
.
getConsequents
().
size
());
}
else
{
p
=
new
Position
((
int
)
Float
.
parseFloat
(
line
.
split
(
" "
)[
0
]),
(
int
)
Float
.
parseFloat
(
line
.
split
(
" "
)[
1
]));
}
// Si la predicción es incorrecta se añade a la lista de instancias confundidas
// la instancia
if
(
p
.
getRow
()
!=
p
.
getColumn
())
{
m
.
addConfused
(
p
,
instance
);
}
// Se incrementa en la matriz la posición correspondiente a la predicción
m
.
increment
(
p
.
getRow
(),
p
.
getColumn
());
line
=
reader
.
readLine
();
instance
++;
}
}
catch
(
Exception
ex
)
{
throw
new
FormatEx
(
"Something went wrong building "
+
type
+
" matrix"
);
}
m
.
setPrecision
();
return
m
;
}
}
codigo/expliclas-api/src/main/java/brunolopez/expliclas/classifiers/RuleBuilder.java
View file @
7a01bfa3
/*
* Copyright (C) 2018 Bruno López Trigo
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
* as published by the Free Software Foundation; either version 2
* of the License, or (at your option) any later version.
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
*/
package
brunolopez.expliclas.classifiers
;
import
java.io.File
;
...
...
@@ -68,12 +86,12 @@ public class RuleBuilder {
Rules
rules
=
new
Rules
();
rules
.
setOptions
(
options
);
/*
/*
*
* Detección de opciones importantes:
*
* -p: para determinar si la TNorm es producto o mínimo
*
-s: para determinar la
acción cuando no se activan reglas.
* -p: para determinar si la TNorm es producto o mínimo
-s: para determinar la
* acción cuando no se activan reglas.
*
*/
for
(
int
i
=
0
;
i
<
options
.
length
;
i
++)
{
...
...
@@ -107,26 +125,26 @@ public class RuleBuilder {
/*
*
*
Expresión regular de intervalo numérico
*
*
Grupo 1: atributo - Grupo 2: valores
*
* Expresión regular de intervalo numérico
*
* Grupo 1: atributo - Grupo 2: valores
*
*/
Pattern
numericInterval
=
Pattern
.
compile
(
"^\\((.*)\\sin\\s\\[(.*)\\]\\)$"
);
/*
*
*
Expresión regular de intervalo categórico
*
*
Grupo 1: atributo - Grupo 2: valor
*
* Expresión regular de intervalo categórico
*
* Grupo 1: atributo - Grupo 2: valor
*
*/
Pattern
categoricInterval
=
Pattern
.
compile
(
"^\\((.*)\\s=\\s(.*)\\)$"
);
/*
*
*
Expresión regular de intervalo categórico
*
*
Grupo 1: consecuente - Grupo 2: CF
*
* Expresión regular de intervalo categórico
*
* Grupo 1: consecuente - Grupo 2: CF
*
*/
Pattern
outputClass
=
Pattern
.
compile
(
"^.*=(.*)\\s\\(CF\\s=\\s(.*)\\)$"
);
...
...
@@ -144,9 +162,9 @@ public class RuleBuilder {
rule
=
new
Rule
();
intervals
=
line
.
split
(
" and "
);
for
(
int
i
=
0
;
i
<
intervals
.
length
;
i
++)
{
/*
* Si el intervalo contiene " => " estamos en el último
*
por lo tanto separamos
el intervalo de la clase de salida
/*
* Si el intervalo contiene " => " estamos en el último
por lo tanto separamos
* el intervalo de la clase de salida
*/
if
(
intervals
[
i
].
contains
(
" => "
))
{
interval
=
intervals
[
i
].
split
(
" => "
)[
0
];
...
...
@@ -167,9 +185,9 @@ public class RuleBuilder {
// Obtenemos los valores
values
=
numericMatch
.
group
(
2
).
split
(
", "
);
/*
* Para los casos -inf, el valor es el valor mínimo del atributo.
*
Para los casos
inf, el valor es el máximo del atributo.
*
El resto de casos toman el valor
directamente
* Para los casos -inf, el valor es el valor mínimo del atributo.
Para los casos
* inf, el valor es el máximo del atributo.
El resto de casos toman el valor
* directamente
*/
if
(
values
[
0
].
equals
(
"-inf"
))
{
component
.
setFirstFuzzyValue
(
...
...
@@ -196,21 +214,21 @@ public class RuleBuilder {
component
.
setFourthFuzzyValue
(
Double
.
parseDouble
(
values
[
3
]));
}
/*
* Si el componente ya existía se realiza la intersección entre ambos
componentes
* y se calculan las ecuaciones de las rectas.
* Si el componente ya existía se realiza la intersección entre ambos
*
componentes
y se calculan las ecuaciones de las rectas.