首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何利用sklearn的SGDClassifier获得前3位或前N位的预测

如何利用sklearn的SGDClassifier获得前3位或前N位的预测
EN

Stack Overflow用户
提问于 2015-09-08 15:05:55
回答 6查看 18.6K关注 0票数 17
代码语言:javascript
复制
from sklearn.feature_extraction.text import TfidfVectorizer
import numpy as np
from sklearn import linear_model
arr=['dogs cats lions','apple pineapple orange','water fire earth air', 'sodium potassium calcium']
vectorizer = TfidfVectorizer()
X = vectorizer.fit_transform(arr)
feature_names = vectorizer.get_feature_names()
Y = ['animals', 'fruits', 'elements','chemicals']
T=["eating apple roasted in fire and enjoying fresh air"]
test = vectorizer.transform(T)
clf = linear_model.SGDClassifier(loss='log')
clf.fit(X,Y)
x=clf.predict(test)
#prints: elements

在上面的代码中,clf.predict()只为列表X中的一个样本打印了一个最佳预测。我对predict_proba/predict_log_proba列表中某个特定样本的3预测感兴趣,我知道函数返回列表Y中每个功能的所有概率列表,但在获得前3项结果之前,它必须排序并与列表Y中的特性关联。有什么直接有效的方法吗?

EN

Stack Overflow用户

发布于 2020-06-30 13:07:56

argsort按升序给出结果,如果你想用不寻常的循环或混乱来拯救自己,你可以使用一个简单的技巧。

代码语言:javascript
复制
probs = clf.predict_proba(test)
best_n = np.argsort(-probs, axis=1)[:, :n]

否定概率将变成最小到最大,因此你可以采取上n的结果降序。

票数 2
EN
查看全部 6 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32461246

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档