You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在划分训练测试集时指定特定数据点纳入训练集?

数据集划分实现方案

核心思路

先将数据集拆分为「主数据集(除最后15个数据)」和「强制纳入训练集的15个数据」,从主数据集中抽取总数据量25%的样本作为测试集,最后把主数据集的训练部分和强制纳入的15个数据合并为最终训练集,确保划分比例符合要求。

代码实现(以Python+Scikit-learn为例)

1. 无标签数据集场景

from sklearn.model_selection import train_test_split
import numpy as np

# 假设标准化后的完整数据集为 scaled_dataset,已提取最后15个到 ABS_FOR_TRAINING
main_dataset = scaled_dataset[:-15]

# 计算总样本量和测试集大小(总数据的25%)
total_samples = len(scaled_dataset)
test_size = int(total_samples * 0.25)

# 从主数据集中拆分测试集和主训练部分
main_train, test_set = train_test_split(main_dataset, test_size=test_size, random_state=42)

# 合并主训练部分与强制纳入的15个数据,得到最终训练集
final_train_set = np.vstack([main_train, ABS_FOR_TRAINING])

2. 带标签的特征-标签场景

如果是特征(X)和标签(y)分离的数据集,逻辑一致:

from sklearn.model_selection import train_test_split
import numpy as np

# 假设标准化特征为 X_scaled,标签为 y,已提取最后15个特征到 ABS_FOR_TRAINING
X_main = X_scaled[:-15]
y_main = y[:-15]
X_abs = ABS_FOR_TRAINING
y_abs = y[-15:]

total_samples = len(X_scaled)
test_size = int(total_samples * 0.25)

# 拆分主数据集的训练/测试部分
X_main_train, X_test, y_main_train, y_test = train_test_split(
    X_main, y_main, test_size=test_size, random_state=42
)

# 合并得到最终训练集
X_train = np.vstack([X_main_train, X_abs])
y_train = np.hstack([y_main_train, y_abs])

3. Pandas DataFrame场景

如果数据集是DataFrame格式,用pd.concat替代np.vstack:

from sklearn.model_selection import train_test_split
import pandas as pd

main_dataset = scaled_dataset.iloc[:-15]
total_samples = len(scaled_dataset)
test_size = int(total_samples * 0.25)

main_train, test_set = train_test_split(main_dataset, test_size=test_size, random_state=42)
final_train_set = pd.concat([main_train, ABS_FOR_TRAINING], axis=0)

关键说明

  • 设置random_state可以固定随机划分结果,保证实验可复现
  • 测试集完全从主数据集中抽取,确保最后15个数据不会进入测试集
  • 最终训练集 = 主数据集的训练部分 + 强制纳入的15个数据,训练集占总数据的75%,符合要求

内容的提问来源于stack exchange,提问作者JZ0

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.25 17:45:42