|
| 1 | +import numpy as np |
| 2 | +from sklearn.utils import shuffle |
| 3 | +from sklearn.model_selection import train_test_split |
| 4 | +from tqdm.notebook import tqdm |
| 5 | +from TrueNonNested_Model_MFML import ModelMFML as MF |
| 6 | + |
| 7 | +def main_withTZVP(): |
| 8 | + prop='SCF' |
| 9 | + rep='CM' |
| 10 | + indexes = np.load('CheMFi/raws/indexes.npy',allow_pickle=True) #STO3G first |
| 11 | + X_train = np.load(f'CheMFi/raws/X_train_{rep}.npy') |
| 12 | + X_test = np.load(f'CheMFi/raws/X_test_{rep}.npy') |
| 13 | + X_val = np.load(f'CheMFi/raws/X_val_{rep}.npy') |
| 14 | + energies = np.load(f'CheMFi/raws/energies_{prop}.npy',allow_pickle=True) #STO3G first |
| 15 | + for i in range(5): |
| 16 | + avg=np.mean(energies[i]) |
| 17 | + energies[i] = energies[i] - avg |
| 18 | + #energies = energies[:-1] |
| 19 | + y_test = np.load(f'CheMFi/raws/y_test_{prop}.npy') - avg |
| 20 | + y_val = np.load(f'CheMFi/raws/y_val_{prop}.npy') - avg |
| 21 | + |
| 22 | + |
| 23 | + nfids = indexes.shape[0] |
| 24 | + regs = np.full(2*nfids-1,1e-10) |
| 25 | + sigmas = np.full(2*nfids-1,150.0) |
| 26 | + kernels = np.full(2*nfids-1,'matern') |
| 27 | + |
| 28 | + n_trains = np.asarray([2**(13), 2**(12), 2**(11), 2**(10),2**(9)]) |
| 29 | + #init |
| 30 | + model = MF(reg=regs, kernel=kernels, sigma=sigmas, |
| 31 | + order=1, metric='l2', gammas=None, |
| 32 | + p_bar=True) |
| 33 | + #train models |
| 34 | + model.train(X_train_parent=X_train, y_trains=energies, |
| 35 | + indexes=indexes, |
| 36 | + shuffle=True, n_trains=n_trains, |
| 37 | + seed=42) |
| 38 | + _ = model.predict(X_test=X_test, X_val=X_val, |
| 39 | + y_test=y_test, y_val=y_val, |
| 40 | + optimiser='OLS') |
| 41 | + print('MAE for non-nested o-MFML on **including** TZVP fidelity in ground state energy training data: ',model.mae) |
| 42 | + |
| 43 | +def main_noTZVP(): |
| 44 | + prop='SCF' |
| 45 | + rep='CM' |
| 46 | + indexes = np.load('CheMFi/raws/indexes.npy',allow_pickle=True)[:-1] #STO3G first |
| 47 | + X_train = np.load(f'CheMFi/raws/X_train_{rep}.npy') |
| 48 | + X_test = np.load(f'CheMFi/raws/X_test_{rep}.npy') |
| 49 | + X_val = np.load(f'CheMFi/raws/X_val_{rep}.npy') |
| 50 | + energies = np.load(f'CheMFi/raws/energies_{prop}.npy',allow_pickle=True)[:-1] #STO3G first |
| 51 | + for i in range(4): |
| 52 | + avg=np.mean(energies[i]) |
| 53 | + energies[i] = energies[i] - avg |
| 54 | + #energies = energies[:-1] |
| 55 | + y_test = np.load(f'CheMFi/raws/y_test_{prop}.npy') - avg |
| 56 | + y_val = np.load(f'CheMFi/raws/y_val_{prop}.npy') - avg |
| 57 | + |
| 58 | + |
| 59 | + nfids = indexes.shape[0] |
| 60 | + regs = np.full(2*nfids-1,1e-10) |
| 61 | + sigmas = np.full(2*nfids-1,150.0) |
| 62 | + kernels = np.full(2*nfids-1,'matern') |
| 63 | + |
| 64 | + n_trains = np.asarray([2**(13), 2**(12), 2**(11), 2**(10)])#[5-nfids:] |
| 65 | + #init |
| 66 | + model = MF(reg=regs, kernel=kernels, sigma=sigmas, |
| 67 | + order=1, metric='l2', gammas=None, |
| 68 | + p_bar=True) |
| 69 | + #train models |
| 70 | + model.train(X_train_parent=X_train, y_trains=energies, |
| 71 | + indexes=indexes, |
| 72 | + shuffle=True, n_trains=n_trains, |
| 73 | + seed=42) |
| 74 | + _ = model.predict(X_test=X_test, X_val=X_val, |
| 75 | + y_test=y_test, y_val=y_val, |
| 76 | + optimiser='OLS') |
| 77 | + print('MAE for non-nested o-MFML **without** TZVP fidelity in ground state energy training data: ',model.mae) |
| 78 | + |
| 79 | + |
| 80 | +main_withTZVP() |
| 81 | +main_noTZVP() |
0 commit comments