Skip to content

Commit 45212bd

Browse files
committed
update curvefit (log, p0, maxfev)
Signed-off-by: Sunyanan Choochotkaew <[email protected]>
1 parent fe75985 commit 45212bd

File tree

4 files changed

+16
-9
lines changed

4 files changed

+16
-9
lines changed

src/train/trainer/ExponentialRegressionTrainer/main.py

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,13 @@
66
from trainer.curvefit import CurveFitTrainer, CurveFitModel
77

88
import numpy as np
9+
import math
10+
11+
def p0_func(x, y):
12+
a = (y.max()-y.min())//math.e # scale value
13+
b = 1 # start from linear
14+
c = y.min() - a # initial offset
15+
return [a,b,c]
916

1017
def expo_func(x, a, b, c):
1118
y = a*np.exp(b*x) + c
@@ -18,4 +25,4 @@ def __init__(self, energy_components, feature_group, energy_source, node_level,
1825
self.fe_files = []
1926

2027
def init_model(self):
21-
return CurveFitModel(expo_func)
28+
return CurveFitModel(expo_func, p0_func=p0_func)

src/train/trainer/LogarithmicRegressionTrainer/main.py

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -8,13 +8,13 @@
88
import numpy as np
99

1010
def p0_func(x, y):
11-
print(y.max(), y.min())
1211
a = y.max()-y.min()
13-
b = y.min()
14-
return [a, b]
12+
b = 1
13+
c = y.min()
14+
return [a, b, c]
1515

16-
def log_func(x, a, b):
17-
y = [a * np.log(xi) + b if xi > 0 else 0 for xi in x]
16+
def log_func(x, a, b, c):
17+
y = a*np.log(b*x+1) + c
1818
return y
1919

2020
class LogarithmicRegressionTrainer(CurveFitTrainer):

src/train/trainer/LogisticRegressionTrainer/main.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010
def p0_func(x, y):
1111
A = y.max() - y.min() # value range
1212
x0 = 0.5 # sigmoid mid point (as normalized value is in 0 to 1, start mid point = 0.5)
13-
k = A/np.std(y) # growth rate (larger std, lower growth)
13+
k = A//np.std(y) # growth rate (larger std, lower growth)
1414
off = y.min() # initial offset
1515
return [A,x0,k,off]
1616

src/train/trainer/curvefit.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -36,9 +36,9 @@ def fit(self, X_values, y_values):
3636
flatten_x = self._x_values(X_values)
3737
flatten_y = np.array(y_values).flatten()
3838
if self.p0_func is not None:
39-
self.popt, self.pcov = curve_fit(self.fit_func, flatten_x, flatten_y, p0=self.p0_func(flatten_x, flatten_y), maxfev=20000)
39+
self.popt, self.pcov = curve_fit(self.fit_func, flatten_x, flatten_y, p0=self.p0_func(flatten_x, flatten_y), maxfev=30000)
4040
else:
41-
self.popt, self.pcov = curve_fit(self.fit_func, flatten_x, flatten_y, maxfev=20000)
41+
self.popt, self.pcov = curve_fit(self.fit_func, flatten_x, flatten_y, maxfev=30000)
4242

4343
def predict(self, X_values):
4444
if self.popt is None:

0 commit comments

Comments
 (0)