Skip to content

Releases: JuliaAI/MLJ.jl

v0.4.0

11 Sep 14:27
v0.4.0
99ef588
Compare
Choose a tag to compare
  • (Enhancment) Update to MLJBase 0.5.0 and MLJModels 0.4.0. The
    following new scikit-learn models are thereby made available:
  • ScikitLearn.jl
  • SVM: SVMClassifier, SVMRegressor, SVMNuClassifier,
    SVMNuRegressor, SVMLClassifier, SVMLRegressor,
  • Linear Models (regressors): ARDRegressor,
    BayesianRidgeRegressor, ElasticNetRegressor,
    ElasticNetCVRegressor, HuberRegressor, LarsRegressor,
    LarsCVRegressor, LassoRegressor, LassoCVRegressor,
    LassoLarsRegressor, LassoLarsCVRegressor,
    LassoLarsICRegressor, LinearRegressor,
    OrthogonalMatchingPursuitRegressor,
    OrthogonalMatchingPursuitCVRegressor,
    PassiveAggressiveRegressor, RidgeRegressor,
    RidgeCVRegressor, SGDRegressor, TheilSenRegressor
  • (New feature) The macro @pipeline allows one to construct linear
    (non-branching) pipeline composite models with one line of code. One
    may include static transformations (ordinary functions) in the
    pipeline, as well as target transformations for the supervised case
    (when one component model is supervised).

  • (Breaking) Source nodes (type Source) now have a kind field,
    which is either :input,:target or :other, with :input the
    default value in the source constructor. If building a learning
    network, and the network is to be exported as a standalone model,
    then it is now necessary to tag the source nodes accordingly, as in
    Xs = source(X) and ys = source(y, kind=:target).

  • (Breaking) By virtue of the preceding change, the syntax for
    exporting a learning network is simplified. Do?@from_network for
    details. Also, one now uses fitresults(N) instead of fit results(N, X, y) and fitresults(N, X) when exporting a learning
    network N "by hand"; see the updated
    manual
    for details.

  • (Breaking) One must explicitly state if a supervised learning
    network being exported with @from_network is probabilistic by
    adding is_probablistic=true to the macro expression. Before, this
    information was unreliably inferred from the network.

  • (Enhancement) Add macro-free method for loading model code into an arbitrary
    module. Do ?load for details.

  • (Enhancement) @load now returns a mode instance with default
    hyperparameters (instead of nothing), as in tree_model = @load DecisionTreeRegressor

  • (Breaking) info("PCA") now returns a named-tuple, instead of a
    dictionary, of the properties of a the model named "PCA"

  • (Breaking) The list returned by models(conditional) is now a list
    of complete metadata entries (named-tuples, as returned by
    info). An entry proxy appears in the list exactly when
    conditional(proxy) == true. Model query is simplified; for
    example models() do model model.is_supervised && model.is_pure_julia end finds all pure julia supervised models.

  • (Bug fix) Introduce new private methods to avoid relying on MLJBase
    type piracy MLJBase
    #30
    .

  • (Enhancement) If composite is a a learning network exported as a
    model, and m = machine(composite, args...) then report(m)
    returns the reports for each machine in the learning network, and
    similarly for fitted_params(m).

  • (Enhancement) MLJ.table, vcat and hcat now overloaded for
    AbstractNode, so that they can immediately be used in defining
    learning networks. For example, if X = source(rand(20,3)) and
    y=source(rand(20)) then MLJ.table(X) and vcat(y, y) both make
    sense and define new nodes.

  • (Enhancement) pretty(X) prints a pretty version of any table X,
    complete with types and scitype annotations. Do ?pretty for
    options. A wrap of pretty_table from PrettyTables.jl.

  • (Enhancement) std is re-exported from Statistics

  • (Enhancement) The manual and MLJ
    cheatsheet

    have been updated.

  • Performance measures have been migrated to MLJBase, while the model
    registry and model load/search facilities have migrated to
    MLJModels. As relevant methods are re-exported to MLJ, this is
    unlikely to effect many users.

v0.3.0

23 Aug 11:23
v0.3.0
b64d2b0
Compare
Choose a tag to compare

v0.3.0 (2019-08-21)

Diff since v0.2.5

  • Introduction of traits for measures (loss functions, etc); see top
    of /src/measures.jl for definitions. This

    • allows user to use loss functions from LossFunctions.jl,
    • enables improved measure checks and error message reporting with measures
    • allows evaluate! to report per-observation measures when
      available (for later use by Bayesian optimisers, for example)
    • allows support for sample-weighted measures playing nicely
      with rest of API
  • Improvements to resampling:

    • evaluate! method now reports per-observation measures when
      available
    • sample weights can be passed to evaluate! for use by measures
      that support weights
    • user can pass a list of train/evaluation pairs of row indices
      directly to evaluate!, in place of a ResamplingStrategy
      object
    • implementing a new ResamplingStrategy is now straightforward (see docs)
    • one can call evaluate (no exclamation mark) directly on
      model + data without first constructing a machine, if desired
  • Doc strings and the
    manual have
    been revised and updated. The manual includes a new section "Tuning
    models", and extra material under "Learning networks" explaining how
    to export learning networks as stand-alone models using the
    @from_network macro.

  • Improved checks and error-reporting for binding models to data in
    machines.

  • (Breaking) CSV is now an optional dependency, which means you now
    need to import CSV before you can load tasks with load_boston(),
    load_iris(), load_crabs(), load_ames(), load_reduced_ames()

  • Added schema method for tables (re-exported from
    ScientificTypes.jl). Returns a named tuple with keys :names,
    :types, :scitypes and :nrows.

  • (Breaking) Eliminate scitypes method. The scientific types of a
    table are returned as part of ScientificTypes schema method (see
    above)

