MilesCranmer commited on
Commit
2b01937
1 Parent(s): 8cfda07

Add printing of score function from 2006.11287

Browse files
Files changed (2) hide show
  1. README.md +2 -0
  2. julia/sr.jl +17 -6
README.md CHANGED
@@ -272,6 +272,8 @@ pd.DataFrame, Results dataframe, giving complexity, MSE, and equations
272
  - [x] Rename package to avoid trademark issues
273
  - PySR?
274
  - [x] Put on PyPI
 
 
275
  - [ ] Use @fastmath
276
  - [ ] Refresh screen rather than dumping to stdout?
277
  - [ ] Test suite
 
272
  - [x] Rename package to avoid trademark issues
273
  - PySR?
274
  - [x] Put on PyPI
275
+ - [x] Treat baseline as a solution.
276
+ - [x] Print score alongside MSE: \delta \log(MSE)/\delta \log(complexity)
277
  - [ ] Use @fastmath
278
  - [ ] Refresh screen rather than dumping to stdout?
279
  - [ ] Test suite
julia/sr.jl CHANGED
@@ -1,4 +1,5 @@
1
  import Optim
 
2
 
3
  const maxdegree = 2
4
  const actualMaxsize = maxsize + maxdegree
@@ -844,11 +845,16 @@ function fullRun(niterations::Integer;
844
  elapsed = time() - last_print_time
845
  if elapsed > print_every_n_seconds
846
  # Dominating pareto curve - must be better than all simpler equations
847
- debug(verbosity, "\n")
848
- debug(verbosity, "Cycles per second: $(round(num_equations/elapsed, sigdigits=3))")
849
- debug(verbosity, "Hall of Fame:")
850
- debug(verbosity, "-----------------------------------------")
851
- debug(verbosity, "Complexity \t MSE \t Equation")
 
 
 
 
 
852
  for size=1:actualMaxsize
853
  if hallOfFame.exists[size]
854
  member = hallOfFame.members[size]
@@ -856,7 +862,12 @@ function fullRun(niterations::Integer;
856
  numberSmallerAndBetter = sum([curMSE > MSE(evalTreeArray(hallOfFame.members[i].tree), y) for i=1:(size-1)])
857
  betterThanAllSmaller = (numberSmallerAndBetter == 0)
858
  if betterThanAllSmaller
859
- debug(verbosity, "$size \t $(curMSE) \t $(stringTree(member.tree))")
 
 
 
 
 
860
  end
861
  end
862
  end
 
1
  import Optim
2
+ using Printf
3
 
4
  const maxdegree = 2
5
  const actualMaxsize = maxsize + maxdegree
 
845
  elapsed = time() - last_print_time
846
  if elapsed > print_every_n_seconds
847
  # Dominating pareto curve - must be better than all simpler equations
848
+ @printf("\n")
849
+ @printf("Cycles per second: %.3e\n", round(num_equations/elapsed, sigdigits=3))
850
+ @printf("Hall of Fame:\n")
851
+ @printf("-----------------------------------------\n")
852
+ @printf("%-10s %-8s %-8s %-8s\n", "Complexity", "MSE", "Score", "Equation")
853
+ curMSE = baselineSSE ./ len
854
+ @printf("%-10d %-5.3e %-8s %-.f\n", 0, curMSE, "NaN", avgy)
855
+ lastMSE = curMSE
856
+ lastComplexity = size
857
+
858
  for size=1:actualMaxsize
859
  if hallOfFame.exists[size]
860
  member = hallOfFame.members[size]
 
862
  numberSmallerAndBetter = sum([curMSE > MSE(evalTreeArray(hallOfFame.members[i].tree), y) for i=1:(size-1)])
863
  betterThanAllSmaller = (numberSmallerAndBetter == 0)
864
  if betterThanAllSmaller
865
+ delta_c = size - lastComplexity
866
+ delta_l_mse = log(curMSE) - log(lastMSE)
867
+ score = convert(Float32, -delta_l_mse/log(delta_c))
868
+ @printf("%-10d %-5.3e %-5.3e %-s\n" , size, curMSE, score, stringTree(member.tree))
869
+ lastMSE = curMSE
870
+ lastComplexity = size
871
  end
872
  end
873
  end