Numpy实现训练集和测试集的划分

Numpy实现训练集和测试集的划分

在本文中,我们将介绍如何使用Numpy库中的功能,实现训练集和测试集的划分,避免使用外部库(如scikit learn)。这在机器学习中是一个基础且重要的功能,有一定的实际应用价值。

阅读更多:Numpy 教程

数据集的导入

在开始划分训练集和测试集之前,我们需要导入相应的数据集。在本文中,我们将使用鸢尾花数据集(Iris Dataset)作为例子。鸢尾花数据集是机器学习领域中一个经典的数据集,它包含了150个数据样本,每个样本有4个特征,且为3类鸢尾花(Iris Setosa,Iris Versicolour,Iris Virginica)中的一类。

在Numpy中,我们可以使用loadtxt()函数来导入数据集。下面是导入鸢尾花数据集并输出前5行数据的代码:

import numpy as np

url = 'https://archive.ics.uci.edu/ml/machine-learning-databases/iris/iris.data'
data = np.loadtxt(url, delimiter=',', usecols=(0,1,2,3), dtype=float)
print(data[:5])
Python

输出结果如下:

array([[5.1, 3.5, 1.4, 0.2],
       [4.9, 3. , 1.4, 0.2],
       [4.7, 3.2, 1.3, 0.2],
       [4.6, 3.1, 1.5, 0.2],
       [5. , 3.6, 1.4, 0.2]])
Python

数据集的划分

有了数据集后,我们就可以开始划分训练集和测试集了。划分方法很简单,我们可以随机将数据集中的样本按照一定比例划分为训练集和测试集。常见的比例是7:3或8:2。

具体实现过程如下:

def train_test_split(data, ratio=0.7):
    n_samples = data.shape[0]
    n_train = int(n_samples * ratio)
    np.random.shuffle(data)
    train_data = data[:n_train]
    test_data = data[n_train:]
    return train_data, test_data
Python

其中,ratio是训练集所占比例,默认为0.7。函数接收一个数据集data,首先获取数据集的样本数量n_samples,然后计算出训练集的样本数量n_train,再用Numpy中的shuffle()函数随机打乱数据集的顺序。最后根据训练集的样本数量划分出训练集和测试集。

使用样例

下面是一个使用样例,我们将鸢尾花数据集按照7:3的比例划分为训练集和测试集,并打印出各自的样本数量:

train_data, test_data = train_test_split(data, ratio=0.7)
print("训练集样本数量:", train_data.shape[0])
print("测试集样本数量:", test_data.shape[0])
Python

输出结果如下:

训练集样本数量: 105
测试集样本数量: 45
Python

总结

本文简要介绍了如何使用Numpy库中的功能,实现训练集和测试集的划分,避免使用外部库。需要注意的是,该方法只能用于数据量较小的情况,如果数据集很大,我们需要使用更加高效的库和算法实现。此外,在划分训练集和测试集时,也需要考虑具体应用场景和需求,选择合适的划分比例,以及使用交叉验证等方法来评估模型的性能和泛化能力,都是非常重要的。

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程

登录

注册