【发布时间】:2017-09-21 18:52:51
【问题描述】:
我有一个多标签分类问题和一个巨大的类不平衡问题,因此我想使用 SMOTE 创建一个管道步骤,但由于 X 基本上是文本,Y 是所述标签的 1 和 0 数组,我不能以这种方式插入 SMOTE(),因为它既需要适配又需要转换。
pipeline = Pipeline([
('smote', SMOTE()),
('vect', CountVectorizer()),
('tfidf', TfidfTransformer()),
('ss', StandardScaler(with_mean=False)),
('clf', model),
])
【问题讨论】:
-
我认为
SMOTE带有它自己的 Pipeline 子类,可能值得研究(至少作为示例),但smote不会出现在vect和tfidf之后? -
是的,SMOTE 有自己的管道,必须使用。除此之外,SMOTE 将在您的
model之前出现。需要更多信息,例如您正在关注哪个教程、一些数据示例等 -
您对 SMOTE 的看法是绝对正确的,我并没有特别关注教程,只是对我的 X 进行文本分类,这只是一堆文本中的文章,而 y 是标签或主题对于这篇文章。管道插入 GridSearchCV,这是我遇到问题的地方,因为 SMOTE 的管道子类不具备可插入 Gridsearch 的管道的适配和转换。
-
也许你想看看 sklearn.preprocessing.FunctionTransformer,不过我不确定它是否会返回新的 Ys
标签: python scikit-learn pipeline text-classification topic-modeling