python - 按百分比随机划分并存储 SQL 表

标签 python sql stored-procedures ssms

我正在尝试拆分 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/

相关文章:

.net - 处理数据库模式中的更改

Android sql事务性能

sql - 如何不插入具有空值的双记录

sql-server-2005 - CLR存储过程:SqlContext.Pipe.SendResultsStart/SendResultsRow/SendResultsEnd的替代方法?

php - PHP 预准备语句调用的存储过程内部的预准备语句

python - PyWinAuto 仍然有用吗?

python - 使用 EZDXF Python 查找 DXF 文件的大小

php - mysql 的 UNION 查询有问题

python解析: what file format uses `=>` OR how to read custom input files to dict

python - Pandas DataFrame - 提取两个字符串之间的字符串并包含第一个分隔符