Skip to content

Roadmap to v0.5 #187

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 116 commits into from
Oct 31, 2022
Merged

Roadmap to v0.5 #187

merged 116 commits into from
Oct 31, 2022

Conversation

Mec-iS
Copy link
Collaborator

@Mec-iS Mec-iS commented Oct 13, 2022

These PR incorporates all the changes from #108 and all the fixes provided thereafter. So to allow a clear step-by-step plan to a new release (v0.5) that will provide all the improvements in #108 plus all the features implemented in the new traits system.

For a documentation of the process: #185

For a walkthrough starts from this branch's README.

EDIT:
This PR will include important breaking changes and cleanup. For example:

  • no more bindings for other numerical crates (probably)
  • no more support for "naive" DenseMatrix (only new DenseMatrix with num-traits)
  • Goodbye Matrix. Welcome Array2
  • Goodbye BaseVector. Welcome Array1
  • introduce use of trait-objects
  • ...

cc: @NikZak @Steboss

Volodymyr Orlov and others added 30 commits May 31, 2021 12:19
@Mec-iS
Copy link
Collaborator Author

Mec-iS commented Oct 29, 2022

Some improvements in syscalls and CPU usage, much less alloc present as well
Screenshot from 2022-10-29 18-39-35

@Mec-iS
Copy link
Collaborator Author

Mec-iS commented Oct 29, 2022

@morenol please take a look to the wasm32 build and tests. I would like to exclude datasets from the wasm32 build and by consequence all the tests that use "datasets" or "make_blobs".

Co-authored-by: Luis Moreno <morenol@users.noreply.github.com>
@morenol
Copy link
Collaborator

morenol commented Oct 29, 2022

I see that for wasm, failure is due to float eq implementation, let me check what I can do to solve that

  left: `[-2.001480000210124, -2.3581549441488563, -2.001480000210124, -2.6946271807700692, -2.224623551524334, -2.917770732084279, -2.10684051586795, -2.512305623976115, -2.6946271807700692, -2.001480000210124]`,
 right: `[-2.001480000210124, -2.3581549441488563, -2.001480000210124, -2.6946271807700692, -2.2246235515243336, -2.917770732084279, -2.10684051586795, -2.512305623976115, -2.6946271807700692, -2.001480000210124]`', src/naive_bayes/multinomial.rs:491:9

@Mec-iS
Copy link
Collaborator Author

Mec-iS commented Oct 29, 2022

I see that for wasm, failure is due to float eq implementation, let me check what I can do to solve that

  left: `[-2.001480000210124, -2.3581549441488563, -2.001480000210124, -2.6946271807700692, -2.224623551524334, -2.917770732084279, -2.10684051586795, -2.512305623976115, -2.6946271807700692, -2.001480000210124]`,
 right: `[-2.001480000210124, -2.3581549441488563, -2.001480000210124, -2.6946271807700692, -2.2246235515243336, -2.917770732084279, -2.10684051586795, -2.512305623976115, -2.6946271807700692, -2.001480000210124]`', src/naive_bayes/multinomial.rs:491:9

yes we will probably run into some differences in types for Wasm, we can also go and write dedicated tests.

* Fix tests

* Add again removed line

Co-authored-by: Luis Moreno <morenol@users.noreply.github.com>
@Mec-iS Mec-iS marked this pull request as ready for review October 30, 2022 10:13
@Mec-iS
Copy link
Collaborator Author

Mec-iS commented Oct 30, 2022

Looked into some Cargo.toml settings:

resolver = "2"

[profile.test]
debug = 1
opt-level = 3
split-debuginfo = "unpacked"

[profile.release]
strip = true 
debug = 1
lto = true
codegen-units = 1
overflow-checks = true

@Mec-iS Mec-iS merged commit 52eb6ce into development Oct 31, 2022
@Mec-iS Mec-iS deleted the v0.5-wip branch November 8, 2022 15:23
morenol pushed a commit that referenced this pull request Nov 8, 2022
* First draft of the new n-dimensional arrays + NB use case
* Improves default implementation of multiple Array methods
* Refactors tree methods
* Adds matrix decomposition routines
* Adds matrix decomposition methods to ndarray and nalgebra bindings
* Refactoring + linear regression now uses array2
* Ridge & Linear regression
* LBFGS optimizer & logistic regression
* LBFGS optimizer & logistic regression
* Changes linear methods, metrics and model selection methods to new n-dimensional arrays
* Switches KNN and clustering algorithms to new n-d array layer
* Refactors distance metrics
* Optimizes knn and clustering methods
* Refactors metrics module
* Switches decomposition methods to n-dimensional arrays
* Linalg refactoring - cleanup rng merge (#172)
* Remove legacy DenseMatrix and BaseMatrix implementation. Port the new Number, FloatNumber and Array implementation into module structure.
* Exclude AUC metrics. Needs reimplementation
* Improve developers walkthrough

New traits system in place at `src/numbers` and `src/linalg`
Co-authored-by: Lorenzo <tunedconsulting@gmail.com>

* Provide SupervisedEstimator with a constructor to avoid explicit dynamical box allocation in 'cross_validate' and 'cross_validate_predict' as required by the use of 'dyn' as per Rust 2021
* Implement getters to use as_ref() in src/neighbors
* Implement getters to use as_ref() in src/naive_bayes
* Implement getters to use as_ref() in src/linear
* Add Clone to src/naive_bayes
* Change signature for cross_validate and other model_selection functions to abide to use of dyn in Rust 2021
* Implement ndarray-bindings. Remove FloatNumber from implementations
* Drop nalgebra-bindings support (as decided in conf-call to go for ndarray)
* Remove benches. Benches will have their own repo at smartcore-benches
* Implement SVC
* Implement SVC serialization. Move search parameters in dedicated module
* Implement SVR. Definitely too slow
* Fix compilation issues for wasm (#202)

Co-authored-by: Luis Moreno <morenol@users.noreply.github.com>
* Fix tests (#203)

* Port linalg/traits/stats.rs
* Improve methods naming
* Improve Display for DenseMatrix

Co-authored-by: Montana Low <montanalow@users.noreply.github.com>
Co-authored-by: VolodymyrOrlov <volodymyr.orlov@gmail.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

6 participants