-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathDyMMMSurrogateModel.py
More file actions
110 lines (93 loc) · 3.91 KB
/
DyMMMSurrogateModel.py
File metadata and controls
110 lines (93 loc) · 3.91 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
import numpy as np
from smt.surrogate_models import KPLS
from sklearn.metrics import r2_score
from sklearn.metrics import mean_squared_error
from DyMMMSurrogateModelCluster import DyMMMSurrogateModelCluster
from DyMMMSurrogateModelKeras import DyMMMSurrogateModelKeras
from sklearn.preprocessing import LabelEncoder
from sklearn.ensemble import RandomForestClassifier
import DyMMMSettings as settings
from sklearn.metrics import accuracy_score
from sklearn.model_selection import cross_val_score
class DyMMMSurrogateModel:
surrogateModel=None
r2List=[]
rmseList=[]
analysisDir=settings.simSettings["analysisDir"]
def __init__(self, paramCount=18):
#self.surrogateModel = KPLS(theta0=[1e-2], poly='quadratic', corr='abs_exp', n_comp=paramCount)
#self.surrogateModel=DyMMMSurrogateModelKeras()
self.surrogateModel=DyMMMSurrogateModelCluster()
#self.randomClassifier=RandomForestClassifier(max_depth=5, n_estimators=100, max_features=17)
def train(self, X, y):
print("TRAIN - START======================================")
print(X)
print("------------------------------------------------------")
print(y)
print("TRAIN - END======================================")
"""
encoder = LabelEncoder()
encoder.fit(y)
encoded_Y = encoder.transform(y)
y_train=encoded_Y
self.rfscore = cross_val_score(self.randomClassifier, X, y_train, cv=50)
"""
self.surrogateModel.set_training_values(X, y)
self.surrogateModel.train()
def predict(self, X):
y = self.surrogateModel.predict_values(X)
return y
def predict_variances(self, X):
y = self.surrogateModel.predict_variances(X)
return y
def test(self, X, y_true):
y_pred = self.predict(X)
y_pred_var = self.predict_variances(X)
print("PREDICTED - START==========XXX============================")
print(X)
print("--------------------YTRUE----------------------------------")
print(y_true)
print("--------------------YPRED----------------------------------")
print(y_pred)
print("---------------------YVAR---------------------------------")
print(y_pred_var)
print("PREDICTED - END======================================")
r2 = r2_score(y_true=y_true, y_pred=y_pred, multioutput="uniform_average")
self.r2List.append(r2)
rmse = mean_squared_error(y_true=y_true, y_pred=y_pred, squared=False, multioutput="uniform_average")
self.rmseList.append(rmse)
abse = np.max(np.fabs(y_pred-y_true))
print([r2, rmse, abse])
logFile = self.analysisDir+"/RMSE2.log"
f = open(logFile, "a")
f.write("=======YTRUE==========\n")
f.write(str(y_true))
f.write("=======YPRED==========\n")
f.write(str(y_pred))
f.write("=======YVAR==========\n")
f.write(str(y_pred_var))
f.close()
logFile = self.analysisDir+"/RMSE.log"
f = open(logFile, "a")
f.write("=======MODEL RMSE/ABSE=S=========\n")
f.write(str(rmse))
f.write(str(abse))
f.write("=======MODEL RMSE/ABSE=E=========\n")
f.close()
"""
encoder = LabelEncoder()
encoder.fit(y_true)
encoded_Y = encoder.transform(y_true)
y_test=encoded_Y
y_pred_rf=self.randomClassifier.predit(X)
y_pred_prb=self.randomClassifier.predict_proba(X)
logFile = self.analysisDir+"/classifier.log"
f = open(logFile, "a")
accuracy=accuracy_score(y_test, y_pred_rf, normalize=True)
print("Accuracy (train) for %s: %0.1f%% " % (str(self.rfscore), accuracy * 100))
print(y_pred_prb)
f.write("Accuracy (train) for %s: %0.1f%% " % (str(self.rfscore), accuracy * 100))
f.write(str(y_pred_prb))
f.close()
"""
return [r2, rmse, abse]