机器学习 -- KNN算法(Ⅵ 数据集的拆分)

本文介绍了在KNN算法中如何正确地拆分数据集为训练集和测试集,强调了不能简单按顺序选取,并提出了两种乱序化方法:将X和y合并后再随机化,或者直接对索引进行乱序。文中选择了对索引进行乱序处理的方式,并详细展示了使用permutation()函数进行数据集划分的过程。
摘要由CSDN通过智能技术生成

将数据集拆分为训练数据集和测试数据集:

注意:不能简单将X的前N个数据集作为训练数据集,因为目标值y是排好序的,如[0, 0, ..., 1, 1, ..., 2, 2, ...],只能取到一定值。

方法:先对原始数据进行乱序化处理,再取前N个作为训练数据集。

 

乱序化过程中,X和y是分离的,但是又是一一对应的,所以不能将其分开随机化,会丢失对应关系。

方式一:可以先将X和y合并成一个矩阵,再对矩阵进行随机化处理,处理完再拆分开来。

方式二:对所有元素的M个索引进行乱序处理。

这里采用方式二。

permutation()函数:

    permutation(x):Randomly permute a sequence, or return a permuted range.

    If `x` is a multi-dimensional array, it is only shuffled along its
    first index.

    Parameters
    ----------
    x : int or array_like
        If `x` is an integer, randomly permute ``np.arange(x)``.
        If `x` is an array, make a copy and shuffle the elements
        randomly.

    Returns
    -------
    out : ndarray
        Permuted sequence or array rang
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值