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.
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
Nadat je de bestanden gedownload hebt, maak je weer precies eenzelfde project als in de vorige les:
Let op de exacte bestandsnamen
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:
Zorg ervoor dat prediction.html genoemd wordt in de action
van je <form>
.
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.
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);
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);
});
}
neuralNetwork.load(modelDetails, predict);
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.
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: