def main_ordinal(fileName, clf, k=3, preproc=False, evalFunc = Util.brierScore): data = np.loadtxt(fname=fileName, delimiter=",") hda = HighDimAlg(clf, "ordinal", kTimes=k) scoreList = [] nRunning = 10 for _ in range(nRunning): trainX, trainY, testX, testY = Util.readData(data, False, preproc) hda.fit(trainX, trainY) s = evalFunc(hda.predict(testX), testY) print("score = ", s) scoreList.append(s) score = sum(scoreList)/nRunning print("mean score = ", score) with open("log/HDA_test_log_ordinal.txt", 'a') as f: log = ','.join([dt.now().strftime("%Y/%m/%d %H:%M"), str(fileName), \ "GLS", str(k), \ str(preproc), evalFunc.__name__, str(score)]) f.write(log + '\n')
def worker(chosenNum): print("Current chosen number: ", chosenNum) # global validateX, validateY, trainX, trainY, regs, xis, lock, clfs clf = GLS() hda = HighDimAlg(clf, "convolve") hda.setWidth(28) hda.setKernels([(2,2), (4,4), (7,7)]) target = validateY.copy() target[target == chosenNum] = 999 target[target != 999] = 0 target[target == 999] = 1 bestScore, bestXi, bestReg = 1e10, None, None for xi in xis: hda.setXi(xi) score, reg = Util.crossValidate(hda, validateX, target, \ Util.brierScore, 2, "Regular", regs) if score < bestScore: bestScore, bestXi, bestReg = score, xi, reg print("bestScore, bestXi, bestReg = ", bestScore, bestXi, bestReg) hda.setXi(bestXi) hda.setRegular(bestReg) target = trainY.copy() target[target == chosenNum] = 999 target[target != 999] = 0 target[target == 999] = 1 hda.fit(trainX, target) res = {} res['num'] = chosenNum res['clf'] = hda res['validateScore'] = bestScore lock.acquire() try: clfs.append(res) finally: lock.release()