在R中拆分Wisconsin数据集为训练/测试集并关联对应class列
没问题,我来帮你搞定这个关联class列并生成目标向量的事儿!
关联class列并生成分类目标向量的解决方案
核心思路是利用数据框的索引/行位置来匹配拆分后的特征集和原数据中的class列,下面分两种常见场景给你具体实现方式:
场景1:用scikit-learn的train_test_split拆分特征集
如果你已经用train_test_split拆分好了移除ID和class后的特征集(记为X),可以通过索引快速匹配对应的class:
import pandas as pd from sklearn.model_selection import train_test_split # 假设你的原数据集叫df # 先把原数据中的class列单独存好(其实这一步放在拆分前更合理!) original_y = df['class'] # 你已经完成的步骤:移除ID和class得到特征集X,拆分训练/测试集 X = df.drop(['ID', 'class'], axis=1) X_train, X_test = train_test_split(X, test_size=0.2, random_state=42) # 通过索引匹配提取对应class y_train = original_y.loc[X_train.index] y_test = original_y.loc[X_test.index] # 验证一下:训练集特征和目标的样本数要一致 print(f"训练集特征数:{X_train.shape[0]},训练集目标数:{y_train.shape[0]}")
👉 小建议:以后做分类任务时,最好先把特征X和目标y分开,再一起拆分,一步到位更省心:
X = df.drop(['ID', 'class'], axis=1) y = df['class'] # 直接同时拆分特征和目标,自动对应 X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
场景2:手动按比例拆分特征集
如果是手动按行位置切片拆分的(比如前80%做训练集),直接按相同的行位置提取class即可:
# 假设原数据集叫df,X是移除ID和class后的特征集 train_size = int(len(X) * 0.8) X_train = X[:train_size] X_test = X[train_size:] # 按相同行位置提取class y_train = df['class'][:train_size] y_test = df['class'][train_size:]
内容的提问来源于stack exchange,提问作者Naomi Breslin
相关产品推荐
相关产品推荐

