def runAndMeasure(): # Data X, Y = getDataValidation() # Network inputSize = 7 layerCount = 2 netConf = nnConf.NeuralNetworkConf(inputSize, layerCount) netConf.layerConf[0].neuronCount = 20 netConf.layerConf[0].activationFn = "relu" netConf.layerConf[0].weightInitializerMethod = "random" netConf.layerConf[1].neuronCount = 1 netConf.layerConf[1].activationFn = "sigmoid" netConf.layerConf[1].weightInitializerMethod = "random" netConf.Lambda = .00009 # 0.0001 netConf.maxIter = 500 accuracyList = nnUtils.validateNN(X, Y, netConf, 5, showLearning=False) netConf.accuracy = np.mean(accuracyList) print(accuracyList) print("Mean Accuracy: ", netConf.accuracy) return (netConf, nn.getGlobalConf())
def validateTitanic(): # Data X, Y = getDataValidation() # Network inputSize = 7 layerCount = 2 networkConf = nnConf.NeuralNetworkConf(inputSize, layerCount) networkConf.layerConf[0].neuronCount = 20 networkConf.layerConf[0].activationFn = "relu" networkConf.layerConf[0].weightInitializerMethod = "random" networkConf.layerConf[1].neuronCount = 1 networkConf.layerConf[1].activationFn = "sigmoid" networkConf.layerConf[1].weightInitializerMethod = "random" networkConf.Lambda = .00009 # 0.0001 networkConf.maxIter = 500 accuracyList = nnUtils.validateNN(X, Y, networkConf, 5, showLearning=False) print(accuracyList) print("Mean Accuracy: ", np.mean(accuracyList)) # Store Neural network settings and state # print(NN.getGlobalConf()) # print(networkConf) nnUtils.saveConfig(networkConf, nn.getGlobalConf()) nnUtils.restoreConfig() accuracyList = [] return (accuracyList)
def findAndStoreBestInitialWeights(X, Y, netConf, noOfPass): bestAccuracy = 0 n_splits = 5 for i in range(noOfPass): accuracyList = nnUtils.validateNN(X, Y, netConf, n_splits, showLearning=False) if np.mean(accuracyList) > bestAccuracy: bestAccuracy = np.mean(accuracyList) # Store Neural network settings and state print("Got Better accuracy: ", bestAccuracy) netConf.accuracy = bestAccuracy nnUtils.saveConfig(netConf, nn.getGlobalConf(), "nn.json")
def getBestMaxIter(X, Y, netConf): bestMaxIter = 0 bestAccuracy = 0 for MaxIter in range(100, 1000, 100): netConf.maxIter = MaxIter n_splits = 5 accuracyList = nnUtils.validateNN(X, Y, netConf, n_splits, showLearning=False, wtReuse=True, wtAndBias=nn.getGlobalConf()) if np.mean(accuracyList) > bestAccuracy: bestAccuracy = np.mean(accuracyList) bestMaxIter = MaxIter return (bestMaxIter, bestAccuracy)
def getBestLambda(X, Y, netConf): bestLambda = 0 bestAccuracy = 0 for Lambda in np.linspace(0.00001, 0.0001, 200): netConf.Lambda = Lambda n_splits = 5 accuracyList = nnUtils.validateNN(X, Y, netConf, n_splits, showLearning=False, wtReuse=True, wtAndBias=nn.getGlobalConf()) if np.mean(accuracyList) > bestAccuracy: bestAccuracy = np.mean(accuracyList) bestLambda = Lambda return (bestLambda, bestAccuracy)
def getBestNeuronCount(X, Y, netConf): bestNeuronCount = 0 bestAccuracy = 0 for neuronCount in range(2, 30): netConf.layerConf[0].neuronCount = neuronCount n_splits = 5 accuracyList = nnUtils.validateNN(X, Y, netConf, n_splits, showLearning=False, wtReuse=True, wtAndBias=nn.getGlobalConf()) if np.mean(accuracyList) > bestAccuracy: bestAccuracy = np.mean(accuracyList) bestNeuronCount = neuronCount return (bestNeuronCount, bestAccuracy)