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中的特性关联。有什么直接有效的方法吗?
发布于 2020-06-30 13:07:56
argsort按升序给出结果,如果你想用不寻常的循环或混乱来拯救自己,你可以使用一个简单的技巧。
probs = clf.predict_proba(test)
best_n = np.argsort(-probs, axis=1)[:, :n]否定概率将变成最小到最大,因此你可以采取上n的结果降序。
https://stackoverflow.com/questions/32461246
复制相似问题