python - 如何找到 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准确率?
解决方案
probs = nb.predict_proba(X_test)
print('accuracy %s' % top_k_accuracy_score(y_test, probs, k=5))
这将打印前 k 个精度
推荐阅读
- python - Python:连接numpy数组行的所有组合
- html - 未调用客户端 React componentDidMount(没有 JSX)
- javascript - 如何扩展对象的原型并在全局范围内具有相同的功能?
- hyperledger-composer - 运行作曲家游乐场时发生错误
- python - Python 3 计算器,如何绕过 eval
- identityserver4 - PostLoginRedirectUri 作为 IdentityServer4 中的 PostLogoutRedirectUris
- javascript - EJS CSS 不加载前端
- javascript - JavaScript 的 trimLeft() 与 trimStart() 的区别
- c# - 验证包含开始和结束标签的文本
- html - 如何将边框的某个部分保持在子 div 的内容之上?