我正在尝试使用堆叠执行文本分类。我是 ML 的新手,如果这是一个愚蠢的问题,我深表歉意。我正在尝试在不同的文本特征上训练相同的算法 LogisticRegression 以创建不同的分类器,然后使用元分类器(也是 LogisticRegression)将它们全部加入。我使用的功能是文本中的单词和相应的词性标签。
使用单词作为特征的分类器使用以下管道定义:
lr =LogisticRegression()
words = make_pipeline(ColumnSelector(column='text'),
CountVectorizer(analyzer='word', token_pattern=r'\w{1,}', max_features=5000),
lr)
使用 POS 作为特征的分类器使用以下管道定义:
pos = make_pipeline(ColumnSelector(column='pos'),
CountVectorizer(binary=True, ngram_range=(2,3),
max_features=5000),
lr)
最后,元分类器是这样定义的:
sclf = StackingCVClassifier(classifiers=[words, pos],
meta_classifier=lr)
当我尝试训练分类器时,问题就来了:
classifiers = {"Words": words,
"POS": pos,
"Stack": sclf}
for key in classifiers:
classifier = classifiers[key]
classifier.fit(X_train, Y_train)
单词和 POS 已安装,但 Stack 分类器未安装,我收到以下错误:
IndexError: only integers, slices (:), ellipsis (...), numpy.newaxis (None) and integer or boolean arrays are valid indices
X_train 包含一个数据框,其中包含一个包含原始文本的列“text”和一个包含原始 POS 标签的列“pos”,这就是我通过管道应用所需转换的原因。
当我尝试使用 StackingClassifier 方法时,我没有这个问题。知道出了什么问题吗?
谢谢!