Оценка машинного обучения Текстовый классификатор - PullRequest
0 голосов
/ 11 октября 2019

Я построил двоичный текстовый классификатор. Обучил его распознавать предложения для клиентов на основе «Нового» или «Возврата». Моя проблема в том, что реальные данные не всегда могут иметь четкое различие между новым или возвращаемым, даже фактическому человеку, читающему предложение. Моя модель была обучена с точностью 0,99% под контролем обучения с использованием логистической регрессии.

#train model
def train_model(classifier, feature_vector_train, label, feature_vector_valid,valid_y, is_neural_net=False):
    classifier.fit(feature_vector_train, label)
    predictions = classifier.predict(feature_vector_valid)
    if is_neural_net:
        predictions = predictions.argmax(axis=-1)
    return classifier , metrics.accuracy_score(predictions, valid_y)

# Linear Classifier on Count Vectors
    model, accuracy = train_model(linear_model.LogisticRegression(), xtrain_count, train_y, xtest_count,test_y)
    print (':::  Accuracy on Test Set   :::')
    print ('Linear Classifier, BoW Vectors: ', accuracy)

И это даст мне точность 0,998. Теперь я могу передать полный список предложений, чтобы проверить эту модель, и он поймал бы, если в предложениях есть слово new или return , но мне нужна метрика оценки, потому что в некоторых предложениях нетвероятность того, что новый или вернет , поскольку реальные данные, как всегда, беспорядочные.

Мой вопрос: Какие метрики оценки я могу использовать, чтобы каждое новое предложение, проходящее через модель, показывало оценку? Сейчас я использую только следующий код

with open('realdata.txt', 'r') as f:
    samples = f.readlines()
vecs = count_vect.transform(sentence)
visit = model.predict(vecs)
num_to_label= {0:'New', 1:'Return'}
for s, p in zip(sentence, visit):
    #printing each sentence with the predicted label
    print(s + num_to_label[p])

Например, я ожидал бы

Sentence                      Visit          (Metric X)
New visit 2nd floor           New             0.95
Return visit Evening          Return          0.98
Afternoon visit North         New             0.43

Поэтому я бы знал, что не доверяют этим показателям ниже определенного процента, потому что инструмент ненадежен.

1 Ответ

0 голосов
/ 11 октября 2019

Вы можете использовать Предикат_проба () вместо Предикт (). Это даст вам оценки вероятности ваших прогнозов для каждого возможного ярлыка.

https://scikit -learn.org / stable / modules / made / sklearn.linear_model.LogisticRegression.html

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...