Releases: MilesCranmer/SymbolicRegression.jl
Releases · MilesCranmer/SymbolicRegression.jl
v0.22.1
SymbolicRegression v0.22.1
v0.22.0
What's Changed
- (Algorithm modification) Evaluate on fixed batch when building per-population hall of fame in #243
- This only affects searches that use
batching=true
. It results in improved searches on large datasets, as the "winning expression" is not biased towards an expression that landed on a lucky batch. - Note that this only occurs within an iteration. Evaluation on the entire dataset still happens at the end of an iteration and those loss measurements are used for absolute comparison between expressions.
- This only affects searches that use
- (Algorithm modification) Deprecates the
fast_cycle
feature in #243. Use of this parameter will have no effect.- Was removed to ease maintenance burden and because it doesn't have a use. This feature was created early on in development as a way to get parallelism within a population. It is no longer useful as you can parallelize across populations.
- Add Aqua.jl to test suite in #245
- CompatHelper: bump compat for DynamicExpressions to 0.12, (keep existing compat) in #242
- Is able to avoids method invalidations when using operators to construct expressions manually by modifying a global constant mapping of operator => index, rather than
@eval
-ing new operators. - This only matters if you were using operators to build trees, like
x1 + x2
. All internal search code usesNode()
explicitly to build expressions, so did not rely on method invalidation at any point.
- Is able to avoids method invalidations when using operators to construct expressions manually by modifying a global constant mapping of operator => index, rather than
- Renames some parameters in #234
npop
=>population_size
npopulations
=>populations
- This is just to match PySR's API. Also note that the deprecated parameters will still work, and there will not be a warning unless you are running with
--depwarn=yes
.
- Ensure that
predict
uses units if trained with them in #244- If you train on a dataset that has physical units, this ensures that
MLJ.predict
will output predictions in the same units. Before this change,MLJ.predict
would return numerical arrays with no units.
- If you train on a dataset that has physical units, this ensures that
Full Changelog: v0.21.5...v0.22.0
v0.21.5
What's Changed
- Allow custom display variable names by @MilesCranmer in #240
Full Changelog: v0.21.4...v0.21.5
v0.21.4
SymbolicRegression v0.21.4
Closed issues:
- [Cleanup] Better implementation of batching (#88)
Merged pull requests:
- CompatHelper: bump compat for LossFunctions to 0.11, (keep existing compat) (#238) (@github-actions[bot])
- Enable compatibility with MLJTuning.jl (#239) (@MilesCranmer)
v0.21.3
What's Changed
- Batching inside optimization loop + batching support for custom objectives by @MilesCranmer in #235
Full Changelog: v0.21.2...v0.21.3
v0.21.2
What's Changed
- Allow empty string units (==1) by @MilesCranmer in #233
Full Changelog: v0.21.1...v0.21.2
v0.21.1
What's Changed
- Update DynamicExpressions.jl version by @MilesCranmer in #232
- Makes Zygote.jl an extension
Full Changelog: v0.21.0...v0.21.1
v0.21.0
What's Changed
- #228 and #230 and #231
- Dimensional analysis (#228)
- Allows you to (softly) constrain discovered expressions to those that respect physical dimensions
- Pass vectors of DynamicQuantities.jl
Quantity
type to the MLJ interface. - OR, specify
X_units
,y_units
to low-levelequation_search
.
- Printing improvements (#228)
- By default, only 5 significant digits are now printed, rather than the entire float. You can change this with the
print_precision
option. - In the default printed equations,
x₁
is used rather thanx1
. y =
is printed at the start (ory₁ =
for multi-output). With units this becomes, for example,y[kg] =
.
- By default, only 5 significant digits are now printed, rather than the entire float. You can change this with the
- Misc
- Easier to convert from MLJ interface to SymbolicUtils (via
node_to_symbolic(::Node, ::AbstractSRRegressor)
) (#228) - Improved precompilation (#228)
- Various performance and type stability improvements (#228)
- Inlined the recording option to speedup compilation (#230)
- Updated tutorials to use MLJ rather than low-level interface (#228)
- Moved JSON3.jl to extension (#231)
- Use PackageExtensionsCompat.jl over Requires.jl (#231)
- Require LossFunctions.jl to be 0.10 (#231)
- Easier to convert from MLJ interface to SymbolicUtils (via
- Dimensional analysis (#228)
Full Changelog: v0.20.0...v0.21.0
v0.20.0
SymbolicRegression v0.20.0
Closed issues:
- [Feature]: MLJ integration (#225)
Merged pull requests:
- MLJ Integration (#226) (@MilesCranmer, @OkonSamuel)
v0.19.1
SymbolicRegression v0.19.1
Merged pull requests:
- CompatHelper: bump compat for StatsBase to 0.34, (keep existing compat) (#202) (@github-actions[bot])
- (Soft deprecation) change
varMap
tovariable_names
(#219) (@MilesCranmer) - (Soft deprecation) rename
EquationSearch
toequation_search
(#222) (@MilesCranmer) - Fix equation splitting for unicode variables (#223) (@MilesCranmer)