gpt4 book ai didi

scikit-learn - 当我从 Pipeline 中删除 RF 模型时,它会失去准确性

转载 作者:行者123 更新时间:2023-12-04 04:17:01 25 4
gpt4 key购买 nike

希望我在这里忽略了一些愚蠢的东西,或者我可能不明白这是如何工作的......

我有一个 nlp 管道,它基本上执行以下操作:

rf_pipeline = Pipeline([
('vect', TfidfVectorizer(tokenizer = spacy_tokenizer)),
('fit', RandomForestClassifier())
])

我运行它:

clf = rf_pipeline.fit(X_train, y_train)
preds = clf.predict(X_test)

当我优化时,我通过以下方式获得了 90 的高准确度:

confusion_matrix(y_test, preds)
accuracy_score(y_test, preds)
precision_score(y_test, preds)

TfidfVectorizer 是我计算中的瓶颈,所以我想打破管道。运行矢量器,然后对分类器进行网格搜索,而不是在整个管道上运行它。以下是我的分解方法:

# initialize
tfidf = TfidfVectorizer(tokenizer = spacy_tokenizer)
# transform and fit
vect = tfidf.fit_transform(X_train)
clf = rf_class.fit(vect, y_train)
# predict
clf.predict(tfidf.fit_transform(X_test))

当我在运行完整网格搜索之前查看准确度时,准确度已直线下降至略高于 50%。当我尝试增加树的数量时,分数下降了近 10%。

有什么想法吗?

最佳答案

对于测试集,不能调用fit_transform(),只能调用transform(),否则tfidf向量的元素有不同的含义。

试试这个

# predict
clf.predict(tfidf.transform(X_test))

关于scikit-learn - 当我从 Pipeline 中删除 RF 模型时,它会失去准确性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53242164/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com