在cross_val_epredict之后对新文档进行分类



我有一个大约10000条推文的样本,我想将其分为"相关"one_answers"不相关"两类。我正在使用Python的scikit-learn来学习这个模型。我手动将1000条推文编码为"相关"或"不相关"。然后,我运行了一个SVM模型,使用80%的手动编码数据作为训练数据,其余数据作为测试数据。我获得了很好的结果(预测准确度~0.90),但为了避免过度拟合,我决定对所有1000条手动编码的推文使用交叉验证。

下面是我的代码,已经获得了我的示例中tweets的tf-idf矩阵。"target"是一个数组,列出推文是否被标记为"相关"或"不相关"。

from sklearn.linear_model import SGDClassifier
from sklearn.model_selection import cross_val_score
from sklearn.model_selection import cross_val_predict
clf = SGDClassifier()
scores = cross_val_score(clf, X_tfidf, target, cv=10)
predicted = cross_val_predict(clf, X_tfidf, target, cv=10)

有了这个代码,我就可以预测1000条推文属于什么类,并可以将其与我的手动编码进行比较。

为了使用我的模型对其他大约9000条我没有手动编码的推文进行分类,我陷入了下一步该做什么的困境。我想再次使用cross_val_predict,但我不确定在第三个参数中放什么,因为我正试图预测这个类。

感谢您提前提供的帮助!

cross_val_express是而不是从模型中实际获得预测的方法。交叉验证是一种模型选择/评估技术,不训练模型。crossval_prdict是一个非常具体的函数(它为您提供了许多模型的预测,在交叉验证过程中进行了训练)。对于实际的模型构建,您应该使用fit来训练您的模型,并使用predict获得预测。如前所述,这里不涉及交叉验证,这是用于模型选择(选择分类器、超参数等),而不是训练实际模型。

相关内容

  • 没有找到相关文章

最新更新