首页 > 解决方案 > 如何找到 SVM 和朴素贝叶斯的 top-k 精度

问题描述

我的问题是一个有 50 个类的多类分类问题。我试图找到 SVM 和 NB 算法的 top-k 分类准确度。

X_train, X_test, y_train, y_test = train_test_split(sentences, labels, test_size=0.3, random_state = 42)

nb = Pipeline([('vect', CountVectorizer(min_df=1, dtype=np.int32, vocabulary= vocab_data, ngram_range=(1, 2))),
           ('tfidf', TfidfTransformer(use_idf=False)),
           ('chi',  SelectKBest(chi2, k='all')),
           ('clf', OneVsRestClassifier(MultinomialNB(alpha=0.001))),
          ])

y_pred = nb.predict(X_test)

print('accuracy %s' % accuracy_score(y_pred, y_test))

我能够找到准确率和召回值。有没有办法找到top k准确率?

标签: pythonscikit-learnsvmnaivebayes

解决方案


probs = nb.predict_proba(X_test)
print('accuracy %s' % top_k_accuracy_score(y_test, probs, k=5))

这将打印前 k 个精度


推荐阅读