【问题标题】:Combining predicted results of Sci-Kit learn classifier with original test set data将 Sci-Kit 学习分类器的预测结果与原始测试集数据相结合
【发布时间】:2018-03-24 14:58:45
【问题描述】:

我正在处理一个机器学习项目(一个二元分类问题),并且能够成功运行几个 Sci-Kit 分类器(RF、MLP、Extra Trees)。

我的问题是现在我有“Predict_Probas”结果,我已将其转换为 Pandas 数据框,我想将其与我的原始测试数据结合起来,稍后我将以 CSV 格式导出。我需要向我的管理层展示我的 ML 项目的最终结果。问题是我采用了以下方法-

  • 首先标准化整个数据(使用 StandardScaler)
  • 然后使用 One-Hot 编码对数据进行编码。
  • 然后使用 Train_test_split,将标准化和编码的数据分成两部分

我现在如何在列名完好无损的情况下(没有标准化和一次性编码)取回原始测试数据?

【问题讨论】:

    标签: python scikit-learn


    【解决方案1】:

    通常情况会有所不同 - 我们在进行预处理操作之前以原始格式拆分数据集。

    预处理操作将针对训练数据集 (X_train) 执行并传递给估计器。

    然后,还将针对测试数据集 (X_test) 执行同一组预处理操作,以便使用看不见的数据子集估计(评分)您的模型。

    在实践中通常使用Pipeline() 类:

    X_train, X_test, y_train, y_test = \
            train_test_split(df['text'], df['label'], test_size=0.25)
    
    pipeline = Pipeline([
        ('scaler',StandardScaler()),
        ('clf', LogisticRegression())
    ])
    
    pipeline.fit(X_train, y_train)
    
    predicted = pipeline.predict(X_test)
    

    【讨论】:

    • 谢谢 Max,我会尝试这种方法,并在出现任何问题时通知您。但是与此同时,您能否告诉我,当在 Pipeline 下给出模型(例如逻辑回归)时,您如何在 X_train、y_train 上运行“cross_val_score”和“cross_val_predict”?是否可以将 cross_val_score 作为 cross_val_score(pipeline, X_train, y_train, cv=5, random_state=1) 运行?
    • @AbhikJha,通常我使用的是GridSearchCV,它会自动为我这样做......
    猜你喜欢
    • 2019-11-28
    • 1970-01-01
    • 2020-10-15
    • 2014-11-30
    • 2017-06-20
    • 2020-07-17
    • 2021-09-06
    • 2019-06-16
    • 2021-11-26
    相关资源
    最近更新 更多