使用sklearn Pipeline完成数据转换后如何单独获取X_train、y_train
问题解答
你当前的场景下不需要从dta中拆分特征和标签,原因和操作方法如下:
- 你当前定义的Pipeline仅包含
StandardScaler特征预处理组件,这类组件仅会对输入的特征矩阵X做转换,不会修改标签y。调用pipe.fit_transform(X_train, y_train)返回的dta本身就是经过标准化处理后的X_train。 - 对应的y_train没有被Pipeline做任何修改,直接使用
train_test_split拆分得到的y_train变量即可。
你可以用以下代码直接获取对应内容:
# 取转换后的X_train transformed_X_train = dta # 取对应的y_train matched_y_train = y_train # 验证维度是否匹配 print(f"转换后X_train维度:{transformed_X_train.shape}") print(f"对应y_train维度:{matched_y_train.shape}")
补充说明
如果你的Pipeline后续加入了多步预处理,想要单独获取某一步的转换结果,可以通过调用指定步骤的transform方法实现:
# 按步骤名获取指定预处理步骤的转换结果,示例中你的StandardScaler步骤名为clf transformed_X = pipe.named_steps['clf'].transform(X_train)
sklearn的原生Pipeline默认仅会对特征X做链路转换,标签y仅会在训练时传入给需要的组件使用,不会做任何修改,因此不需要从转换结果中拆分y。
内容的提问来源于stack exchange,提问作者Ctrl7
相关产品推荐
相关产品推荐

