机器学习之数据集划分-留出法(hold-out)

"""
@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)




  • 3
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Kim‘s blog

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值