按给定的比例随机分割一个Pandas数据框架

  • Post category:Python

按照给定的比例随机分割一个Pandas数据框架可以使用train_test_split()函数实现。该函数来自于scikit-learn库,可以将数据集随机分割为训练集和测试集,以便用于机器学习中的模型训练和评估。

下面分为以下几个步骤进行说明:

1. 导入必须的库

在使用train_test_split()函数之前,需要导入pandasscikit-learn库。

import pandas as pd
from sklearn.model_selection import train_test_split

2. 加载数据

首先,需要加载要处理的数据集。这里以iris数据集为例,它是一个经典的机器学习数据集。可以使用pandas库中的read_csv()函数加载CSV文件,并将其转换为DataFrame格式。

df = pd.read_csv('https://archive.ics.uci.edu/ml/machine-learning-databases/iris/iris.data', header=None)

3. 将数据集划分为训练集和测试集

train_test_split()函数可以接受多个参数,包括特征矩阵、目标矩阵(可选)、测试集比例、随机种子等。在本例中,设置test_size为0.2,表示将数据分为80%的训练数据和20%的测试数据。

X_train, X_test, y_train, y_test = train_test_split(df.iloc[:, :-1], df.iloc[:, -1], test_size=0.2, random_state=2022)
  • df.iloc[:, :-1]表示选择除最后一列(花的类别)之外的所有列。它是特征矩阵。
  • df.iloc[:, -1]表示选择最后一列(花的类别)。它是目标矩阵。
  • test_size=0.2表示将数据集分割为20%的测试数据和80%的训练数据。
  • random_state是一个随机种子,用于控制每次随机分割时选取的数据不变。这样做有助于使结果可重复。

4. 查看数据集大小

最后,我们可以打印出训练集和测试集的大小,以便验证数据是否已正确划分。

print("Training data size: {} instances".format(len(X_train)))
print("Test data size: {} instances".format(len(X_test)))

运行完整代码,输出结果如下:

Training data size: 120 instances
Test data size: 30 instances

以上就是按给定的比例随机分割一个Pandas数据框架的完整攻略,希望能对您有所帮助。