我已经使用sklearn训练了SVM和NN模型两个课程。一类具有24000条推文,另一类具有32000条推文。
当我进行验证时,它会显示如下
对于-
text_clf = Pipeline([('vect', CountVectorizer(stop_words='english')), ('tfidf',TfidfTransformer(use_idf=True)),('clf',MLPClassifier(activation="relu", solver='adam', alpha=0.001, hidden_layer_sizes=(5, 2), random_state=1)),])
precision recall f1-score support
disaster 1.00 1.00 1.00 12862
nondisaster 1.00 1.00 1.00 9543
micro avg 1.00 1.00 1.00 22405
macro avg 1.00 1.00 1.00 22405
weighted avg 1.00 1.00 1.00 22405
对于
text_clf = Pipeline([('vect', CountVectorizer(stop_words='english')), ('tfidf',TfidfTransformer(use_idf=True)),('clf',SGDClassifier(loss='hinge', penalty='l2', alpha=1e-3, random_state=42, verbose=1)),])
text_clf.fit(X_train, y_train)
precision recall f1-score support
disaster 1.00 1.00 1.00 6360
nondisaster 1.00 1.00 1.00 4842
micro avg 1.00 1.00 1.00 11202
macro avg 1.00 1.00 1.00 11202
weighted avg 1.00 1.00 1.00 11202
当我在NN模型中将alpha
的值从0.001更改为0.00001
precision recall f1-score support
disaster 1.00 0.99 0.99 12739
nondisaster 0.98 1.00 0.99 9666
micro avg 0.99 0.99 0.99 22405
macro avg 0.99 0.99 0.99 22405
weighted avg 0.99 0.99 0.99 22405
当我测试很少的记录时,它总是偏向一类。例如,SVM正在预测非灾难的每个输入,而NN将其输入到灾难类别。
任何想法或建议如何微调此模型?
答案 0 :(得分:0)
据我所知,这是在数据集有偏差时发生的。我相信垃圾回收的概念-垃圾回收。
可视化火车测试数据对您来说是个好习惯。我相信这会有偏见。
话虽如此,假设您的用例是根据推文进行的灾难预测,可以理解的是,如果您随机抽取一组推文,那么即使千分之一都不会造成灾难。
因此,明智的做法是将查询范围缩小到精炼的主题和用户,以便获得足够好的数据集。
有想法吗?
谢谢 阿伦