Scikit learn train test split without mixing participants in trails












0












$begingroup$


I have dataset of trails. There are 90 participants that appear in 90 trails each. So 450 trails in total.



I'm looking to split my dataset so participants doesn't get mixed over training and test set. I want all trails of 25 participants in my training set and trails of the remaining 25 in the test set.



The reason is I want to test on totally unseen data to access overfitting. Is there a way of achieving this within scikit-learn?










share|improve this question









New contributor




Andrew is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.







$endgroup$












  • $begingroup$
    What do you mean by "splitting based on participant?"
    $endgroup$
    – Ethan
    yesterday










  • $begingroup$
    @Ethan As in, I would like to split based on participant IDs and then classify exercises. For example, if I wanted to do a 50/50 train/test split, then I would have 25 participants data in the training, then test on the other 25 participants data.
    $endgroup$
    – Andrew
    yesterday










  • $begingroup$
    I tried editing to clear up some of the confusion about what you are asking. Maybe someone will be able to answer now, but I'm pretty sure it would be easier to implement this functionality yourself.
    $endgroup$
    – Simon Larsson
    14 hours ago
















0












$begingroup$


I have dataset of trails. There are 90 participants that appear in 90 trails each. So 450 trails in total.



I'm looking to split my dataset so participants doesn't get mixed over training and test set. I want all trails of 25 participants in my training set and trails of the remaining 25 in the test set.



The reason is I want to test on totally unseen data to access overfitting. Is there a way of achieving this within scikit-learn?










share|improve this question









New contributor




Andrew is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.







$endgroup$












  • $begingroup$
    What do you mean by "splitting based on participant?"
    $endgroup$
    – Ethan
    yesterday










  • $begingroup$
    @Ethan As in, I would like to split based on participant IDs and then classify exercises. For example, if I wanted to do a 50/50 train/test split, then I would have 25 participants data in the training, then test on the other 25 participants data.
    $endgroup$
    – Andrew
    yesterday










  • $begingroup$
    I tried editing to clear up some of the confusion about what you are asking. Maybe someone will be able to answer now, but I'm pretty sure it would be easier to implement this functionality yourself.
    $endgroup$
    – Simon Larsson
    14 hours ago














0












0








0





$begingroup$


I have dataset of trails. There are 90 participants that appear in 90 trails each. So 450 trails in total.



I'm looking to split my dataset so participants doesn't get mixed over training and test set. I want all trails of 25 participants in my training set and trails of the remaining 25 in the test set.



The reason is I want to test on totally unseen data to access overfitting. Is there a way of achieving this within scikit-learn?










share|improve this question









New contributor




Andrew is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.







$endgroup$




I have dataset of trails. There are 90 participants that appear in 90 trails each. So 450 trails in total.



I'm looking to split my dataset so participants doesn't get mixed over training and test set. I want all trails of 25 participants in my training set and trails of the remaining 25 in the test set.



The reason is I want to test on totally unseen data to access overfitting. Is there a way of achieving this within scikit-learn?







machine-learning






share|improve this question









New contributor




Andrew is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.











share|improve this question









New contributor




Andrew is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.









share|improve this question




share|improve this question








edited 14 hours ago









Simon Larsson

5086




5086






New contributor




Andrew is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.









asked yesterday









AndrewAndrew

1




1




New contributor




Andrew is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.





New contributor





Andrew is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.






