Commit f003d9e1 authored by Larry Schultheis's avatar Larry Schultheis
Browse files

Auto stash before merge of "development" and "origin/development"

parent 2e5e1d38
Loading
Loading
Loading
Loading
+40 −0
Original line number Diff line number Diff line
@@ -21,6 +21,46 @@ sgd = None
nn = None
tree = None

def getPerformanceMetrics(y_actual, y_pred):
    if len(X) == 0:
        preprocessing()
    
    if tree == None:
        loadModels()
        
    X_train, X_test, Y_train, Y_test = train_test_split(X, Y, test_size=0.2, random_state=0)

    pla_yPred = pla.predict(X_test)
    sgd_yPred = sgd.predict(X_test)
    nn_yPred = nn.predict(X_test)
    tree_yPred = tree.predict(X_test)
    
    accuracy = [accuracy_score(Y_test, pla_yPred), 
                  accuracy_score(Y_test, sgd_yPred),
                  accuracy_score(Y_test, nn_yPred),
                  accuracy_score(Y_test, tree_yPred)]
    
    precision = [precision_score(Y_test, pla_yPred, average='macro'),
                  precision_score(Y_test, sgd_yPred, average='macro'),
                  precision_score(Y_test, nn_yPred, average='macro'),
                  precision_score(Y_test, tree_yPred, average='macro')]
        
    recall = [recall_score(Y_test, pla_yPred, average='macro'),
              recall_score(Y_test, sgd_yPred, average='macro'),
              recall_score(Y_test, nn_yPred, average='macro'),
              recall_score(Y_test, tree_yPred, average='macro')]
    
    f1 = [recall_score(Y_test, pla_yPred, average='macro'),
          recall_score(Y_test, sgd_yPred, average='macro'),
          recall_score(Y_test, nn_yPred, average='macro'),
          recall_score(Y_test, tree_yPred, average='macro')]
    
    # accuracy = accuracy_score(y_actual, y_pred)
    # precision = precision_score(y_actual, y_pred, average='macro')
    # recall = recall_score(y_actual, y_pred, average='macro')
    # f1 = f1_score(y_actual, y_pred, average='macro')
    
    return accuracy, precision, recall, f1

def printMetrics(y_actual, y_pred):
    print('Accuracy: ', accuracy_score(y_actual, y_pred))
