Sklearn OneVsRestClassifier - получить вероятности для всех возможностей целевого класса - PullRequest
0 голосов
/ 29 ноября 2018

У меня есть конвейер, который выполняет разработку функций и выбор модели.

Проектирование элементов и выбор модели

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?

...