Andrew is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.












  • $begingroup$
    What do you mean by "splitting based on participant?"
    $endgroup$
    – Ethan
    yesterday










  • $begingroup$
    @Ethan As in, I would like to split based on participant IDs and then classify exercises. For example, if I wanted to do a 50/50 train/test split, then I would have 25 participants data in the training, then test on the other 25 participants data.
    $endgroup$
    – Andrew
    yesterday










  • $begingroup$
    I tried editing to clear up some of the confusion about what you are asking. Maybe someone will be able to answer now, but I'm pretty sure it would be easier to implement this functionality yourself.
    $endgroup$
    – Simon Larsson
    14 hours ago


















  • $begingroup$
    What do you mean by "splitting based on participant?"
    $endgroup$
    – Ethan
    yesterday










  • $begingroup$
    @Ethan As in, I would like to split based on participant IDs and then classify exercises. For example, if I wanted to do a 50/50 train/test split, then I would have 25 participants data in the training, then test on the other 25 participants data.
    $endgroup$
    – Andrew
    yesterday










  • $begingroup$
    I tried editing to clear up some of the confusion about what you are asking. Maybe someone will be able to answer now, but I'm pretty sure it would be easier to implement this functionality yourself.
    $endgroup$
    – Simon Larsson
    14 hours ago
















$begingroup$
What do you mean by "splitting based on participant?"
$endgroup$
– Ethan
yesterday




$begingroup$
What do you mean by "splitting based on participant?"
$endgroup$
– Ethan
yesterday












$begingroup$
@Ethan As in, I would like to split based on participant IDs and then classify exercises. For example, if I wanted to do a 50/50 train/test split, then I would have 25 participants data in the training, then test on the other 25 participants data.
$endgroup$
– Andrew
yesterday




$begingroup$
@Ethan As in, I would like to split based on participant IDs and then classify exercises. For example, if I wanted to do a 50/50 train/test split, then I would have 25 participants data in the training, then test on the other 25 participants data.
$endgroup$
– Andrew
yesterday












$begingroup$
I tried editing to clear up some of the confusion about what you are asking. Maybe someone will be able to answer now, but I'm pretty sure it would be easier to implement this functionality yourself.
$endgroup$
– Simon Larsson
14 hours ago




$begingroup$
I tried editing to clear up some of the confusion about what you are asking. Maybe someone will be able to answer now, but I'm pretty sure it would be easier to implement this functionality yourself.
$endgroup$
– Simon Larsson
14 hours ago










1 Answer
1






active

oldest

votes


















2












$begingroup$

To split data into Training and Test sets in scikit-learn you can use the train_test_split function.



To implement this:



from sklearn.model_selection import train_test_split

sklearn.model_selection.train_test_split()


Then pass through the arguments that you would like to set as parameters. Some parameters of note you may like to tune are the sizes of the training and test sets as well as setting if the splits are shuffled or not.



You can read about this further on its scikit-learn documentation page here.






share|improve this answer









$endgroup$













  • $begingroup$
    Yes, I am using that function. I don't think stratify is the correct parameter since all that is doing it looking to make sure proportions stay the same. I just want to split participant data as being used for training only or testing only.
    $endgroup$
    – Andrew
    yesterday










  • $begingroup$
    train_test_split will by default, do a 75% training 25% testing split. Is this what you want to change? I am not sure I understand your question.
    $endgroup$
    – Ethan
    yesterday












  • $begingroup$
    No, I want to split based on participants. Currently it randomly splits so all 50 participants are very likely going to be included in the training and testing portions.
    $endgroup$
    – Andrew
    23 hours ago










  • $begingroup$
    I want to do a 50% train split with the additional parameter that participants are mutually excluded to either the train or test split. So there are 25 participants worth of data on the train side and 25 participants worth of data on the test side. Basically, is there an easy way to randomize 50 participants into two groups? It seems like the answer is no and requires a custom script.
    $endgroup$
    – Andrew
    23 hours ago










  • $begingroup$
    What exactly do you mean by very likely to be included? If you have 50 samples, and pass them through train_test_split, all 50 samples will be included in either the training set or the test set. To your second comment, everything is mutually exclusive. No sample will be included in both the training and the test set.
    $endgroup$
    – Ethan
    11 hours ago











Your Answer





StackExchange.ifUsing("editor", function () {
return StackExchange.using("mathjaxEditing", function () {
StackExchange.MarkdownEditor.creationCallbacks.add(function (editor, postfix) {
StackExchange.mathjaxEditing.prepareWmdForMathJax(editor, postfix, [["$", "$"], ["\\(","\\)"]]);
});
});
}, "mathjax-editing");