+8 −5
Original line number Diff line number Diff line
@@ -50,11 +50,14 @@ def correctPrediction():
# TODO make this get the actual ranking of algorithms
@app.route('/getAlgorithms', methods=["GET"])
def getTopAlgorithms():
    name = ["This (in use)", "Comes", "From", "The", "Server"]
    f1 = ["5", "4", "3", "2", "1"]
    precision = ["1", "2", "3", "4", "5"]
    recall = ["1", "2", "3", "4", "5"]
    accuracy = ["1", "2", "3", "4", "5"]
    # name = ["This (in use)", "Comes", "From", "The", "Server"]
    # f1 = ["5", "4", "3", "2", "1"]
    # precision = ["1", "2", "3", "4", "5"]
    # recall = ["1", "2", "3", "4", "5"]
    # accuracy = ["1", "2", "3", "4", "5"]
    
    name = "Perceptron", "Stochastic Gradient Descent", "Neural Network", "Decision Tree"
    accuracy, precision, recall, f1 = ml.getPerformanceMetrics()

    val = {
        "name": name,
+32 −32
Original line number Diff line number Diff line
@@ -109,38 +109,38 @@ function getTopAlgorithms() {
            replyObj = JSON.parse(replyString);
            console.log(replyObj)
            // put the algorithm names in their ranked order
            document.getElementById("alg1_name").innerHTML = "<b>" + replyObj.name[0] + "</b>";
            document.getElementById("alg2_name").innerText = replyObj.name[1];
            document.getElementById("alg3_name").innerText = replyObj.name[2];
            document.getElementById("alg4_name").innerText = replyObj.name[3];
            document.getElementById("alg5_name").innerText = replyObj.name[4];

            // put the algorithms' F1 scores in their ranked order
            document.getElementById("alg1_f1").innerHTML = "<b>" + replyObj.f1[0] + "</b>";
            document.getElementById("alg2_f1").innerText = replyObj.f1[1];
            document.getElementById("alg3_f1").innerText = replyObj.f1[2];
            document.getElementById("alg4_f1").innerText = replyObj.f1[3];
            document.getElementById("alg5_f1").innerText = replyObj.f1[4];

            document.getElementById("alg1_acc").innerHTML = "<b>" + replyObj.accuracy[0] + "</b>";
            document.getElementById("alg2_acc").innerText = replyObj.accuracy[1];
            document.getElementById("alg3_acc").innerText = replyObj.accuracy[2];
            document.getElementById("alg4_acc").innerText = replyObj.accuracy[3];
            document.getElementById("alg5_acc").innerText = replyObj.accuracy[4];

            document.getElementById("alg1_precision").innerHTML = "<b>" + replyObj.precision[0] + "</b>";
            document.getElementById("alg2_precision").innerText = replyObj.precision[1];
            document.getElementById("alg3_precision").innerText = replyObj.precision[2];
            document.getElementById("alg4_precision").innerText = replyObj.precision[3];
            document.getElementById("alg5_precision").innerText = replyObj.precision[4];

            document.getElementById("alg1_recall").innerHTML = "<b>" + replyObj.recall[0] + "</b>";
            document.getElementById("alg2_recall").innerText = replyObj.recall[1];
            document.getElementById("alg3_recall").innerText = replyObj.recall[2];
            document.getElementById("alg4_recall").innerText = replyObj.recall[3];
            document.getElementById("alg5_recall").innerText = replyObj.recall[4];                        

            loadAlgGraph(replyObj)
            // document.getElementById("alg1_name").innerHTML = "<b>" + replyObj.name[0] + "</b>";
            // document.getElementById("alg2_name").innerText = replyObj.name[1];
            // document.getElementById("alg3_name").innerText = replyObj.name[2];
            // document.getElementById("alg4_name").innerText = replyObj.name[3];
            // document.getElementById("alg5_name").innerText = replyObj.name[4];

            // // put the algorithms' F1 scores in their ranked order
            // document.getElementById("alg1_f1").innerHTML = "<b>" + replyObj.f1[0] + "</b>";
            // document.getElementById("alg2_f1").innerText = replyObj.f1[1];
            // document.getElementById("alg3_f1").innerText = replyObj.f1[2];
            // document.getElementById("alg4_f1").innerText = replyObj.f1[3];
            // document.getElementById("alg5_f1").innerText = replyObj.f1[4];

            // document.getElementById("alg1_acc").innerHTML = "<b>" + replyObj.accuracy[0] + "</b>";
            // document.getElementById("alg2_acc").innerText = replyObj.accuracy[1];
            // document.getElementById("alg3_acc").innerText = replyObj.accuracy[2];
            // document.getElementById("alg4_acc").innerText = replyObj.accuracy[3];
            // document.getElementById("alg5_acc").innerText = replyObj.accuracy[4];

            // document.getElementById("alg1_precision").innerHTML = "<b>" + replyObj.precision[0] + "</b>";
            // document.getElementById("alg2_precision").innerText = replyObj.precision[1];
            // document.getElementById("alg3_precision").innerText = replyObj.precision[2];
            // document.getElementById("alg4_precision").innerText = replyObj.precision[3];
            // document.getElementById("alg5_precision").innerText = replyObj.precision[4];

            // document.getElementById("alg1_recall").innerHTML = "<b>" + replyObj.recall[0] + "</b>";
            // document.getElementById("alg2_recall").innerText = replyObj.recall[1];
            // document.getElementById("alg3_recall").innerText = replyObj.recall[2];
            // document.getElementById("alg4_recall").innerText = replyObj.recall[3];
            // document.getElementById("alg5_recall").innerText = replyObj.recall[4];                        

            // loadAlgGraph(replyObj)
        }
    }
    http.send();