Extreme Dynamic Classifier Chains - XGBoost for Multi-label Classification

Related tags

Deep Learning XDCC
Overview

Extreme Dynamic Classifier Chains

Classifier chains is a key technique in multi-label classification, sinceit allows to consider label dependencies effectively. However, the classifiers arealigned according to a static order of the labels. In the concept of dynamic classifier chains (DCC) the label ordering is chosen for each prediction dynamically depending on the respective instance at hand. We combine this concept with the boosting of extreme gradient boosted trees (XGBoot), an effective and scalable state-of-the-art technique, and incorporate DCC in a fast multi-label extension of XGBoost which we make publicly available. As only positive labels have to be predicted and these are usually only few, the training costs can be further substantially reduced. Moreover, as experiments on ten datasets show, the length of the chain allows for a more control over the usage of previous predictions and hence over the measure one want to optimize,

Installation

The first step requires to build the modified multilabel version of XGBoost and install the resulting python package to build the dynamic chain model. This requires MinGW, i.e. the mingw32-make command, and Python 3. To start the build run the following commands:

cd XGBoost_ML
mingw32-make -j4

After a successful execution the python package can be installed.

cd python-package
python setup.py install

You should now be able to import the package into your Python project:

import xgboost as xgb

Training the Dynamic Chain Model

We recommend running the models by calling train_dcc.py from within a console. Place all datasets as .arff files into the datasets directory. Append -train to the train set and -test to the test set.

Parameters:

The following parameters are available:

Parameter Short Description Required
--filename <string> -f Name of your dataset .arff file located in the datasets sub-directory yes
--num_labels <int> -l Number of Labels in the dataset yes
--models <string> -m Specifies all models that will be build. Available options:
  • dcc: The proposed dynamic chain model
  • sxgb: A single multilabel XGBoost model
  • cc-dcc: A classifier chain with the label order of a previously built dynamic chain
  • cc-freq: A classifier chain with a label order sorted by label frequency (frequent to rare) in the train set
  • cc-rare: A classifier chain with a label order sorted by label frequency (rare to frequent) in the train set
  • cc-rand: A classifier chain with a random label order
  • br: A binary relevance model
example: -m "dc,br"
yes
--validation <int> -v Size of validation set. The first XX% of the train set will be used for validating the model. If the parameter is not set, the test set will be used for evaluation. Example: --validation 20 The frist 20% will be used for evaluation, the last 80% for training. (default: 0) no
--max_depth <int> -d Max depth of each XGBoost multilabel tree (default: 10) no
--num_rounds <int> -r Number of boosting rounds of each XGBoost model (default: 10) no
--chain_length <int> -c Length of the chain. Represents number of labeling-rounds. Each round builds a new XGBoost model that will predict a single label per instance (default: num_labels) no
--split <int> -s Index of split method used for building the trees. Available options:
  • maxGain: 1
  • maxWeight: 2
  • sumGain: 3
  • sumWeight: 4
  • maxAbsGain: 5
  • sumAbsGain: 6
(default: 1)
no
--parameters <string> -p XGBoost parameters used for each model in the chain. Example: -p "{'silent':1, 'eta':0.1}" (default: {}) no
--features_to_transform <string> -t A list of all features in the dataset that have to be encoded. XGBoost can only process numerical features. Use this parameter to encode categorical features. Example: -t "featureA,featureB" no
--output_extra -o Write extended log and json files (default: True) no

Example

We train two models, the dynamic chain and a binary relevance model, on a dataset called emotions with 6 labels. So we specify the models with -m "dc, br" and the dataset with -f "emotions". Additionally we place the files for training and testing into the datasets directory:

project
│   README.md
│   train_dcc.py   
│
└───datasets
│   │   emotions-train.arff
│   │   emotions-test.arff
│   
└───XGBoost_ML
    │   ...

The dcc model should build a full chain with 6 models, so we use -l 6. All XGBoost models, also the one for binary relevance, should train for 100 rounds with a maximum tree depth of 10 and a step size of 0.1. Therefore we add -p "{'eta':0.1}" -r 100 -d 10

The full command to train and evaluate both models is:

 train_dcc.py -p "{'eta':0.1}" -f "emotions" -l 6 -r 100 -d 10 -c 6 -m 'dcc, br'