StackExchange.ready(function() {
var channelOptions = {
tags: "".split(" "),
id: "557"
};
initTagRenderer("".split(" "), "".split(" "), channelOptions);

StackExchange.using("externalEditor", function() {
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled) {
StackExchange.using("snippets", function() {
createEditor();
});
}
else {
createEditor();
}
});

function createEditor() {
StackExchange.prepareEditor({
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: false,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: null,
bindNavPrevention: true,
postfix: "",
imageUploader: {
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
},
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
});


}
});






Andrew is a new contributor. Be nice, and check out our Code of Conduct.










draft saved

draft discarded


















StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fdatascience.stackexchange.com%2fquestions%2f47544%2fscikit-learn-train-test-split-without-mixing-participants-in-trails%23new-answer', 'question_page');
}
);

Post as a guest















Required, but never shown

























1 Answer
1






active

oldest

votes








1 Answer
1






active

oldest

votes









active

oldest

votes






active

oldest

votes









2












$begingroup$

To split data into Training and Test sets in scikit-learn you can use the train_test_split function.



To implement this:



from sklearn.model_selection import train_test_split

sklearn.model_selection.train_test_split()


Then pass through the arguments that you would like to set as parameters. Some parameters of note you may like to tune are the sizes of the training and test sets as well as setting if the splits are shuffled or not.



You can read about this further on its scikit-learn documentation page here.






share|improve this answer









$endgroup$













  • $begingroup$
    Yes, I am using that function. I don't think stratify is the correct parameter since all that is doing it looking to make sure proportions stay the same. I just want to split participant data as being used for training only or testing only.
    $endgroup$
    – Andrew
    yesterday










  • $begingroup$
    train_test_split will by default, do a 75% training 25% testing split. Is this what you want to change? I am not sure I understand your question.
    $endgroup$
    – Ethan
    yesterday












  • $begingroup$
    No, I want to split based on participants. Currently it randomly splits so all 50 participants are very likely going to be included in the training and testing portions.
    $endgroup$
    – Andrew
    23 hours ago










  • $begingroup$
    I want to do a 50% train split with the additional parameter that participants are mutually excluded to either the train or test split. So there are 25 participants worth of data on the train side and 25 participants worth of data on the test side. Basically, is there an easy way to randomize 50 participants into two groups? It seems like the answer is no and requires a custom script.
    $endgroup$
    – Andrew
    23 hours ago










  • $begingroup$
    What exactly do you mean by very likely to be included? If you have 50 samples, and pass them through train_test_split, all 50 samples will be included in either the training set or the test set. To your second comment, everything is mutually exclusive. No sample will be included in both the training and the test set.
    $endgroup$
    – Ethan
    11 hours ago
















2












$begingroup$

To split data into Training and Test sets in scikit-learn you can use the train_test_split function.



To implement this:



from sklearn.model_selection import train_test_split

sklearn.model_selection.train_test_split()


Then pass through the arguments that you would like to set as parameters. Some parameters of note you may like to tune are the sizes of the training and test sets as well as setting if the splits are shuffled or not.



You can read about this further on its scikit-learn documentation page here.






share|improve this answer









