我正在尝试拆分 Microsoft SSMS (SQL Server) 中的数据库,以便在机器学习应用程序中使用数据。
我想以 80/20 的比例将数据分成训练表和测试表。不幸的是,我知道这样做的唯一方法是将表中前 20% 的数据作为测试集,然后将其余数据设置为训练集(从...中选择前 20%)。
我不想这样做,因为那时我的测试和训练集完全基于它们在 SQL 中的组织方式,而不是基于一些随机种子。
我的最终目标是实现 80/20 的训练/测试拆分,以便在 SQL Server 中的 Python 存储过程中使用。
最佳答案
要生成随机分布,您可以按 newid() 排序
:
select top 20 percent * from mytable order by newid()
您可能还想查看自 SQL Server 2015 起可用的 tablesample
子句。它有一个名为 repeatable
的选项,可让查询返回相同的随机数每次运行它时都会记录集(只要给定的种子保持不变并且表未修改)。这对您的用例来说可能很方便:
select top 20 percent * from mytable order by tablesample(20 percent) repeatable(10)
关于python - 按百分比随机划分并存储 SQL 表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58550065/