Comments
  • The 'learner.o' file cannot be generated.

    The 'learner.o' file cannot be generated.

    Performing mingw32-make under windows 10, but an error occured.

    'test' is not recognized as an internal or external command,
    operable program or batch file.
    The system cannot find the path specified.
    Makefile:27: Attempting to recover non-functional MAKE [mingw32-make]
    The system cannot find the path specified.
    The system cannot find the path specified.
    Makefile:31: MAKE [] - PROBLEM
    process_begin: CreateProcess(NULL, uname, ...) failed.
    A subdirectory or file -p already exists.
    Error occurred while processing: -p.
    A subdirectory or file build already exists.
    Error occurred while processing: build.
    Makefile:141: recipe for target 'build/learner.o' failed
    mingw32-make: *** [build/learner.o] Error 1
    
    opened by JiaxuanGood 1
  • Compiling in operating systems other than Windows

    Compiling in operating systems other than Windows

    Hello,

    First of all thanks for making the paper code available in this package.

    I followed the installation steps as

    git clone https://github.com/keelm/XDCC
    cd XDCC/
    cd XGBoost_ML/
    

    According to this, the mingw32-make command is simply a Windows clone to the GNU Make, so I ran make but I got the following:

    Makefile:31: MAKE [make] - checked OK
    Makefile:39: make/config.mk: No such file or directory
    Makefile:43: dmlc-core/make/dmlc.mk: No such file or directory
    make: *** No rule to make target 'dmlc-core/make/dmlc.mk'.  Stop.
    

    I'm using Ubuntu 18.04 as uname -a output

    Linux asus 5.4.0-66-generic #74~18.04.2-Ubuntu SMP Fri Feb 5 11:17:31 UTC 2021 x86_64 x86_64 x86_64 GNU/Linux
    
    opened by jaymeanchante 2
  • Bump junit from 4.11 to 4.13.1 in /XGBoost_ML/jvm-packages/xgboost4j

    Bump junit from 4.11 to 4.13.1 in /XGBoost_ML/jvm-packages/xgboost4j

    Bumps junit from 4.11 to 4.13.1.

    Release notes

    Sourced from junit's releases.

    JUnit 4.13.1

    Please refer to the release notes for details.

    JUnit 4.13

    Please refer to the release notes for details.

    JUnit 4.13 RC 2

    Please refer to the release notes for details.

    JUnit 4.13 RC 1

    Please refer to the release notes for details.

    JUnit 4.13 Beta 3

    Please refer to the release notes for details.

    JUnit 4.13 Beta 2

    Please refer to the release notes for details.

    JUnit 4.13 Beta 1

    Please refer to the release notes for details.

    JUnit 4.12

    Please refer to the release notes for details.

    JUnit 4.12 Beta 3

    Please refer to the release notes for details.

    JUnit 4.12 Beta 2

    No release notes provided.

    JUnit 4.12 Beta 1

    No release notes provided.

    Commits
    • 1b683f4 [maven-release-plugin] prepare release r4.13.1
    • ce6ce3a Draft 4.13.1 release notes
    • c29dd82 Change version to 4.13.1-SNAPSHOT
    • 1d17486 Add a link to assertThrows in exception testing
    • 543905d Use separate line for annotation in Javadoc
    • 510e906 Add sub headlines to class Javadoc
    • 610155b Merge pull request from GHSA-269g-pwp5-87pp
    • b6cfd1e Explicitly wrap float parameter for consistency (#1671)
    • a5d205c Fix GitHub link in FAQ (#1672)
    • 3a5c6b4 Deprecated since jdk9 replacing constructor instance of Double and Float (#1660)
    • Additional commits viewable in compare view

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    • @dependabot use these labels will set the current labels as the default for future PRs for this repo and language
    • @dependabot use these reviewers will set the current reviewers as the default for future PRs for this repo and language
    • @dependabot use these assignees will set the current assignees as the default for future PRs for this repo and language
    • @dependabot use this milestone will set the current milestone as the default for future PRs for this repo and language

    You can disable automated security fix PRs for this repo from the Security Alerts page.

    dependencies 
    opened by dependabot[bot] 0
  • Bump scala.version from 2.11.8 to 2.13.1 in /XGBoost_ML/jvm-packages

    Bump scala.version from 2.11.8 to 2.13.1 in /XGBoost_ML/jvm-packages

    Bumps scala.version from 2.11.8 to 2.13.1.

    Updates scala-compiler from 2.11.8 to 2.13.1

    Release notes

    Sourced from scala-compiler's releases.

    Scala 2.13.1 is primarily a bug fix release that fixes several regressions in 2.13.0.

    Collection-related regressions

    • Revert Stream.Cons to the 2.12 encoding (#8354)
    • Don't rebuild scala.Seq to drop elems in unapplySeq (#8340)
    • Blacken subtrees where necessary in RedBlackTree.take (#8287)
    • Iterator#flatMap#hasNext calls outer#hasNext 1 time, not 2-3 times (#8220)
    • s.c.Map#values returns a strict Iterable rather than a View (#8195)
    • Vector.from(ArraySeq) copies elems rather than reusing unsafeArray (#8194)
    • Fix mutable.HashSet.addAll: remove redundant call to super method (#8192)
    • Fix mutable.ArraySeq.ofChar#addString (#8176)
    • Fix HashMap#mapValuesInPlace (#8421)

    Other regressions

    • Avoid spurious "illegal cyclic reference" errors (#8382)
    • Stabilize args of apply (#8202)
    • Reject incomplete implicit dictionaries (#8201)
    • Process exit code on script errors (#8169)
    • Fix type inference involving wildcards (#8129)

    Other bug fixes and improvements

    • Extend the Gradle / sbt 0.13 leniency to Windows (#8408)
    • Avoid unnecessary toSeq conversions in Seq methods (#8374)
    • Avoid memory leaks in Stream methods (#8367)
    • Precompile -i files for script runner (#8349)
    • Stop warning on higher-kinded usage without -language:higherKinds (#8348)
    • Simplify reporters (#8338)
    • More efficient ArraySeq iteration (#8300)
    • Enable hyperlinking to Java docs (#8284)
    • Parent implicitNotFound message is supplemental (#8280)
    • Add protected and private visibility filters to scaladoc (#8183)
    • Fix vulnerability in jQuery used in ScalaDoc (#8179)
    • Synthesize a PartialFunction from function literal (#8172)
    • Fix parsing of try (#8071)
    • Support emitting Java 9 bytecode by adding "-target:9" (#8060)
    • Deprecate mutable.MultiMap (#8005)
    • Add syntactic sugar for if(_) (#7707)
    • A foreign definition induces ambiguity (#7609)

    This is not a complete list of changes. For that, see all merged PRs and all closed bugs.

    Compatibility

    As usual for our minor releases, Scala 2.13.1 is binary-compatible with the whole Scala 2.13 series.

    Contributors

    ... (truncated)
    Commits
    • 3987e83 Merge pull request #8422 from lrytz/t11737-dotty
    • ae3c857 Avoid dotty compiler crash
    • 4b35778 Merge pull request #8421 from lrytz/t11737
    • 3e3f22b Don't use iterator to modify the underlying Map in mapValuesInPlace
    • a3791d4 Merge pull request #8410 from szeiger/wip/revert-7588
    • a26c917 Revert "VectorBuilder avoids copying data if possible"
    • 64a5a5d Merge pull request #8194 from joshlemer/issue/11600
    • d602ff4 Merge pull request #7609 from som-snytt/issue/10662
    • ead235c Merge pull request #8408 from eed3si9n/wip/bridge-hack
    • f797de2 Merge pull request #8405 from retronym/merge/2.12.x-to-2.13.x-20190909
    • Additional commits viewable in compare view

    Updates scala-reflect from 2.11.8 to 2.13.1

    Release notes

    Sourced from scala-reflect's releases.

    Scala 2.13.1 is primarily a bug fix release that fixes several regressions in 2.13.0.

    Collection-related regressions

    • Revert Stream.Cons to the 2.12 encoding (#8354)
    • Don't rebuild scala.Seq to drop elems in unapplySeq (#8340)
    • Blacken subtrees where necessary in RedBlackTree.take (#8287)
    • Iterator#flatMap#hasNext calls outer#hasNext 1 time, not 2-3 times (#8220)
    • s.c.Map#values returns a strict Iterable rather than a View (#8195)
    • Vector.from(ArraySeq) copies elems rather than reusing unsafeArray (#8194)
    • Fix mutable.HashSet.addAll: remove redundant call to super method (#8192)
    • Fix mutable.ArraySeq.ofChar#addString (#8176)
    • Fix HashMap#mapValuesInPlace (#8421)

    Other regressions

    • Avoid spurious "illegal cyclic reference" errors (#8382)
    • Stabilize args of apply (#8202)
    • Reject incomplete implicit dictionaries (#8201)
    • Process exit code on script errors (#8169)
    • Fix type inference involving wildcards (#8129)

    Other bug fixes and improvements

    • Extend the Gradle / sbt 0.13 leniency to Windows (#8408)
    • Avoid unnecessary toSeq conversions in Seq methods (#8374)
    • Avoid memory leaks in Stream methods (#8367)
    • Precompile -i files for script runner (#8349)
    • Stop warning on higher-kinded usage without -language:higherKinds (#8348)
    • Simplify reporters (#8338)
    • More efficient ArraySeq iteration (#8300)
    • Enable hyperlinking to Java docs (#8284)
    • Parent implicitNotFound message is supplemental (#8280)
    • Add protected and private visibility filters to scaladoc (#8183)
    • Fix vulnerability in jQuery used in ScalaDoc (#8179)
    • Synthesize a PartialFunction from function literal (#8172)
    • Fix parsing of try (#8071)
    • Support emitting Java 9 bytecode by adding "-target:9" (#8060)
    • Deprecate mutable.MultiMap (#8005)
    • Add syntactic sugar for if(_) (#7707)
    • A foreign definition induces ambiguity (#7609)

    This is not a complete list of changes. For that, see all merged PRs and all closed bugs.

    Compatibility

    As usual for our minor releases, Scala 2.13.1 is binary-compatible with the whole Scala 2.13 series.

    Contributors

    ... (truncated)
    Commits
    • 3987e83 Merge pull request #8422 from lrytz/t11737-dotty
    • ae3c857 Avoid dotty compiler crash
    • 4b35778 Merge pull request #8421 from lrytz/t11737
    • 3e3f22b Don't use iterator to modify the underlying Map in mapValuesInPlace
    • a3791d4 Merge pull request #8410 from szeiger/wip/revert-7588
    • a26c917 Revert "VectorBuilder avoids copying data if possible"
    • 64a5a5d Merge pull request #8194 from joshlemer/issue/11600
    • d602ff4 Merge pull request #7609 from som-snytt/issue/10662
    • ead235c Merge pull request #8408 from eed3si9n/wip/bridge-hack
    • f797de2 Merge pull request #8405 from retronym/merge/2.12.x-to-2.13.x-20190909
    • Additional commits viewable in compare view

    Updates scala-library from 2.11.8 to 2.13.1

    Release notes

    Sourced from scala-library's releases.

    Scala 2.13.1 is primarily a bug fix release that fixes several regressions in 2.13.0.

    Collection-related regressions

    • Revert Stream.Cons to the 2.12 encoding (#8354)
    • Don't rebuild scala.Seq to drop elems in unapplySeq (#8340)
    • Blacken subtrees where necessary in RedBlackTree.take (#8287)
    • Iterator#flatMap#hasNext calls outer#hasNext 1 time, not 2-3 times (#8220)
    • s.c.Map#values returns a strict Iterable rather than a View (#8195)
    • Vector.from(ArraySeq) copies elems rather than reusing unsafeArray (#8194)
    • Fix mutable.HashSet.addAll: remove redundant call to super method (#8192)
    • Fix mutable.ArraySeq.ofChar#addString (#8176)
    • Fix HashMap#mapValuesInPlace (#8421)

    Other regressions

    • Avoid spurious "illegal cyclic reference" errors (#8382)
    • Stabilize args of apply (#8202)
    • Reject incomplete implicit dictionaries (#8201)
    • Process exit code on script errors (#8169)
    • Fix type inference involving wildcards (#8129)

    Other bug fixes and improvements

    • Extend the Gradle / sbt 0.13 leniency to Windows (#8408)
    • Avoid unnecessary toSeq conversions in Seq methods (#8374)
    • Avoid memory leaks in Stream methods (#8367)
    • Precompile -i files for script runner (#8349)
    • Stop warning on higher-kinded usage without -language:higherKinds (#8348)
    • Simplify reporters (#8338)
    • More efficient ArraySeq iteration (#8300)
    • Enable hyperlinking to Java docs (#8284)
    • Parent implicitNotFound message is supplemental (#8280)
    • Add protected and private visibility filters to scaladoc (#8183)
    • Fix vulnerability in jQuery used in ScalaDoc (#8179)
    • Synthesize a PartialFunction from function literal (#8172)
    • Fix parsing of try (#8071)
    • Support emitting Java 9 bytecode by adding "-target:9" (#8060)
    • Deprecate mutable.MultiMap (#8005)
    • Add syntactic sugar for if(_) (#7707)
    • A foreign definition induces ambiguity (#7609)

    This is not a complete list of changes. For that, see all merged PRs and all closed bugs.

    Compatibility

    As usual for our minor releases, Scala 2.13.1 is binary-compatible with the whole Scala 2.13 series.

    Contributors

    ... (truncated)
    Commits
    • 3987e83 Merge pull request #8422 from lrytz/t11737-dotty
    • ae3c857 Avoid dotty compiler crash
    • 4b35778 Merge pull request #8421 from lrytz/t11737
    • 3e3f22b Don't use iterator to modify the underlying Map in mapValuesInPlace
    • a3791d4 Merge pull request #8410 from szeiger/wip/revert-7588
    • a26c917 Revert "VectorBuilder avoids copying data if possible"
    • 64a5a5d Merge pull request #8194 from joshlemer/issue/11600
    • d602ff4 Merge pull request #7609 from som-snytt/issue/10662
    • ead235c Merge pull request #8408 from eed3si9n/wip/bridge-hack
    • f797de2 Merge pull request #8405 from retronym/merge/2.12.x-to-2.13.x-20190909
    • Additional commits viewable in compare view

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    • @dependabot use these labels will set the current labels as the default for future PRs for this repo and language
    • @dependabot use these reviewers will set the current reviewers as the default for future PRs for this repo and language
    • @dependabot use these assignees will set the current assignees as the default for future PRs for this repo and language
    • @dependabot use this milestone will set the current milestone as the default for future PRs for this repo and language

    You can disable automated security fix PRs for this repo from the Security Alerts page.

    dependencies 
    opened by dependabot[bot] 0
  • Bump scala.version from 2.11.8 to 2.13.1 in /xgboost_further_optimized_clean/jvm-packages

    Bump scala.version from 2.11.8 to 2.13.1 in /xgboost_further_optimized_clean/jvm-packages

    Bumps scala.version from 2.11.8 to 2.13.1.

    Updates scala-compiler from 2.11.8 to 2.13.1

    Release notes

    Sourced from scala-compiler's releases.

    Scala 2.13.1 is primarily a bug fix release that fixes several regressions in 2.13.0.

    Collection-related regressions

    • Revert Stream.Cons to the 2.12 encoding (#8354)
    • Don't rebuild scala.Seq to drop elems in unapplySeq (#8340)
    • Blacken subtrees where necessary in RedBlackTree.take (#8287)
    • Iterator#flatMap#hasNext calls outer#hasNext 1 time, not 2-3 times (#8220)
    • s.c.Map#values returns a strict Iterable rather than a View (#8195)
    • Vector.from(ArraySeq) copies elems rather than reusing unsafeArray (#8194)
    • Fix mutable.HashSet.addAll: remove redundant call to super method (#8192)
    • Fix mutable.ArraySeq.ofChar#addString (#8176)
    • Fix HashMap#mapValuesInPlace (#8421)

    Other regressions

    • Avoid spurious "illegal cyclic reference" errors (#8382)
    • Stabilize args of apply (#8202)
    • Reject incomplete implicit dictionaries (#8201)
    • Process exit code on script errors (#8169)
    • Fix type inference involving wildcards (#8129)

    Other bug fixes and improvements

    • Extend the Gradle / sbt 0.13 leniency to Windows (#8408)
    • Avoid unnecessary toSeq conversions in Seq methods (#8374)
    • Avoid memory leaks in Stream methods (#8367)
    • Precompile -i files for script runner (#8349)
    • Stop warning on higher-kinded usage without -language:higherKinds (#8348)
    • Simplify reporters (#8338)
    • More efficient ArraySeq iteration (#8300)
    • Enable hyperlinking to Java docs (#8284)
    • Parent implicitNotFound message is supplemental (#8280)
    • Add protected and private visibility filters to scaladoc (#8183)
    • Fix vulnerability in jQuery used in ScalaDoc (#8179)
    • Synthesize a PartialFunction from function literal (#8172)
    • Fix parsing of try (#8071)
    • Support emitting Java 9 bytecode by adding "-target:9" (#8060)
    • Deprecate mutable.MultiMap (#8005)
    • Add syntactic sugar for if(_) (#7707)
    • A foreign definition induces ambiguity (#7609)

    This is not a complete list of changes. For that, see all merged PRs and all closed bugs.

    Compatibility

    As usual for our minor releases, Scala 2.13.1 is binary-compatible with the whole Scala 2.13 series.

    Contributors

    ... (truncated)
    Commits
    • 3987e83 Merge pull request #8422 from lrytz/t11737-dotty
    • ae3c857 Avoid dotty compiler crash
    • 4b35778 Merge pull request #8421 from lrytz/t11737
    • 3e3f22b Don't use iterator to modify the underlying Map in mapValuesInPlace
    • a3791d4 Merge pull request #8410 from szeiger/wip/revert-7588
    • a26c917 Revert "VectorBuilder avoids copying data if possible"
    • 64a5a5d Merge pull request #8194 from joshlemer/issue/11600
    • d602ff4 Merge pull request #7609 from som-snytt/issue/10662
    • ead235c Merge pull request #8408 from eed3si9n/wip/bridge-hack
    • f797de2 Merge pull request #8405 from retronym/merge/2.12.x-to-2.13.x-20190909
    • Additional commits viewable in compare view

    Updates scala-reflect from 2.11.8 to 2.13.1

    Release notes

    Sourced from scala-reflect's releases.

    Scala 2.13.1 is primarily a bug fix release that fixes several regressions in 2.13.0.

    Collection-related regressions

    • Revert Stream.Cons to the 2.12 encoding (#8354)
    • Don't rebuild scala.Seq to drop elems in unapplySeq (#8340)
    • Blacken subtrees where necessary in RedBlackTree.take (#8287)
    • Iterator#flatMap#hasNext calls outer#hasNext 1 time, not 2-3 times (#8220)
    • s.c.Map#values returns a strict Iterable rather than a View (#8195)
    • Vector.from(ArraySeq) copies elems rather than reusing unsafeArray (#8194)
    • Fix mutable.HashSet.addAll: remove redundant call to super method (#8192)
    • Fix mutable.ArraySeq.ofChar#addString (#8176)
    • Fix HashMap#mapValuesInPlace (#8421)

    Other regressions

    • Avoid spurious "illegal cyclic reference" errors (#8382)
    • Stabilize args of apply (#8202)
    • Reject incomplete implicit dictionaries (#8201)
    • Process exit code on script errors (#8169)
    • Fix type inference involving wildcards (#8129)

    Other bug fixes and improvements

    • Extend the Gradle / sbt 0.13 leniency to Windows (#8408)
    • Avoid unnecessary toSeq conversions in Seq methods (#8374)
    • Avoid memory leaks in Stream methods (#8367)
    • Precompile -i files for script runner (#8349)
    • Stop warning on higher-kinded usage without -language:higherKinds (#8348)
    • Simplify reporters (#8338)
    • More efficient ArraySeq iteration (#8300)
    • Enable hyperlinking to Java docs (#8284)
    • Parent implicitNotFound message is supplemental (#8280)
    • Add protected and private visibility filters to scaladoc (#8183)
    • Fix vulnerability in jQuery used in ScalaDoc (#8179)
    • Synthesize a PartialFunction from function literal (#8172)
    • Fix parsing of try (#8071)
    • Support emitting Java 9 bytecode by adding "-target:9" (#8060)
    • Deprecate mutable.MultiMap (#8005)
    • Add syntactic sugar for if(_) (#7707)
    • A foreign definition induces ambiguity (#7609)

    This is not a complete list of changes. For that, see all merged PRs and all closed bugs.

    Compatibility

    As usual for our minor releases, Scala 2.13.1 is binary-compatible with the whole Scala 2.13 series.

    Contributors

    ... (truncated)
    Commits
    • 3987e83 Merge pull request #8422 from lrytz/t11737-dotty
    • ae3c857 Avoid dotty compiler crash
    • 4b35778 Merge pull request #8421 from lrytz/t11737
    • 3e3f22b Don't use iterator to modify the underlying Map in mapValuesInPlace
    • a3791d4 Merge pull request #8410 from szeiger/wip/revert-7588
    • a26c917 Revert "VectorBuilder avoids copying data if possible"
    • 64a5a5d Merge pull request #8194 from joshlemer/issue/11600
    • d602ff4 Merge pull request #7609 from som-snytt/issue/10662
    • ead235c Merge pull request #8408 from eed3si9n/wip/bridge-hack
    • f797de2 Merge pull request #8405 from retronym/merge/2.12.x-to-2.13.x-20190909
    • Additional commits viewable in compare view

    Updates scala-library from 2.11.8 to 2.13.1

    Release notes

    Sourced from scala-library's releases.

    Scala 2.13.1 is primarily a bug fix release that fixes several regressions in 2.13.0.

    Collection-related regressions

    • Revert Stream.Cons to the 2.12 encoding (#8354)
    • Don't rebuild scala.Seq to drop elems in unapplySeq (#8340)
    • Blacken subtrees where necessary in RedBlackTree.take (#8287)
    • Iterator#flatMap#hasNext calls outer#hasNext 1 time, not 2-3 times (#8220)
    • s.c.Map#values returns a strict Iterable rather than a View (#8195)
    • Vector.from(ArraySeq) copies elems rather than reusing unsafeArray (#8194)
    • Fix mutable.HashSet.addAll: remove redundant call to super method (#8192)
    • Fix mutable.ArraySeq.ofChar#addString (#8176)
    • Fix HashMap#mapValuesInPlace (#8421)

    Other regressions

    • Avoid spurious "illegal cyclic reference" errors (#8382)
    • Stabilize args of apply (#8202)
    • Reject incomplete implicit dictionaries (#8201)
    • Process exit code on script errors (#8169)
    • Fix type inference involving wildcards (#8129)

    Other bug fixes and improvements

    • Extend the Gradle / sbt 0.13 leniency to Windows (#8408)
    • Avoid unnecessary toSeq conversions in Seq methods (#8374)
    • Avoid memory leaks in Stream methods (#8367)
    • Precompile -i files for script runner (#8349)
    • Stop warning on higher-kinded usage without -language:higherKinds (#8348)
    • Simplify reporters (#8338)
    • More efficient ArraySeq iteration (#8300)
    • Enable hyperlinking to Java docs (#8284)
    • Parent implicitNotFound message is supplemental (#8280)
    • Add protected and private visibility filters to scaladoc (#8183)
    • Fix vulnerability in jQuery used in ScalaDoc (#8179)
    • Synthesize a PartialFunction from function literal (#8172)
    • Fix parsing of try (#8071)
    • Support emitting Java 9 bytecode by adding "-target:9" (#8060)
    • Deprecate mutable.MultiMap (#8005)
    • Add syntactic sugar for if(_) (#7707)
    • A foreign definition induces ambiguity (#7609)

    This is not a complete list of changes. For that, see all merged PRs and all closed bugs.

    Compatibility

    As usual for our minor releases, Scala 2.13.1 is binary-compatible with the whole Scala 2.13 series.

    Contributors

    ... (truncated)
    Commits
    • 3987e83 Merge pull request #8422 from lrytz/t11737-dotty
    • ae3c857 Avoid dotty compiler crash
    • 4b35778 Merge pull request #8421 from lrytz/t11737
    • 3e3f22b Don't use iterator to modify the underlying Map in mapValuesInPlace
    • a3791d4 Merge pull request #8410 from szeiger/wip/revert-7588
    • a26c917 Revert "VectorBuilder avoids copying data if possible"
    • 64a5a5d Merge pull request #8194 from joshlemer/issue/11600
    • d602ff4 Merge pull request #7609 from som-snytt/issue/10662
    • ead235c Merge pull request #8408 from eed3si9n/wip/bridge-hack
    • f797de2 Merge pull request #8405 from retronym/merge/2.12.x-to-2.13.x-20190909
    • Additional commits viewable in compare view

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    • @dependabot use these labels will set the current labels as the default for future PRs for this repo and language
    • @dependabot use these reviewers will set the current reviewers as the default for future PRs for this repo and language
    • @dependabot use these assignees will set the current assignees as the default for future PRs for this repo and language
    • @dependabot use this milestone will set the current milestone as the default for future PRs for this repo and language

    You can disable automated security fix PRs for this repo from the Security Alerts page.

    dependencies 
    opened by dependabot[bot] 2
Owner
null
DECAF: Deep Extreme Classification with Label Features

DECAF DECAF: Deep Extreme Classification with Label Features @InProceedings{Mittal21, author = "Mittal, A. and Dahiya, K. and Agrawal, S. and Sain

null 46 Nov 6, 2022
Label Mask for Multi-label Classification

LM-MLC 一种基于完型填空的多标签分类算法 1 前言 本文主要介绍本人在全球人工智能技术创新大赛【赛道一】设计的一种基于完型填空(模板)的多标签分类算法:LM-MLC,该算法拟合能力很强能感知标签关联性,在多个数据集上测试表明该算法与主流算法无显著性差异,在该比赛数据集上的dev效果很好,但是由

null 52 Nov 20, 2022
This is the implementation of our work Deep Extreme Cut (DEXTR), for object segmentation from extreme points.

This is the implementation of our work Deep Extreme Cut (DEXTR), for object segmentation from extreme points.

Sergi Caelles 828 Jan 5, 2023
Static Features Classifier - A static features classifier for Point-Could clusters using an Attention-RNN model

Static Features Classifier This is a static features classifier for Point-Could

ABDALKARIM MOHTASIB 1 Jan 25, 2022
Official Pytorch Implementation of: "Semantic Diversity Learning for Zero-Shot Multi-label Classification"(2021) paper

Semantic Diversity Learning for Zero-Shot Multi-label Classification Paper Official PyTorch Implementation Avi Ben-Cohen, Nadav Zamir, Emanuel Ben Bar

null 28 Aug 29, 2022
General Multi-label Image Classification with Transformers

General Multi-label Image Classification with Transformers Jack Lanchantin, Tianlu Wang, Vicente Ordóñez Román, Yanjun Qi Conference on Computer Visio

QData 154 Dec 21, 2022
Official implementation of paper "Query2Label: A Simple Transformer Way to Multi-Label Classification".

Introdunction This is the official implementation of the paper "Query2Label: A Simple Transformer Way to Multi-Label Classification". Abstract This pa

Shilong Liu 274 Dec 28, 2022
Official implementation for the paper: "Multi-label Classification with Partial Annotations using Class-aware Selective Loss"

Multi-label Classification with Partial Annotations using Class-aware Selective Loss Paper | Pretrained models Official PyTorch Implementation Emanuel

null 99 Dec 27, 2022
PyTorch implementation of Hierarchical Multi-label Text Classification: An Attention-based Recurrent Network

hierarchical-multi-label-text-classification-pytorch Hierarchical Multi-label Text Classification: An Attention-based Recurrent Network Approach This

Mingu Kang 17 Dec 13, 2022
A benchmark dataset for mesh multi-label-classification based on cube engravings introduced in MeshCNN

Double Cube Engravings This script creates a dataset for multi-label mesh clasification, with an intentionally difficult setup for point cloud classif

Yotam Erel 1 Nov 30, 2021
This project aim to create multi-label classification annotation tool to boost annotation speed and make it more easier.

This project aim to create multi-label classification annotation tool to boost annotation speed and make it more easier.

null 4 Aug 2, 2022
Official implementation of "Open-set Label Noise Can Improve Robustness Against Inherent Label Noise" (NeurIPS 2021)

Open-set Label Noise Can Improve Robustness Against Inherent Label Noise NeurIPS 2021: This repository is the official implementation of ODNL. Require

Hongxin Wei 12 Dec 7, 2022
A PyTorch implementation of ICLR 2022 Oral paper PiCO: Contrastive Label Disambiguation for Partial Label Learning

PiCO: Contrastive Label Disambiguation for Partial Label Learning This is a PyTorch implementation of ICLR 2022 Oral paper PiCO; also see our Project

王皓波 83 May 11, 2022
PocketNet: Extreme Lightweight Face Recognition Network using Neural Architecture Search and Multi-Step Knowledge Distillation

PocketNet This is the official repository of the paper: PocketNet: Extreme Lightweight Face Recognition Network using Neural Architecture Search and M

Fadi Boutros 40 Dec 22, 2022
Multi-Person Extreme Motion Prediction

Multi-Person Extreme Motion Prediction Implementation for paper Wen Guo, Xiaoyu Bie, Xavier Alameda-Pineda, Francesc Moreno-Noguer, Multi-Person Extre

GUO-W 38 Nov 15, 2022
Improving XGBoost survival analysis with embeddings and debiased estimators

xgbse: XGBoost Survival Embeddings "There are two cultures in the use of statistical modeling to reach conclusions from data

Loft 242 Dec 30, 2022
Attention-based CNN-LSTM and XGBoost hybrid model for stock prediction

Attention-based CNN-LSTM and XGBoost hybrid model for stock prediction Requirements The code has been tested running under Python 3.7.4, with the foll

zshicode 84 Jan 1, 2023
Dynamic View Synthesis from Dynamic Monocular Video

Towards Robust Monocular Depth Estimation: Mixing Datasets for Zero-shot Cross-dataset Transfer This repository contains code to compute depth from a

Intelligent Systems Lab Org 2.3k Jan 1, 2023