$endgroup$













  • $begingroup$
    Yes, I am using that function. I don't think stratify is the correct parameter since all that is doing it looking to make sure proportions stay the same. I just want to split participant data as being used for training only or testing only.
    $endgroup$
    – Andrew
    yesterday










  • $begingroup$
    train_test_split will by default, do a 75% training 25% testing split. Is this what you want to change? I am not sure I understand your question.
    $endgroup$
    – Ethan
    yesterday












  • $begingroup$
    No, I want to split based on participants. Currently it randomly splits so all 50 participants are very likely going to be included in the training and testing portions.
    $endgroup$
    – Andrew
    23 hours ago










  • $begingroup$
    I want to do a 50% train split with the additional parameter that participants are mutually excluded to either the train or test split. So there are 25 participants worth of data on the train side and 25 participants worth of data on the test side. Basically, is there an easy way to randomize 50 participants into two groups? It seems like the answer is no and requires a custom script.
    $endgroup$
    – Andrew
    23 hours ago










  • $begingroup$
    What exactly do you mean by very likely to be included? If you have 50 samples, and pass them through train_test_split, all 50 samples will be included in either the training set or the test set. To your second comment, everything is mutually exclusive. No sample will be included in both the training and the test set.
    $endgroup$
    – Ethan
    11 hours ago














2












2








2





$begingroup$

To split data into Training and Test sets in scikit-learn you can use the train_test_split function.



To implement this:



from sklearn.model_selection import train_test_split

sklearn.model_selection.train_test_split()


Then pass through the arguments that you would like to set as parameters. Some parameters of note you may like to tune are the sizes of the training and test sets as well as setting if the splits are shuffled or not.



You can read about this further on its scikit-learn documentation page here.






share|improve this answer









$endgroup$



To split data into Training and Test sets in scikit-learn you can use the train_test_split function.



To implement this:



from sklearn.model_selection import train_test_split

sklearn.model_selection.train_test_split()


Then pass through the arguments that you would like to set as parameters. Some parameters of note you may like to tune are the sizes of the training and test sets as well as setting if the splits are shuffled or not.



You can read about this further on its scikit-learn documentation page here.







share|improve this answer












share|improve this answer



share|improve this answer










answered yesterday









EthanEthan

580222




580222












  • $begingroup$
    Yes, I am using that function. I don't think stratify is the correct parameter since all that is doing it looking to make sure proportions stay the same. I just want to split participant data as being used for training only or testing only.
    $endgroup$
    – Andrew
    yesterday










  • $begingroup$
    train_test_split will by default, do a 75% training 25% testing split. Is this what you want to change? I am not sure I understand your question.
    $endgroup$
    – Ethan
    yesterday












  • $begingroup$
    No, I want to split based on participants. Currently it randomly splits so all 50 participants are very likely going to be included in the training and testing portions.
    $endgroup$
    – Andrew
    23 hours ago










  • $begingroup$
    I want to do a 50% train split with the additional parameter that participants are mutually excluded to either the train or test split. So there are 25 participants worth of data on the train side and 25 participants worth of data on the test side. Basically, is there an easy way to randomize 50 participants into two groups? It seems like the answer is no and requires a custom script.
    $endgroup$
    – Andrew
    23 hours ago










  • $begingroup$
    What exactly do you mean by very likely to be included? If you have 50 samples, and pass them through train_test_split, all 50 samples will be included in either the training set or the test set. To your second comment, everything is mutually exclusive. No sample will be included in both the training and the test set.
    $endgroup$
    – Ethan
    11 hours ago


















  • $begingroup$
    Yes, I am using that function. I don't think stratify is the correct parameter since all that is doing it looking to make sure proportions stay the same. I just want to split participant data as being used for training only or testing only.
    $endgroup$
    – Andrew
    yesterday










  • $begingroup$
    train_test_split will by default, do a 75% training 25% testing split. Is this what you want to change? I am not sure I understand your question.
    $endgroup$
    – Ethan
    yesterday












  • $begingroup$
    No, I want to split based on participants. Currently it randomly splits so all 50 participants are very likely going to be included in the training and testing portions.
    $endgroup$
    – Andrew
    23 hours ago










  • $begingroup$
    I want to do a 50% train split with the additional parameter that participants are mutually excluded to either the train or test split. So there are 25 participants worth of data on the train side and 25 participants worth of data on the test side. Basically, is there an easy way to randomize 50 participants into two groups? It seems like the answer is no and requires a custom script.
    $endgroup$
    – Andrew
    23 hours ago










  • $begingroup$
    What exactly do you mean by very likely to be included? If you have 50 samples, and pass them through train_test_split, all 50 samples will be included in either the training set or the test set. To your second comment, everything is mutually exclusive. No sample will be included in both the training and the test set.
    $endgroup$
    – Ethan
    11 hours ago
