Closed issues:

  • Migrate @load macro to MLJBase.jl? (#208)
  • Loss functions in MLJ (#205)
  • Missing package dependency? (#204)
  • Test for MLJModels/Clustering.jl gives warning "implicit dims=2... (#202)
  • TunedModel objects not displaying correctly (#197)
  • DecisionTreeRegressor fails to predict (#193)
  • Control verbosity of @load macro (#192)
  • How to know which models are regression models? (#191)
  • Error loading the package (#190)
  • Data science and ML ontologies in MLJ (#189)
  • Machine fit! from the model not working (#187)
  • How can I extract a fitresult that does not contain any of the original data? (#186)
  • @from_network not working if MLJBase not in load path. (#184)
  • Improve nested parameter specification in tuning (#180)
  • Resampling strategies should have option for independent RNG (#178)
  • Fitting SVC machine changes hyperparameters (#172)
  • range(SVC, :gamma, ...) returns NominalRange instead of NumericRange (#170)
  • Local support at the ATI? (#169)
  • range(tree, :n, ...) not working for tree=DecisionTreeRegressorClassfier (#168)
  • Add some transformers from MultivariateStats.jl (#167)
  • Use of MLJRegistry (#165)
  • No method matching build_tree (#164)
  • Multiple learning curves just repeating the first curve (#163)
  • Register v0.2.5 (#162)
  • Register v0.2.4 (#160)
  • Issue with Documentation/Example - DecisionTreeClassifier again... (#156)
  • Convert example/xgboost.jl into notebook (#148)
  • GSoC Project Proposal (#78)
  • Implement MLJ interface for linear models (#35)

Merged pull requests:

v0.2.5

15 Jun 09:30
v0.2.5
Compare
Choose a tag to compare

v0.2.5 (2019-06-15)

Diff since v0.2.4

Closed issues:

  • Register v0.2.3 (#154)

v0.2.4

13 Jun 22:05
v0.2.4
Compare
Choose a tag to compare

v0.2.4 (2019-06-13)

Diff since v0.2.3

Closed issues:

  • Allow ability to call predict\(mach, \*\) on a task (as well as new input data)? (#158)
  • misclassification_rate StackOverflow error (#133)
  • Add task interface (#68)
  • Treatment of supervised models predicting an ordered categorical (#48)
  • Proposal for metadata (#22)
  • Boosting Packages (#21)
  • Literature discussion (#10)

v0.2.3

05 Jun 02:19
v0.2.3
Compare
Choose a tag to compare

v0.2.3 (2019-06-05)

Diff since v0.2.2

Closed issues:

  • Classification task: no models (#153)
  • Register v0.2.2 (#149)
  • Announcing MLJ + sktime tutorial and development sprint (#143)

v0.2.2

31 May 08:17
v0.2.2
Compare
Choose a tag to compare

v0.2.2 (2019-05-30)

Diff since v0.2.1

Closed issues:

  • specifying new rows in calls to fit! on a Node not triggering retraining. (#147)
  • fit! of Node sometimes calls update on model when it should call fit on model (#146)
  • MultivariateStats.PCA has wrong load_path (#141)
  • Error running the tour.ipynb notebook (#140)
  • For reproducibility, include a Manifest.toml file with all examples. (#137)
  • Coveralls activation (#131)
  • Register v0.2.1 (#127)
  • Migrate MultivariateStats: MLJ -> MLJModels (#125)
  • Register v0.2.0 (#124)
  • Wrap Scikitlearn.jl Elastic Net algorithms (#112)

Merged pull requests:

  • Improve coverage of other files (#145) (giordano)
  • add manifest.toml, project.toml for example notebooks, update tour.ipynb (#142) (ayush-1506)
  • Simplify methods of load macro by reducing code duplication (#136) (giordano)
  • Improve test coverage of tasks.jl (#135) (giordano)
  • Move docs dependencies to Project.toml (#130) (giordano)
  • Adding SimpleRidgeRegressor (#129) (ayush-1506)
  • Send code coverage to Coveralls and Codecov (#128) (giordano)

v0.2.1

13 May 06:17
Compare
Choose a tag to compare

v0.2.0

09 May 09:37
Compare
Choose a tag to compare
bump to 0.2.0