Terug

JavaScript 2.4 – Classification

Classification vs Regression

In de laatste les heb je geleerd hoe we een voorspelling kunnen maken op basis van regression. In deze les leren we een model te gebruiken dat gebaseerd is op classification.

Predict met Classification

  1. Start een nieuw project volgens de checklist die we hier hebben gegeven: HTML Checklist.

  2. We gebruiken als dataset HappinessSurvey2015.cvs.
    Als je zelf de dataset wil trainen, doe je dat op cmd.com/nntrainer

    De instellingen die gebruikt zijn om te trainen:

    Training Type
    Classification

    Inputs
    X1 (the availability of information about the city services, 1 tot 5)
    X2 (the cost of housing, 1 tot 5)
    X3 (the overall quality of public schools, 1 tot 5)
    X4 (your trust in the local police, 1 tot 5)
    X5 (the maintenance of streets and sidewalk, 1 tot 5)
    X6 (the availability of social community events, 1 tot 5)

    Output
    D (Voorspelling: 0 = ongelukkig, 1 = gelukkig)

    Het getrainde model kun je hier downloaden:model-Les4

  3. Nadat je de bestanden gedownload hebt, maak je weer precies eenzelfde project als in de vorige les:

    Let op de exacte bestandsnamen

  4. Binnen onze index.html page hebben we een formulier nodig met 6 vragen, en een submit button.
    Voor elke vraag maak je een select input, met 5 options. Je geeft de options de value 1 t/m 5. Die nummers betekenen:

    1 = Very dissatisfied
    2 = Dissatisfied
    3 = Neutral
    4 = Satisfied
    5 = Very satisfied.

    <label>the availability of information about the city services</label>
    <select name="question1">
        <option value="1">Very dissatisfied</option>
        <option value="2">Dissatisfied</option>
        <option value="3">Neutral</option>
        <option value="4">Satisfied</option>
        <option value="5">Very satisfied</option>
    </select>
    

    Vergeet niet elke select een andere name te geven.

    De pagina zou er zo uit moeten zien:

  5. Zorg ervoor dat prediction.html genoemd wordt in de actionvan je <form>.

Prediction.html

  1. Zie Les 3 stappen 9 en 10 voor de setup van prediction.html. Die zijn voor deze app precies hetzelfde.

script.js

  1. In script.js beginnen we met het definiëren van de parameters, zoals in de vorige les. Als je deze stappen ingewikkeld vindt, lees dan de vorige les nog eens door.

    var parameters = new URLSearchParams(window.location.search);
    

    We hebben 6 vragen, en 6 bijbehorende inputs in onze dataset. De naam van elke input in de dataset (X1 tot X6) koppelen we elk aan een naam van een element uit het formulier.
    Daarna tonen we de ontvangen inputs in de console.

    var inputs = {
        X1: parseInt(parameters.get("question1")),
        X2: parseInt(parameters.get("question2")),
        X3: parseInt(parameters.get("question3")),
        X4: parseInt(parameters.get("question4")),
        X5: parseInt(parameters.get("question5")),
        X6: parseInt(parameters.get("question6"))
    }
    
    console.log(inputs);
    

N.B.: Op dit moment is het goed om te checken of je code werkt.

  1. Vervolgens geven we weer de opties aan die nodig zijn voor het neuralNetwork en om de benodigde bestanden te linken uit je model map. Het enige verschil is hier type die nu “classification” is.
    var options = {
      type: "classification"
    };
    
    var modelDetails = {
      model: "model/model.json",
      metadata: "model/model_meta.json",
      weights: "model/model.weights.bin"
    };
    
    var neuralNetwork = ml5.neuralNetwork(options);
    

predict() functie

  1. De voorspellings-functie die we nu gaan maken lijkt op die van les 3, maar we moeten het aanpassen voor Classification. In het regression voorbeelden gebruikten we neuralNetwork.predict. Voor een classification model, moeten we het veranderen naar neuralNetwork.classify:
    function predict() {
      neuralNetwork.classify(inputs, function (err, results) {
        if (err) {
         console.log(err);
          return;
        }
    
            var result = results[0];
            // We hebben een voorspelling
            console.log(result);
        });
    }
    
  2. Vervolgens maken en starten we weer het neuralNetwork:
    neuralNetwork.load(modelDetails, predict);
    
  3. Start nu index.html in de live server, vul je formulier in, en je zou een voorspelling in de console moeten zien:

  4. Als je de classification in de console vergelijkt met de regression van de vorige les, zie je dat de voorspelling net iets anders is:
    Classification

    Regression

    In de volgende les leer je deze voorspellingen te gebruiken in JavaScript.

Opdracht

  1. Maak nu zelf een ‘prediction website’ met je eigen data, een regression of classification voorspelling, en print de voorspelling in de console.
    Als je nog geen eigen dataset hebt, is driving_data_final.csv een simpele dataset voor classification. En Belgium_wages.csv is voor regression. (Je kunt ze hier vinden: Datasets)

    Let op:

    • Kies alleen de relevante inputs en output voor de training. Kolommen zoals ‘index’ kun je veilig instellen op ‘ignore the column’.
    • Check de namen van de formulierelementen goed. Ze moeten EXACT hetzelfde in je html als in je js bestand zijn.