如何不使用train_test_split()划分数据集:前80%训练后20%测试
手动划分训练集与测试集(前80%+最后20%)
嗨,这个场景我太熟啦!train_test_split()默认的随机采样确实没法满足你按固定顺序取最后20%作为测试集的需求,其实咱们手动分割就行,几步就搞定~
方法思路
核心就是先计算出80%数据对应的分割索引,然后直接对数据集做切片操作:
- 前
split_index条数据作为训练集 - 从
split_index到末尾的部分作为测试集
代码示例
情况1:数据集是Pandas DataFrame
如果你的数据是用Pandas加载的表格,代码可以这么写:
import pandas as pd # 加载你的数据集(示例用csv,你可以换成自己的数据源) df = pd.read_csv("your_dataset.csv") # 计算分割点:取总数据量的80%位置 split_index = int(len(df) * 0.8) # 划分训练集和测试集 train_df = df[:split_index] # 前80% test_df = df[split_index:] # 最后20%
情况2:数据集是Numpy数组
如果你的特征和标签是Numpy数组格式,比如常见的机器学习输入格式:
import numpy as np # 假设你的特征矩阵是X,标签数组是y X = np.array([[1,2], [3,4], [5,6], ...]) # 示例数据 y = np.array([0, 1, 0, ...]) split_index = int(len(X) * 0.8) # 分别划分特征和标签 X_train, X_test = X[:split_index], X[split_index:] y_train, y_test = y[:split_index], y[split_index:]
小提示
如果你的数据集是时序数据(比如按时间顺序记录的销售、监控数据),这种按顺序划分的方式非常合理,能模拟真实场景中用历史数据预测未来的情况;如果数据本身是无序的,记得确认你要的“最后20%”确实是符合需求的测试样本哦~
内容的提问来源于stack exchange,提问作者hshantanu
相关产品推荐
相关产品推荐

