Trying to use sets for random selection, but the pop() method returns items in order

Mario Garcia Mariosky at gmail.com
Thu Jul 2 07:33:25 CEST 2009


Thank you all for your input, Yes random is what I need!!
I checked the docs, and follow your comments, I will use both
random.sample and random.shuffle,and random.choice etc. !!

For this particular problem I think ramdom.shuffle() is what I need.

I was not very clear or complete in my explanation, and  I didn't
expect such a
discussion on my needs, now I'm embarrassed :) .

The list is a data set for training a machine learning algorithm. I
want to
use 70% of the records (random) for training, but then the remaining
30% are used for
validation. This is repeated a few times choose again 70% at random
for training and
the rest for validation.

With random.shuffle() I just iterate for the first 70% of the records
for training and
I just continue with the remaining 30%. This last 30% we dont care if
its random anymore,
so shuffle is doing some extra work as it was pointed out.
Conceptually something like this:

population = range(100)
training = random.sample(population,70)
validation = set(population).difference(set(training))

But I think this is more costly

Thanks Again
Mario



More information about the Python-list mailing list