首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用SMOTE在SKLearn中堆叠?

如何使用SMOTE在SKLearn中堆叠?
EN

Data Science用户
提问于 2021-04-02 07:08:26
回答 1查看 581关注 0票数 1

我有一个数据集X,y,并将它们分开来训练和测试数据。X_train, X_test, y_train, y_test = train_test_split(X, y, test_size = 0.20, stratify = y, random_state=10)。为了处理不平衡的数据,我想使用SMOTE,然后使用分类算法。然而,我将使用堆叠作为我的分类方法。我会感激知道什么时候我应该使用击打?我应该用它们来定义低级分类器还是高级分类器?

代码语言:javascript
复制
level0 = list()
oversample = SMOTE()
RF = RandomForestClassifier(random_state=13)
pipe1 = Pipeline(steps=[('OverSampling', oversample ), ('Classifier', RF)])
level0.append(pipe1 )

DT = DecisionTreeClassifier( random_state=0)
pipe2 = Pipeline(steps=[('OverSampling', oversample ), ('Classifier', DT)])
level0.append(pipe2)



level1 = LogisticRegression
model = StackingClassifier(estimators=level0, final_estimator=level1, cv=10, passthrough = True)
model.fit(X_train, y_train)
model.predict(X_test)

或者我应该使用下面的代码?

代码语言:javascript
复制
level0 = list()
oversample = SMOTE()
RF = RandomForestClassifier(random_state=13)
level0.append(RF)

DT = DecisionTreeClassifier( random_state=0)
level0.append(DT)

level1 = LogisticRegression
model = StackingClassifier(estimators=level0, final_estimator=level1, cv=10, passthrough = True)

pipe1 = Pipeline(steps=[('OverSampling', oversample ), ('Classifier', model)])

pipe1.fit(X_train, y_train)
pipe1.predict(X_test)

另一个问题是,我们在训练阶段使用了SMOTE来获得一个更好的模型。但是在管道中,第一步是使用SMOTE,我认为在对测试数据进行预测时,首先要对测试数据进行过采样,然后应用分类模型。这是正确的吗?我不知道该怎么用SMOTE来做最后的预测。如果有人能解释并修改我的代码,我会很感激。

EN

回答 1

Data Science用户

发布于 2021-04-05 16:27:01

第一个问题,是对堆叠分类器的第一个或第二个使用SMOTE。一般来说,打击乐应该在任何分类之前完成,因为击打会增加少数群体被成功学习的可能性。第一个分类器应该被赋予最有用的特征。另一种方法是寻找经验证据。两种方式的训练模式和选择性能更好的订单。

第二个问题,SMOTE只在训练数据集上进行。在预测过程中,只对现有的数据进行预测。如果使用印布洛尔管道,这将自动处理。

票数 1
EN
页面原文内容由Data Science提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://datascience.stackexchange.com/questions/92474

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档