У меня есть конвейер, который выполняет разработку функций и выбор модели.
Проектирование элементов и выбор модели
from sklearn.svm import LinearSVC
from sklearn.linear_model import LogisticRegression
from sklearn.ensemble import RandomForestClassifier
Трубопровод разработки элементов и модель
model = Pipeline([('vectorizer', CountVectorizer()),
('tfidf', TfidfTransformer()),
('clf', OneVsRestClassifier(LinearSVC(class_weight="balanced")))])
Выбор параметра
from sklearn.model_selection import GridSearchCV
parameters = {'vectorizer__ngram_range': [(1, 1), (1, 2),(2,2)],
'tfidf__use_idf': (True, False)}
gs_clf_svm = GridSearchCV(model, parameters, n_jobs=-1)
gs_clf_svm = gs_clf_svm.fit(X, y)
print(gs_clf_svm.best_score_)
print(gs_clf_svm.best_params_)
Подготовка окончательного конвейера с использованием выбранных параметров
model = Pipeline([('vectorizer', CountVectorizer(ngram_range=(1,2))),
('tfidf', TfidfTransformer(use_idf=True)),
('clf', OneVsRestClassifier(LinearSVC(class_weight="balanced")))])
Подгонка модели с данными обучения модель.fit (X_train, y_train)
Сохранить модель
from sklearn.externals import joblib
joblib.dump(model, 'model_question_topic.pkl', compress=1)
СЕЙЧАС в другом файле, я загружаю модель и прогнозирую
from sklearn.externals import joblib
model = joblib.load('model_question_topic.pkl')
Теперь он правильно предсказывает классы как класс 1
question = "apply leave"
model.predict([question])[0]
НО проблема в том, что мне нужна степень достоверности или процент, например
Class1 = 0.8 - Class2 = 0.05 -Class3 = 0,05 - Class4 = 0,1
model.predict_proba([question])[0]
Как мне это сделать в python3?