Skip to content
Permalink
Browse files

General/improvement/outsourcedinterfaces (#186)

* Adjusted jaicore-basic to api4.org

* Adjusted the whole AILibs code base to the external interfaces

* Refactored move of ML stuff to ai.ml

* Adjusted AILibs to current version of api4.org (except ai.ml)

* Added NumericDataset which stores each attribute value as a double.

To this end, simple attribute types were introduced, which can be used
to still identify which attributes are nominal or ordinal etc.

Added interface for learning algorithms which is generic in the input
and output space as well as the type of config with which the respective
algorithm can be configured. Maybe the name is still not as appropriate.

* Removed goal tester from graph generator

* Removed SimpleInstances and related stuff, adjusted to api4.org

* Made WekaInstance objects Clusterable (by default method of
IClusterable)

* Repaired the RandomSearch, the RandomCompleter, and ML-Plan

* Great refactoring with outsourced ml api.

* Further refactorings to adapt to the new interface project.

* Updated AILibs to api4.org maven API

* Moved AI problems from test in main folder

* Further refactorings to adapt to the new API

* Moved some files.

* Adjusted jaicore-ml to the recent changes in api4.org

* Adjusted MLPlan to work with new dataset structures and general learners

* Cleanup up evaluator and filter packages

* Refactoring of the dataset structure.

* Cleaned up my packages

core.learner
classification.singlelabel
regression

* Fixed issues in cache infrastructure for dataset loaders.

* Fixed compile issues in samplers.

* Refactored dataset and ARFFDatasetAdapter.
* Old dataset stuff which is not yet working was moved to
ai.libs.jaicore.ml.core.olddataset
* Unit Tests for ARFFDatasetAdapter.

* Moved ArffUtilities for sampling to sampling package.

* Moved test classes for dataset to correct location.

* Started fixing timeseries package.

* Fixed some compile issues in the time series datasets.

* import PCSBasedOptimizer

* Clean PCSBasedOptimization from temporary files.

* Fixed some stuff.

* Refactored ranking measures.

* Moved timeseries classification package to
classification.singlelabel.timeseries.

* Resolving compile error in WekaUtil.

* Removed obsolete tests.

* Remove warnings in ARankingMeasure and NDCGLoss

* Various changes in ranking package

* Fix imports

* Fix imports

* Fix imports of Dyad scalers

* Fix import

* Fix dyad ranking feature transforms

* Add initial version of DyadRankingDataset

* Remove empty comment from ACollectionOfObjectsAttribute

* Fix errors in activelearning package for dyad ranking

* Remove warning from ConfidenceIntervalClusteringBasedActiveDyadRanker

* Fix problems in ADyadRankedNodeQueue

* Add current state

* Fixed compile issues for source and tests for all but ranking.

* Moved weka related classes to jaicore-ml-weka.

* Replaced blind text "asd" by todo and UnsupportedOperationException.

* Moved dyad ranking tests to the correct directory.

* Moved kendalls tau test to the right place.

* Fixed some issues with the WekaInstances classes.

* Resolved compile issues in WekaInstances and WekaInstance.

* Started to fix some tests for sampling algorithms.

Excluded weka(-related) dependencies from jaicore ml.

* Imported "hyperopt" as a new sub-project.

* Removed SLC prediction class.

* Fixed a few compile issues in jaicore-ml-weka

* Fixed compile issues for PCSBasedOptimizer

* Fixed compile issues in the runner.

* Split ML-Plan into several sub-projects

* adapted dependencies to renamed api4.org projects

* Fix errors in FeatureTransformPLDyadRanker and PLNetDyadRanker

* Fix DyadDatasetPoolProviderTest

* Fix dependency in jaicore-math

* Fix tests in ranking package

* Fix compile errors in jaicore-math

* Add implementation of SetOfObjectsAttribute

* Fix dyad ranking JUnit tests

* Fix error in ISAC ranking package

* Several fixes to project structure and jaicore-ml.

* Included api4.org projects correctly.
* Created new instance wise measures in jaicore-ml core.
* Added tests for these measures.
* Added new filter

* Moved things from MLplan to jaicore-ml and started repairing

* Added several sanity/consistency checks in ML-Plan to detect ill configs

* Fixed KVStoreSequentialComparator.

* Made KVStoreCollection partitions public.

* Adapted code for removed generic in the IClassifier interface

* Moved some classes within Jaicore-ML-WEKA

Defined global variables in build.gradle to ease dependency management.

* Fixed majority classifier.

* Moving Weka dependent Implementations to JAICore-ML-WEKA.
Compile issue fixes.

* Removed ISingleLabelClassification interfaces ....

* Repaired some dataset classes to enable full copies

* Resolved compile error

* Removed generic-related compile error from jaicore-ml

* Resolved all compile errors in jaicore-ml

* Resolved compile errors in tests of mlplan-core

* Fixed build

* Fixed compilee issues in the src dir of jaicore-ml-weka.

* Resolved compile issues in jaicore-ml and jaicore-ml-weka

* Went back to java 8.
Implemented SingleLabelClassificationDataset and *Instance.

* Moved hasco into hasco-core and fanova stuff into hasco-fanova

* Repaired samplings strategies, in particular OSMAC

* Resolved several test issues of samplers (but still many tests fail)

* Resolved mistakes in DFS

* Resolved several problems that caused failing tests

* Added a experimenter database handle for connecting to the REST API of
the SQL server.

* Repaired sampling algorithms and increased their performance

* Resolved logging issues in HASCO and ML-Plan, and repaired mlplan-weka

* cleaned up ml-plan-weka and create visualization example

* Tuned performance of ArffDatasetAdapter.

* Made datasets reconstructible (after OpenML-load or stratified split)

* Fixed issues with dataset not reading anything anymore and junit tests.

* Improved read performance of ArffDatasetAdapter.

* Resolved WekaInstances issue and adjusted logging in examples

* Switched travis to java11

* Fixed issues with reading datasets from OpenML.

* Fixed bug when parsing categorical attributes.

* Two major modifications

- Configured ML-Plan to search for pipelines not AbstractClassifiers
- Added events for successful and failed learner executions, which are
forwarded by MP-Plan
- Added an example that shows how one can use the candidate evaluation
events emitted by ML-Plan

* Added reconstruction logic for sampling factories and weka-algorithms

* Added shuffle in the splitter so that the data-points are shuffled after
the split

* Resolved several bugs and inefficiencies around WekaClassifiers

* Resolved generic gradle compile issues

* First steps towards making ML-Plan Meka run again.

* several build changes

- separated MEKA stuff into jaicore-ml-meka
- moved meta-learning stuff to mlplan-metalearning project
- removed nd4j and optimizer libraries from the ml-plan dependencies,
which reduces the size of far jars from 700MB to under 100MB

* Cleaned up mlplan projects, removed compile errors from most of them

* Fixed compile issues in MLPlanCLI.

* First steps towards getting ML2-Plan to run again.

* Fixed issue with reading MNIST.

* Fixed compile issues in MLPLanCLI

* Fixes for reading more datasets.

* Added MekaClassifier, MultiLabelClassification and ~PredictionBatch.

Furthermore adapted MLC Loss functions according to the new prediction
classes and added some unit tests.

* Moved MekaClassifier to jaicore-ml-meka.

* Adjusted multi-label interfaces

* Adjusted measure to allow for conversion from Object diff lists to
concrete diff lists

* adjusted latest changes from the API

* Reorganized the classifier/regressor performance measures

* Added an artificial test for a heterogeneous prediction performance

* Moved package for cl losses into ai.libs.jaicore.ml.classification.loss

* Added support for EvaluatorFactories in MLBuilders

* Fixed compile issues in Multi-Label Measures.

* Fixed some issues with performance measures in the evaluator factory.

* Fixed all the compile issues in mlplan-sklearn and mlplan-meka.

* Fixed compile issues in jaicore-ml and mlplan-cli

* Fixed issue in Example within jaicore-ml-weka.

* Resolved all compile issues in hyperopt.

* Resolved remaining compile errors

* Removed generic from IMultiLabelClassificationMeasure

* Removed generics again from evaluator factories.

* One more factory to remove generics from.

* Added test that checks that ML-Plan uses the right data portions in
search and selection phase respectively

* First tests and bug fixes for multi label measures.

* Resolved some parsing errors and improved OpenMLReader tests (prmtrzd)

* Added yeast to the OpenML-reader test

* Added test to check convertibility to WekaInstances and solved some bugs

* Added several sophisticated tests for ML-Plan and datasets

resolved some bugs, and added a util method to convert a regression
dataset into a classification dataset. This can come in handy if, for
example, on openml.org, a dataset is defined as numeric by mistake

* Fixed GUI Plugin displaying node evaluation information.

* Adapted most classes to updates in api4.org

* Removed compile errors from JAICore

* Resolved all remaining compile errors

* Resolved bugs, vulnerabilities, and some code smells

* Resolved a bunch of code smells

* Fixed some code smells and added MLC loss based on OWA aggregator.

* Added examples for ML-Plan with sklearn

* Resolved issues due to renaming of TimeOut to Timeout.

* Fixed issues in MekaInstances.

* Resolved several code smells

* Removed code smells

* Resolved code smells

* Resolved a coupled of code smells

* Resolved several code smells, foremost in HASCO

* Removed further code smells and added some tests

* Resolved build issues with test artifacts

* Removed code smells in tests of hyperopt

* Removed several code duplicates

* turned bug with "try" into a resource-try

* Resolved some test issues that blocked test execution

Co-authored-by: mwever <wever@mail.uni-paderborn.de>
Co-authored-by: Kadiray Karakaya <kadiray.k@hotmail.com>
  • Loading branch information
3 people committed Jan 13, 2020
1 parent d48e85e commit 2a07d85b0a2ecd5f755b6f4cd99d7a8b2376ee35
Showing 2,375 changed files with 351,183 additions and 84,955 deletions.
@@ -1,6 +1,6 @@
language: java
jdk:
- oraclejdk8
- oraclejdk11
before_cache:
- rm -f $HOME/.gradle/caches/modules-2/modules-2.lock
- rm -fr $HOME/.gradle/caches/*/plugin-resolution/
@@ -1,79 +1,82 @@
plugins {
id 'java'
id 'eclipse'
//id 'org.openjfx.javafxplugin' version '0.0.5'
}
eclipse {
classpath {
downloadJavadoc = true
downloadSources = true
}
}
dependencies {
compile project(":JAICore:jaicore-basic")

compile group: 'com.fasterxml.jackson.core', name: 'jackson-databind', version: '2.9.7'

implementation 'com.github.mwever:gs-core:2.0.2-synchrofix'
implementation 'com.github.graphstream:gs-ui-javafx:2.0-alpha'
implementation 'com.github.graphstream:gs-algo:2.0-alpha'

}
//javafx {
// modules = [ 'javafx.controls', 'javafx.swing', 'javafx.web' ]
//}
uploadArchives {
repositories {
mavenDeployer {
def ossrhUsername = project.hasProperty('ossrhUsername') ? project.property('ossrhUsername') : ""
def ossrhPassword = project.hasProperty('ossrhPassword') ? project.property('ossrhPassword') : ""

beforeDeployment { MavenDeployment deployment -> signing.signPom(deployment) }
repository(url: "https://oss.sonatype.org/service/local/staging/deploy/maven2/") {
authentication(userName: ossrhUsername, password: ossrhPassword)
}
snapshotRepository(url: "https://oss.sonatype.org/content/repositories/snapshots/") {
authentication(userName: ossrhUsername, password: ossrhPassword)
}

pom.project {
name 'JAICore-Graphvisualizer'
packaging 'jar'
// optionally artifactId can be defined here
description 'Thist project provides a graphical interface for visualizing algorithms (especially search and AutoML algorithms) contained in AILibs.'
url 'https://libs.ai'

scm {
connection 'scm:git:https://github.com/fmohr/AILibs.git'
developerConnection 'scm:git:https://github.com/fmohr/AILibs.git'
url 'https://github.com/fmohr/AILibs'
}

licenses {
license {
name 'GPLv3'
url 'https://www.gnu.org/licenses/gpl-3.0.en.html'
}
}

developers {
developer {
id 'fmohr'
name 'Felix Mohr'
email 'felix.mohr@upb.de'
}
developer {
id 'mwever'
name 'Marcel Wever'
email 'marcel.wever@upb.de'
}
developer {
id 'ahetzer'
name 'Alexander Tornede'
email 'alexander.tornede@upb.de'
}
}
}
}
}
plugins {
id 'java'
id 'eclipse'
id 'org.openjfx.javafxplugin' version '0.0.5'
}

eclipse {
classpath {
downloadJavadoc = true
downloadSources = true
}
}

dependencies {
compile project(":JAICore:jaicore-basic")

compile("$jsonDatabind")

compile("$gsCore")
compile("$gsUIJavaFX")
compile("$gsAlgo")
}

javafx {
modules = [ 'javafx.controls', 'javafx.swing', 'javafx.web' ]
}

uploadArchives {
repositories {
mavenDeployer {
def ossrhUsername = project.hasProperty('ossrhUsername') ? project.property('ossrhUsername') : ""
def ossrhPassword = project.hasProperty('ossrhPassword') ? project.property('ossrhPassword') : ""

beforeDeployment { MavenDeployment deployment -> signing.signPom(deployment) }
repository(url: "https://oss.sonatype.org/service/local/staging/deploy/maven2/") {
authentication(userName: ossrhUsername, password: ossrhPassword)
}
snapshotRepository(url: "https://oss.sonatype.org/content/repositories/snapshots/") {
authentication(userName: ossrhUsername, password: ossrhPassword)
}

pom.project {
name 'JAICore-Graphvisualizer'
packaging 'jar'
// optionally artifactId can be defined here
description 'Thist project provides a graphical interface for visualizing algorithms (especially search and AutoML algorithms) contained in AILibs.'
url 'https://libs.ai'

scm {
connection 'scm:git:https://github.com/fmohr/AILibs.git'
developerConnection 'scm:git:https://github.com/fmohr/AILibs.git'
url 'https://github.com/fmohr/AILibs'
}

licenses {
license {
name 'GPLv3'
url 'https://www.gnu.org/licenses/gpl-3.0.en.html'
}
}

developers {
developer {
id 'fmohr'
name 'Felix Mohr'
email 'felix.mohr@upb.de'
}
developer {
id 'mwever'
name 'Marcel Wever'
email 'marcel.wever@upb.de'
}
developer {
id 'ahetzer'
name 'Alexander Tornede'
email 'alexander.tornede@upb.de'
}
}
}
}
}
}
@@ -1,6 +1,6 @@
package ai.libs.jaicore.graphvisualizer.events.graph;

import ai.libs.jaicore.basic.algorithm.events.AlgorithmEvent;
import org.api4.java.algorithm.events.IAlgorithmEvent;

public interface GraphEvent extends AlgorithmEvent {
public interface GraphEvent extends IAlgorithmEvent {
}
@@ -1,13 +1,15 @@
package ai.libs.jaicore.graphvisualizer.events.graph;

import ai.libs.jaicore.basic.algorithm.events.AAlgorithmEvent;
import org.api4.java.algorithm.IAlgorithm;

import ai.libs.jaicore.basic.algorithm.AAlgorithmEvent;

public class GraphInitializedEvent<T> extends AAlgorithmEvent implements GraphEvent {

private T root;

public GraphInitializedEvent(final String algorithmId, final T root) {
super(algorithmId);
public GraphInitializedEvent(final IAlgorithm<?, ?> algorithm, final T root) {
super(algorithm);
this.root = root;
}

@@ -1,15 +1,17 @@
package ai.libs.jaicore.graphvisualizer.events.graph;

import ai.libs.jaicore.basic.algorithm.events.AAlgorithmEvent;
import org.api4.java.algorithm.IAlgorithm;

import ai.libs.jaicore.basic.algorithm.AAlgorithmEvent;

public class NodeAddedEvent<T> extends AAlgorithmEvent implements GraphEvent {

private final T parent;
private final T node;
private final String type;

public NodeAddedEvent(final String algorithmId, final T parent, final T node, final String type) {
super(algorithmId);
public NodeAddedEvent(final IAlgorithm<?, ?> algorithm, final T parent, final T node, final String type) {
super(algorithm);
this.parent = parent;
this.node = node;
this.type = type;
@@ -0,0 +1,20 @@
package ai.libs.jaicore.graphvisualizer.events.graph;

import org.api4.java.algorithm.IAlgorithm;

import ai.libs.jaicore.basic.algorithm.AAlgorithmEvent;

public class NodeInfoAlteredEvent<T> extends AAlgorithmEvent implements GraphEvent {

private final T node;

public NodeInfoAlteredEvent(final IAlgorithm<?, ?> algorithm, final T node) {
super(algorithm);
this.node = node;
}

public T getNode() {
return this.node;
}

}
@@ -1,14 +1,16 @@
package ai.libs.jaicore.graphvisualizer.events.graph;

import ai.libs.jaicore.basic.algorithm.events.AAlgorithmEvent;
import org.api4.java.algorithm.IAlgorithm;

import ai.libs.jaicore.basic.algorithm.AAlgorithmEvent;

public class NodeParentSwitchEvent<T> extends AAlgorithmEvent implements GraphEvent {
private final T node;
private final T oldParent;
private final T newParent;

public NodeParentSwitchEvent(final String algorithmEvent, final T node, final T oldParent, final T newParent) {
super(algorithmEvent);
public NodeParentSwitchEvent(final IAlgorithm<?, ?> algorithm, final T node, final T oldParent, final T newParent) {
super(algorithm);
this.node = node;
this.oldParent = oldParent;
this.newParent = newParent;
@@ -1,13 +1,15 @@
package ai.libs.jaicore.graphvisualizer.events.graph;

import ai.libs.jaicore.basic.algorithm.events.AAlgorithmEvent;
import org.api4.java.algorithm.IAlgorithm;

import ai.libs.jaicore.basic.algorithm.AAlgorithmEvent;

public class NodeRemovedEvent<T> extends AAlgorithmEvent implements GraphEvent {

private final T node;

public NodeRemovedEvent(final String algorithmId, final T node) {
super(algorithmId);
public NodeRemovedEvent(final IAlgorithm<?, ?> algorithm, final T node) {
super(algorithm);
this.node = node;
}

@@ -1,14 +1,16 @@
package ai.libs.jaicore.graphvisualizer.events.graph;

import ai.libs.jaicore.basic.algorithm.events.AAlgorithmEvent;
import org.api4.java.algorithm.IAlgorithm;

import ai.libs.jaicore.basic.algorithm.AAlgorithmEvent;

public class NodeTypeSwitchEvent<T> extends AAlgorithmEvent implements GraphEvent {

private final T node;
private final String type;

public NodeTypeSwitchEvent(final String algorithmId, final T node, final String type) {
super(algorithmId);
public NodeTypeSwitchEvent(final IAlgorithm<?, ?> algorithm, final T node, final String type) {
super(algorithm);
this.node = node;
this.type = type;
}
@@ -1,9 +1,9 @@
package ai.libs.jaicore.graphvisualizer.events.graph.bus;

import ai.libs.jaicore.basic.algorithm.events.AlgorithmEvent;
import org.api4.java.algorithm.events.IAlgorithmEvent;

public interface AlgorithmEventBus extends AlgorithmEventSource {

public void postEvent(AlgorithmEvent algorithmEvent);
public void postEvent(IAlgorithmEvent algorithmEvent);

}
@@ -1,11 +1,11 @@
package ai.libs.jaicore.graphvisualizer.events.graph.bus;

import com.google.common.eventbus.Subscribe;
import org.api4.java.algorithm.events.IAlgorithmEvent;

import ai.libs.jaicore.basic.algorithm.events.AlgorithmEvent;
import com.google.common.eventbus.Subscribe;

public interface AlgorithmEventListener {

@Subscribe
public void handleAlgorithmEvent(AlgorithmEvent algorithmEvent) throws HandleAlgorithmEventException;
public void handleAlgorithmEvent(IAlgorithmEvent algorithmEvent) throws HandleAlgorithmEventException;
}

0 comments on commit 2a07d85

Please sign in to comment.
You can’t perform that action at this time.