"""
@author: JacksonKim
@start: 2021/1/28
@end: 2021/1/29
"""
import numpy as np
'''
1. 留出法直接将数据集D划分为两个互斥的集合,其中一个集合作为训练集S,另一个作为测试集T。
2. 通常训练集和测试集的比例为70%:30%
3. 训练/测试集的划分要尽可能保持数据分布的一致性,避免因数据划分过程引入额外的偏差对最终结果产生影响,
通常采取分层采样的方法。
'''
# 随机产生我们的数据集
x = np.random.randint(-10, 10, 20) # 前两个参数表示范围,第三个参数表示个数
data_set = []
negative = []
positive = []
# 先对数据集进行分类
for i in x:
if i <= 0:
negative.append(i)
else:
positive.append(i)
# 乱序
np.random.shuffle(negative)
np.random.shuffle(positive)
# 将数据集按正类在前,反类在后排序
data_set.append(positive)
data_set.append(negative)
# 设定测试数据集的比例
test_radio = 0.3
# 求出test_set的个数
test_size = int(len(x)*test_radio)
# 求出分层采样时正反类需要采取的个数
positive_size = int(len(data_set[0])*test_radio + 0.5)
negative_size = test_size - positive_size
# 取出测试集和训练集
test_set = data_set[0][:positive_size] + data_set[1][:negative_size]
train_set = data_set[0][positive_size:] + data_set[1][negative_size:]
# 输出结果进行验证
print("data set: ", data_set)
print("train set: ", train_set)
print("test set: ", test_set)
机器学习之数据集划分-留出法(hold-out)
最新推荐文章于 2022-07-08 09:56:09 发布