深圳品牌网站制作平台,郑州网络,深圳信用网企业查询系统,引蜘蛛网站https://blog.csdn.net/weixin_45655710?typeblog 浙大疏锦行
DAY 23 pipeline 管道 知识回顾#xff1a; 1.转化器和估计器的概念 2.管道工程 3. ColumnTransformer和 Pipeline类 作业#xff1a; 整理下全部逻辑的先后顺序#xff0c;看看能不能制作出适合所有机器学习的…https://blog.csdn.net/weixin_45655710?typeblog浙大疏锦行DAY 23 pipeline 管道知识回顾1.转化器和估计器的概念2.管道工程3. ColumnTransformer和 Pipeline类作业整理下全部逻辑的先后顺序看看能不能制作出适合所有机器学习的通用 pipeline好的这是一个非常重要的复习内容理解Pipeline和ColumnTransformer的逻辑结构是掌握现代 Scikit-learn 和防止数据泄露的关键。针对您的作业我为您整理了当前信贷数据集的代码逻辑顺序并提出了一个通用的机器学习 Pipeline 结构。 作业一整理当前代码的逻辑先后顺序您提供的代码展示了从原始数据到最终模型评估的完整流程。使用Pipeline结构后整个流程被清晰地拆分和封装。1. 整体流程步骤 (宏观视角)序号步骤名称对应操作负责人状态1数据加载pd.read_csv()外部原始数据2数据划分train_test_split()外部原始X train , X test , y train , y test X_{\text{train}}, X_{\text{test}}, y_{\text{train}}, y_{\text{test}}Xtrain,Xtest,ytrain,ytest3Pipeline 定义ColumnTransformerPipeline外部定义模型结构4模型训练pipeline.fit(X_train, y_train)Pipeline 内部X train X_{\text{train}}Xtrain预处理→ \to→分类器训练5模型预测pipeline.predict(X_test)Pipeline 内部X test X_{\text{test}}Xtest预处理→ \to→分类器预测6模型评估classification_report()外部结果分析2. Pipeline 内部执行逻辑 (微观视角)当执行pipeline.fit(X_train, y_train)或pipeline.predict(X_test)时Pipeline会按以下顺序和规则执行内部的ColumnTransformer和RandomForestClassifierA. 预处理器preprocessorColumnTransformer的执行顺序ColumnTransformer是预处理的核心它将不同的转换器Transformer并行应用于不同的列子集。特征类型转换器串联 (Pipeline 内部)目的有序分类SimpleImputer(众数填充)→ \to→OrdinalEncoder(有序编码)处理Home Ownership,Years in current job,Term标称分类SimpleImputer(众数填充)→ \to→OneHotEncoder(独热编码)处理Purpose连续数值SimpleImputer(众数填充)→ \to→StandardScaler(标准化)处理剩余的数值特征ColumnTransformer 行为规则并行处理三种特征类型的转换器是同时运行的。整合输出所有转换器的输出结果经过填充、编码、缩放被水平拼接成一个单一的、干净的 NumPy 数组然后传递给下一步的估计器。B. Pipeline 训练与预测规则阶段转换器 (preprocessor)估计器 (classifier)核心意义 (防止数据泄露)训练fit_transform(X_train)计算并存储规则均值、标准差、编码字典并转换数据。fit(X_processed, y_train)学习模型的参数如随机森林的树结构。转换规则只在训练集上学习。预测transform(X_test)直接应用训练阶段学到的规则来转换数据。predict(X_processed)直接使用训练好的模型参数进行预测。避免在测试集上学习任何统计量。 作业二制作适合所有机器学习的通用 Pipeline通用 Pipeline 的设计思想是定义所有可能的处理步骤然后通过参数灵活地开启或关闭它们。以下是一个通用的机器学习 Pipeline 模板它涵盖了数据预处理、特征选择和模型训练等环节。通用机器学习 Pipeline 结构模板fromsklearn.pipelineimportPipelinefromsklearn.composeimportColumnTransformer# ... 其他必要的导入# 1. 定义不同类型的特征列 (这是最依赖具体数据集的一步)NUMERIC_FEATURES[...]# 连续数值特征ORDINAL_FEATURES[...]# 有序分类特征NOMINAL_FEATURES[...]# 标称分类特征需要独热编码# ----------------- 步骤 1: 预处理 Transformers -----------------# 1.1 数值特征 Pipeline (通用且常见)numeric_transformerPipeline(steps[(imputer,SimpleImputer(strategymedian)),# 缺失值处理中位数/均值(scaler,StandardScaler())# 数据缩放标准化/归一化])# 1.2 有序特征 Pipelineordinal_transformerPipeline(steps[(imputer,SimpleImputer(strategymost_frequent)),# 缺失值处理众数(encoder,OrdinalEncoder())# 有序编码])# 1.3 标称特征 Pipelinenominal_transformerPipeline(steps[(imputer,SimpleImputer(strategymost_frequent)),# 缺失值处理众数(onehot,OneHotEncoder(handle_unknownignore))# 独热编码])# ----------------- 步骤 2: ColumnTransformer 整合 -----------------preprocessorColumnTransformer(transformers[(num,numeric_transformer,NUMERIC_FEATURES),(ord,ordinal_transformer,ORDINAL_FEATURES),(nom,nominal_transformer,NOMINAL_FEATURES)],remainderdrop# 丢弃未指定的列除非您确定要保留)# ----------------- 步骤 3: 完整 Pipeline -----------------# 引入一个特征选择步骤使 Pipeline 更通用fromsklearn.feature_selectionimportSelectKBestfromsklearn.linear_modelimportLogisticRegression# 例子一个分类估计器universal_pipelinePipeline(steps[(preprocessor,preprocessor),# A. 预处理 (ColumnTransformer)(feature_selection,SelectKBest(kall)),# B. 特征选择 (可选)(estimator,LogisticRegression(random_state42))# C. 估计器/模型 (分类器/回归器)])通用 Pipeline 的优势和调优这种通用结构的最大优势在于它将操作流程和具体参数分离完美适配GridSearchCV或RandomizedSearchCV进行超参数调优。灵活调参您可以轻松调优预处理步骤的参数例如Imputer 策略preprocessor__num__imputer__strategy: [median, mean]Scaler 类型完全移除StandardScaler步骤或替换为MinMaxScaler。特征选择feature_selection__k: [50, 100, all]兼容性强如果数据集中没有缺失值您可以在调参时将SimpleImputer的步骤参数设置为空列表[]来跳过该步骤。如果不需要特征选择可以直接将SelectKBest的参数k设置为all或者在调参中将其移除。这种封装和流程化的思想DRY 原则是现代数据科学项目的基础。