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()
выводит только 1 лучший прогноз для выборки из списка X. Меня интересуют 3 лучших прогноза для конкретной выборки в списке X, я знаю, что функция predict_proba
/predict_log_proba
возвращает список всех вероятностей для каждой функции в список Y, но его необходимо отсортировать, а затем связать с объектами в списке Y, прежде чем получить 3 лучших результата. Есть ли прямой и эффективный способ?