-
Notifications
You must be signed in to change notification settings - Fork 2
/
bot.pedrobis.R
63 lines (47 loc) · 2.28 KB
/
bot.pedrobis.R
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
# Chargement de la bibliothèque
library (e1071)
# Chargement des fonction de addData
source("addData.r")
######### Preparation des objets d'enrichissement de données
### Initialisation de la liste contenant les objets d'enrichisement
listOfFx2 = list()
listOfFx2[[1]] = matrice1ou2
#pedro.fx[[2]] = somme
#pedro.fx[[3]] = vide
#pedro.fx[[4]] = nbVidesAvantPleine
#pedro.fx[[5]] = posMax
# Chargement des données
awele.data = read.table ("awele.data", sep = ",", header = T)
####################
# Première version #
####################
# On sélectionne toutes les observations correspondant aux coups joués par le gagnant de la partie
# On construit un modèle de Naive Bayes à partir des premières variables de ces observations
# On essaye de prédire la variable du coup joué
# Fonction de construction du modèle
pedrobis.create.model = function (dataset, listOfFx){
# On complète les données
dataset = addData.completeData(dataset, listOfFx)
decal = addData.getDecalage(listOfFx)
# On s?lectionne les instances qui correspondent aux coups joués par le vainqueur des affrontements
selection = dataset [dataset [, (14+decal)] == "G", ]
# Et on construit un mod?le de classification avec l'algorithme Naive bayes
model = naiveBayes (selection [, (1:12+decal)], selection [, (13+decal)])
return (model)
}
# Construction du modèle
pedrobis.model = pedrobis.create.model (awele.data, listOfFx2)
# Fonction d'évaluation de la meilleure solution selon l'état du plateau de jeu et du modèle
pedrobis.exec = function (awele, model, listOfFx)
{
# On récupère l'état du plateau de jeu (sous la forme d'une matrice plutÔt que d'un vecteur)
g = graines.matrix (awele)
# On ajoute les données
g = addData.completeData(g, listOfFx)
# On modifie les noms des colonnes pour correspondre aux noms dans l'ensemble d'apprentissage
colnames (g)[1:12] = c (paste ("J", 1:6, sep = ""), paste ("A", 1:6, sep = ""))
# On applique le mod?le et on retourne les pr?dictions (sous la forme de degr?s d'appartenance aux classes)
return (predict (model, g, type = "raw"))
}
# Fonction d'évaluation de la meilleure solution selon l'état du plateau de jeu (en utilisant la variable globale nb.model)
pedrobis = function (awele) return (pedrobis.exec (awele, pedrobis.model, listOfFx2))