【问题标题】:Apply two different Sklearn classifiers to two different subsets of the same data将两个不同的 Sklearn 分类器应用于相同数据的两个不同子集
【发布时间】:2020-12-22 17:31:06
【问题描述】:

我有一个需要通过分类管道运行的数据集。数据集有 2 种类型的行:

  • 描述: description 列已填充
  • 非描述: description column EMPTY

我想应用一个分类器只针对描述的数据,而另一个分类器用于未描述的数据。

我目前正在这样做,方法是分离数据集,然后分别使用相应的分类器对数据集进行预处理和馈送。我想要完成的是将这个过程融入到 Sklearn 管道中。应该是这样的:

classifierPipe = Pipeline([('preproc_described', DescPreprocessor),
                           ('preproc_non_described', NonDescPreprocessor),
                           ('clf_described', CLF1),
                           ('clf_described', CLF2)
                          ])

classifierPipe.fit(X_train,y_train)

我正在查看StackingClassifier,但根据文档,初始估计器应用于数据集中的所有行。

如何创建这样一个管道,其中每个分类器都针对整个数据集的特定子集?

【问题讨论】:

    标签: python scikit-learn pipeline


    【解决方案1】:

    为什么不直接创建两个不同的数据集并在每个数据集上使用一个分类器。像下面这样的简单代码就足够了

    import pandas as pd
    df = pd.read_cvs('csv_name.csv')
    
    #drop each column in the resp dataset
    for_clf_1 = df.drop(['described'],axis = 1)
    for_clf_2 = df.drop(['not described'], axis =1)

    【讨论】:

    • 您好,感谢您的回答。该解决方案是我目前正在做的一个,它按照您的建议工作。我正在研究是否有办法通过使用 sklearn 管道来做到这一点,以便能够通过使用单个项目、单个拟合和预测方法来执行所有操作
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-02-20
    • 1970-01-01
    • 1970-01-01
    • 2014-02-08
    • 1970-01-01
    相关资源
    最近更新 更多