不随机地将数据分成训练和测试
Split data into training and testing not randomly
我想将我的数据集分成两部分,75% 用于训练,25% 用于测试。有两个 class。
我还有另一个数据集,它只有一个 class 的一个实例,其余所有实例都属于第二个 class。
所以我不想随机拆分。我想确定,如果只有一个 class 的实例,它应该在训练中。任何想法如何去做。我知道我必须 select 索引,但我不知道如何。
现在,我正在这样做,select前 75% 作为训练,剩下的作为测试
train_data = df[:int((len(df)+1)*.75)]
test_data = df[int(len(df)*.75+1):]
您的数据集在输入方面会发生变化,还是始终保持相同数量的数据?如果是后者,您可以简单地将占总数 75% 的数字指定为 splice 方法的第二个参数。例如,如果您有 100 个项目,您将分配 train_data = df[0:75:] 和另一个 test_data = df[76:].
但没有模型或缩短的脚本,我认为我不能做更多。
试试这个:
train_data = df[:int(len(df) * .75)]
test_data = df[int(len(df) * .75)::int(len(df) * .25) - 1]
针对 10 个整数的列表进行测试时,它对我有用。
这可能会有所帮助:GroupKFold
。在那里找到 sklearn 文档:
http://scikit-learn.org/stable/modules/generated/sklearn.model_selection.GroupKFold.html
您正在寻找分层训练和测试拆分:sklearn.model_selection.StratifiedKFold.html
我想将我的数据集分成两部分,75% 用于训练,25% 用于测试。有两个 class。 我还有另一个数据集,它只有一个 class 的一个实例,其余所有实例都属于第二个 class。 所以我不想随机拆分。我想确定,如果只有一个 class 的实例,它应该在训练中。任何想法如何去做。我知道我必须 select 索引,但我不知道如何。 现在,我正在这样做,select前 75% 作为训练,剩下的作为测试
train_data = df[:int((len(df)+1)*.75)]
test_data = df[int(len(df)*.75+1):]
您的数据集在输入方面会发生变化,还是始终保持相同数量的数据?如果是后者,您可以简单地将占总数 75% 的数字指定为 splice 方法的第二个参数。例如,如果您有 100 个项目,您将分配 train_data = df[0:75:] 和另一个 test_data = df[76:].
但没有模型或缩短的脚本,我认为我不能做更多。
试试这个:
train_data = df[:int(len(df) * .75)] test_data = df[int(len(df) * .75)::int(len(df) * .25) - 1]
针对 10 个整数的列表进行测试时,它对我有用。
这可能会有所帮助:GroupKFold
。在那里找到 sklearn 文档:
http://scikit-learn.org/stable/modules/generated/sklearn.model_selection.GroupKFold.html
您正在寻找分层训练和测试拆分:sklearn.model_selection.StratifiedKFold.html