Bonjour, c'est mon premier message sur ce forum et j'ai besoin d'aide en R s'il vous plaît

J'ai un projet de machine Learning à rendre et ça fait 6h que j'essaie de débuguer mes if mais je n'y arrive pas

je vous montre mon code :

# Partie II : Super learning pour le choix des hyper paramètres k et d ( ou plus précisement du choix de la Matrice de poids des hyper paramètres k et d )


On definit la fonction de perte de mauvaise classification.

```{r}
perte <- function(u,y){
if(u==y)
return(1)
else
return(0)
}
```


On definit un kNN un peu special où l'on ne s'interesse qu'à une seule des 7 dimension de X pour lui atribuer une étiquette Y ( dans un premier temps dans [0;1]).


```{r}
algo<-function(k,d,A,x){
c<-0 # on initialise le compteur c à 0.
for (i in 1:k){ # on cherche dans la boucle les k plus
b<-which.min(abs(x[d]-A[,d])) # proches voisins pour la coordonnée d
c<-c+1/k*A[b,8] # avec d entre 1 et 7. enfin, on fait la
A<-A[-b,] # somme des étiquettes divisé par k.
}
return(c)
}
```


On choisit un seuillage basique car nous n'avons pas de preference d'erreur dans les donnés du problème, il n'est pas plus grave de classer un 1 en 0 que de classer un 0 en 1 donc on choisit un seuil pile au milieu : 0.5.


```{r}
seuil<-function(c){
if(c<0.5){
return(0)
}else{
return(1)
}
}
```


calcul de la taille de la matrice de poids (que l'on notera SL)


```{r}
200*7
```
preparation de l'algorithme :

```{r}
risque<-(rep(0,25)) # Initialisation du risque pour l'algo suivant.
SL<-matrix(rep(0, 1400), 200, 7) # De même pour la matrice des poids.
```

Algorithme de Super-Learning fait maison :

```{r}
for (k in 1:200){
for (d in 1:7){ # Pour tout d et pour tout k on fait la grande boucle
for (i in 1:25){
test<-dat[50*(i-1)+1:50*i,] # on retire le i-ème volet et on le nomme
train<-dat[-(50*(i-1)+1:50*i),] # test, tandis que on appelle le reste
for (j in 1: 50){ # train. ( entrainement en anglais )
testy<-test[j,8]
testx<-test[j,-8] # on separe les X et les Y de test.
c<-algo(k,d,train,testx) # on applique l'algorithme entrainé (on
c<-seuil(c) # l'entraine en même temps à vrai dire)
risque[i]<-risque[i]+1/50*perte(testy,c) # calcul du risque associé à
} # ce volet
}
SL[k,d]<-1/25*sum(risque) # Calcul du poids (avant normalisation) associé
} # k et d
}
```


le truc c est que quand j'utilise seuil ou perte dans un contexte normal ça marche très bien mais des que c'est dans les boucles de l'algorithme ça veut pas... J'ai essayé de bidouiller mais tantôt ça me sort '' Error in if (c < 0.5) { : l'argument est de longueur nulle '' comme c'est le cas actuellement tantôt c'est plutot " Error in if (u == y) return(1) else return(0) :
l'argument est de longueur nulle " ou encore " Erreur boucle if : "la condition a une longueur > 1 "

je suis dépité...