2016-10-21 1 views
0

Salut, j'essaie de créer 10 sous-ensembles de formation (à partir d'un ensemble d'apprentissage de 75%) en extraction de boucle de façon aléatoire à partir d'une base de données (DB). J'utilisedata.frame creation with loop

smp_size<- floor((0.75* nrow(DB))/10) 
train_ind<-sample(seq_len(nrow(DB)), size=(smp_size)) 

training<- matrix(ncol=(ncol(DB)), nrow=(smp_size)) 
for (i in 1:10){ 
    training[i]<-DB[train_ind, ] 
} 

quel est le problème?

+3

Vous me dites. Y a-t-il un message d'erreur? N'es-tu pas content de la sortie? Veuillez inclure ces éléments dans votre question et fournissez également des exemples de données (vous pouvez utiliser des ensembles de données intégrés comme 'mtcars'). Le point d'une bonne question est que les gens peuvent prendre le code et l'exécuter sur leurs machines sans tracas. Voir http://stackoverflow.com/questions/5963269/how-to-make-a-great-r-reproducible-example – jakub

+0

ok thx .. je suis nouveau ici .. désolé – Tyu1990

Répondre

1

Pour partitionner votre ensemble de données en 10 sous-ensembles de taille égale, vous pouvez utiliser les éléments suivants:

# Randomly order the rows in your training set: 
DB <- DB[order(runif(nrow(DB))), ] 
# You will create a sequence 1,2,..,10,1,2,...,10,1,2.. you will use to subset 
inds <- rep(1:10, nrow(DB)/10) 
# split() will store the subsets (created by inds) in a list 
subsets <- split(DB, inds) 

Notez toutefois que split() ne vous donnera que des sous-ensembles de taille égale. Par conséquent, il pourrait arriver (et arrivera probablement) que certaines observations ne soient incluses dans aucun des sous-ensembles.

Si vous souhaitez utiliser toutes les observations, ce qui provoque des sous-ensembles pour être plus grand que les autres, utilisez inds <- rep(1:10, length.out = nrow(DB)) à la place

+0

ok, ça marche .. Merci! ! Juste une question de plus ... ça pourrait être stupide: pourquoi utilisez-vous runif()? – Tyu1990

+0

est-ce pour une répartition aléatoire des rangées? – Tyu1990

+0

Oui, il donne 'nrow (DB)' valeurs aléatoires, qui sont ensuite ordonnées. L'ordre de ces valeurs aléatoires est alors, bien sûr, également aléatoire. Vous donner un mélange aléatoire des indices de ligne –