def plotpoledata(): fcorner = "results/plots/poledata_corner2D.csv" fin = "results/plots/poledata_inside2D.csv" import matplotlib.pyplot as plt X1, X2 = tools.readData(fcorner) plt.scatter(X1[1:], X2[1:], label="$X^{(corner)}$", s=5) # print(np.c_[X1[1:10],X2[1:10]]) X1, X2 = tools.readData(fin) plt.scatter(X1[1:500000], X2[1:500000], label="$X^{(in)}$", s=1) plt.legend() plt.savefig("results/plots/Ppoledata2D.png") X1, X2 = tools.readData(fin)
def plotsamplingstrategies(): import matplotlib.pyplot as plt import matplotlib as mpl folder = "results/exp1/benchmarkdata/f1_" lhsfile = folder + "lhs.txt" splilhsfile = folder + "splitlhs.txt" sgfile = folder + "sg.txt" for file, name in zip([lhsfile, splilhsfile, sgfile], ["LHS", "d-LHS", "SG"]): X, Y = tools.readData(file) mpl.rc('text', usetex=True) mpl.rc('font', family='serif', size=12) mpl.rc('font', weight='bold') mpl.rcParams['text.latex.preamble'] = [ r'\usepackage{sfmath} \boldmath' ] # mpl.style.use("ggplot") plt.figure(0, figsize=(15, 10)) plt.scatter(X[:, 0], X[:, 1], s=100, c='r') plt.xlabel("$x_1$", fontsize=44) plt.ylabel("$x_2$", fontsize=44) plt.tick_params(labelsize=28) plt.savefig("../../log/" + name + ".pdf", bbox_inches='tight') plt.clf() plt.close('all')
def runRappsipStrategy2(infile,runs, larr,l1strat="ho_p_q",box=np.array([[-1,1],[-1,1]]),trainingScale="0.5x",outfile="out.json",debug=0): # l1strat="ho_p_q" # l1strat="all_p_q" X, Y = tools.readData(infile) outJSON = {} # runs = [[2,2],[3,?3],[4,4],[5,5],[6,6]] for r in runs: for l in larr: pdeg=r[0] qdeg=r[1] if(l1strat == "ho_p_q"): ppenaltybin = np.ones(pdeg+1) ppenaltybin[pdeg] = 0 qpenaltybin = np.ones(qdeg+1) qpenaltybin[qdeg] = 0 elif(l1strat == "all_p_q"): ppenaltybin = np.zeros(pdeg+1) qpenaltybin = np.zeros(qdeg+1) rappsip = RationalApproximationSIP( X, Y, m=pdeg, n=qdeg, trainingscale=trainingScale, roboptstrategy="baron", box=box, strategy=2, penaltyparam=l, ppenaltybin=ppenaltybin.tolist(), qpenaltybin=qpenaltybin.tolist() ) outJSON["p%s_q%s_%.E"%(str(pdeg),str(qdeg),l)] = rappsip.asDict if(debug == 1): import json with open("/tmp/s2_latest.json", "w") as f: json.dump(outJSON, f,indent=4, sort_keys=True) import json with open(outfile, "w") as f: json.dump(outJSON, f,indent=4, sort_keys=True)
import json with open(fname, "w") as f: json.dump(self.asDict, f, indent=indent, sort_keys=sort_keys) def printDebug(self, msg): import datetime print("[d%d p%d q%d ts%s] [[%s]] %s" % (self._dim, self._m, self._n, self._trainingscale, datetime.datetime.now().strftime("%Y-%m-%d %H:%M"), msg)) if __name__ == "__main__": import sys infilePath11 = "../benchmarkdata/f16.txt" # infilePath1 = "../benchmarkdata/f1_noise_0.1.txt" X, Y = tools.readData(infilePath11) r = RationalApproximationSIPONB( X, Y, m=2, n=3, trainingscale="Cp", roboptstrategy='ms', localoptsolver='scipy', fitstrategy='filter', strategy=0, ) r2 = apprentice.RationalApproximationSIP( X, Y,
def runCrossValidation(infile,box=np.array([[-1,1],[-1,1]]),outfile="out.json",debug=0): trainingScale = "Cp" X, Y = tools.readData(infile) # Some param overrides for debug larr = np.array([10**i for i in range(3,-13,-1)]) # larr = np.array([10**i for i in range(0,-5,-1)]) k=10 # k=2 outJSON = {} for pdeg in range(2,5): # for pdeg in range(3,5): ppenaltybin = np.zeros(pdeg+1) for qdeg in range(2,5): # for qdeg in range(3,5): qpenaltybin = np.zeros(qdeg+1) avgerror = np.zeros(len(larr)) avgerror_k = np.zeros(len(larr)) for index in range(len(larr)): l = larr[index] kfold = KFold(k) error_l = 0 for train, test in kfold.split(X): rappsip = RationalApproximationSIP( X[train], Y[train], m=pdeg, n=qdeg, trainingscale=trainingScale, box=box, strategy=2, penaltyparam=l, ppenaltybin=ppenaltybin.tolist(), qpenaltybin=qpenaltybin.tolist() ) error_l_k = np.sum([(rappsip(X[test])-Y[test])**2]) error_l += error_l_k avgerror[index] = error_l / len(X) avgerror_k[index] = error_l / len(X[test]) stderror = np.std(avgerror_k)/np.sqrt(k) minIndex = np.argmin(avgerror) minv = avgerror[minIndex] minl = larr[minIndex] currIndex = minIndex while currIndex >= 0: if(minv + stderror == avgerror[currIndex]): break elif(minv + stderror > avgerror[currIndex]): currIndex -= 1 else: currIndex += 1 break if(currIndex == -1): currIndex = 0 currl = larr[currIndex] # print(minIndex) # print(currIndex) # # print(avgerror) # print(avgerror_k) # print(stderror) # # print(minl) # print(currl) rappsip_min = RationalApproximationSIP( X, Y, m=pdeg, n=qdeg, trainingscale=trainingScale, box=box, strategy=2, penaltyparam=minl, ppenaltybin=ppenaltybin.tolist(), qpenaltybin=qpenaltybin.tolist() ) rappsip_minpse = rappsip_min if(currl != minl): rappsip_minpse = RationalApproximationSIP( X, Y, m=pdeg, n=qdeg, trainingscale=trainingScale, box=box, strategy=2, penaltyparam=currl, ppenaltybin=ppenaltybin.tolist(), qpenaltybin=qpenaltybin.tolist() ) rappsip = {"min":rappsip_min.asDict, "min plus SE":rappsip_minpse.asDict, "avgerror":avgerror.tolist(), "avgerror_k":avgerror_k.tolist(), "stderror":stderror,"minIndex":minIndex,"minl":minl, "minv":minv, "mpseIndex":currIndex, "mpsel":currl} outJSON["p%s_q%s"%(str(pdeg),str(qdeg))] = rappsip if(debug == 1): import json with open("/tmp/cv_latest.json", "w") as f: json.dump(outJSON, f,indent=4, sort_keys=True) # exit(1) import json with open(outfile, "w") as f: json.dump(outJSON, f,indent=4, sort_keys=True)
def runRappsipBaseStrategy(infile,runs, box=np.array([[-1,1],[-1,1]]),trainingScale="1x", roboptstrategy="ms",outfile="out.json",debug=0,debugfile="/tmp/s0_latest.json"): X, Y = tools.readData(infile) return runRappsipBaseStrategyFromPoints(X,Y,runs, box,trainingScale, roboptstrategy,outfile,debug,debugfile)