按百分比随机划分和存储SQL表

问题描述 投票:0回答:1

我正在尝试在Microsoft的SSMS(SQL Server)中拆分数据库,以便在机器学习应用程序中使用数据。

我想将数据分成80/20的训练表和测试表。不幸的是,我唯一知道的方法是将表的前20%作为测试集,然后将其余数据设置为训练集(SELECT TOP 20%FROM ...)。

我不想这样做,因为我的测试和培训集完全基于它们在SQL中的组织方式,而不是基于某些随机种子。

我的最终目标是要在SQL Server的Python存储过程中使用80/20的训练/测试单元。

python sql stored-procedures ssms
1个回答
0
投票

要生成随机分布,可以order by newid()

select top 20 percent * from mytable order by newid()

您可能还想看看tablesample子句。它具有一个称为repeatable的选项,该选项使查询每次运行时都返回相同的随机记录集。对于您的用例,这可能很方便:

select top 20 percent * from mytable order by tablesample(20 percent) repeatable(10)
© www.soinside.com 2019 - 2024. All rights reserved.