$begingroup$
Yes, I am using that function. I don't think stratify is the correct parameter since all that is doing it looking to make sure proportions stay the same. I just want to split participant data as being used for training only or testing only.
$endgroup$
– Andrew
yesterday




$begingroup$
Yes, I am using that function. I don't think stratify is the correct parameter since all that is doing it looking to make sure proportions stay the same. I just want to split participant data as being used for training only or testing only.
$endgroup$
– Andrew
yesterday












$begingroup$
train_test_split will by default, do a 75% training 25% testing split. Is this what you want to change? I am not sure I understand your question.
$endgroup$
– Ethan
yesterday






$begingroup$
train_test_split will by default, do a 75% training 25% testing split. Is this what you want to change? I am not sure I understand your question.
$endgroup$
– Ethan
yesterday














$begingroup$
No, I want to split based on participants. Currently it randomly splits so all 50 participants are very likely going to be included in the training and testing portions.
$endgroup$
– Andrew
23 hours ago




$begingroup$
No, I want to split based on participants. Currently it randomly splits so all 50 participants are very likely going to be included in the training and testing portions.
$endgroup$
– Andrew
23 hours ago












$begingroup$
I want to do a 50% train split with the additional parameter that participants are mutually excluded to either the train or test split. So there are 25 participants worth of data on the train side and 25 participants worth of data on the test side. Basically, is there an easy way to randomize 50 participants into two groups? It seems like the answer is no and requires a custom script.
$endgroup$
– Andrew
23 hours ago




$begingroup$
I want to do a 50% train split with the additional parameter that participants are mutually excluded to either the train or test split. So there are 25 participants worth of data on the train side and 25 participants worth of data on the test side. Basically, is there an easy way to randomize 50 participants into two groups? It seems like the answer is no and requires a custom script.
$endgroup$
– Andrew
23 hours ago












$begingroup$
What exactly do you mean by very likely to be included? If you have 50 samples, and pass them through train_test_split, all 50 samples will be included in either the training set or the test set. To your second comment, everything is mutually exclusive. No sample will be included in both the training and the test set.
$endgroup$
– Ethan
11 hours ago




$begingroup$
What exactly do you mean by very likely to be included? If you have 50 samples, and pass them through train_test_split, all 50 samples will be included in either the training set or the test set. To your second comment, everything is mutually exclusive. No sample will be included in both the training and the test set.
$endgroup$
– Ethan
11 hours ago










Andrew is a new contributor. Be nice, and check out our Code of Conduct.










draft saved

draft discarded


















Andrew is a new contributor. Be nice, and check out our Code of Conduct.













Andrew is a new contributor. Be nice, and check out our Code of Conduct.












Andrew is a new contributor. Be nice, and check out our Code of Conduct.
















Thanks for contributing an answer to Data Science Stack Exchange!


  • Please be sure to answer the question. Provide details and share your research!

But avoid



  • Asking for help, clarification, or responding to other answers.

  • Making statements based on opinion; back them up with references or personal experience.


Use MathJax to format equations. MathJax reference.


To learn more, see our tips on writing great answers.




draft saved


draft discarded














StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fdatascience.stackexchange.com%2fquestions%2f47544%2fscikit-learn-train-test-split-without-mixing-participants-in-trails%23new-answer', 'question_page');
}
);

Post as a guest















Required, but never shown





















































Required, but never shown














Required, but never shown












Required, but never shown







Required, but never shown

































Required, but never shown














Required, but never shown












Required, but never shown







Required, but never shown







Popular posts from this blog

How to label and detect the document text images

Vallis Paradisi

Tabula Rosettana