Wolfram Function Repository
Instant-use add-on functions for the Wolfram Language
Function Repository Resource:
Partition a list into sublists with lengths proportional to weights in another list
ResourceFunction["RatioPartition"][list,{weight1,weight2, …}] splits list into sublists with lengths proportional to weight1,weight2, …. |
Partition a list into sublists containing 10%, 30% and 60% of the data:
In[1]:= | ![]() |
Out[1]= | ![]() |
Verify that there are no overlapping sublists:
In[2]:= | ![]() |
Out[2]= | ![]() |
Partition a list into sublists containing 22%, 27% and 51% of the data. This time, the partitions can only be approximated:
In[3]:= | ![]() |
Out[3]= | ![]() |
Partition a list into any number of parts:
In[4]:= | ![]() |
Out[4]= | ![]() |
Partition a list using decimals or fractions:
In[5]:= | ![]() |
Out[5]= | ![]() |
Partition a list using weights that don’t sum to a power of 10:
In[6]:= | ![]() |
Out[6]= | ![]() |
Randomize the data before partitioning with the "Randomize" option:
In[7]:= | ![]() |
Out[7]= | ![]() |
RatioPartition is useful for separating data for training neural nets. Partition some randomized data into 60% training data, 20% validation data and 20% testing data:
In[8]:= | ![]() |
Train a classifier:
In[9]:= | ![]() |
Out[9]= | ![]() |
Measure the accuracy of the classifier:
In[10]:= | ![]() |
Out[10]= | ![]() |
When exact partitions are not possible, the order of the weights may affect the lengths of the resulting sublists:
In[11]:= | ![]() |
Out[11]= | ![]() |
In[12]:= | ![]() |
Out[12]= | ![]() |
The list of weights is scaled to the interval [0, 1]. Therefore, for best results, choose weights that add up to a power of 10. Not doing so may result in sublists of unexpected lengths:
In[13]:= | ![]() |
Out[13]= | ![]() |
In[14]:= | ![]() |
Out[14]= | ![]() |
Using a single weight will leave the list unchanged (albeit as a sublist):
In[15]:= | ![]() |
Out[15]= | ![]() |
Due to rounding, it is possible to have empty lists in the output:
In[16]:= | ![]() |
Out[16]= | ![]() |
Weights must be positive real numbers:
In[17]:= | ![]() |
Out[17]= | ![]() |
This work is licensed under a Creative Commons Attribution 4.0 International License