Понимание значений решения_функции

1

В настоящее время я нахожусь в середине своего первого машинного обучения, и до сих пор я не совсем получаю масштаб значений, которые получаю от decision_function(X) (как не понимать их).

Основываясь на документации sklearn, решение_функции decision_function(X) предназначено для:

Предсказать оценки доверия для образцов.

Тем не менее, при запуске следующего скрипта:

from sklearn.datasets import fetch_mldata
import numpy as np
from sklearn.linear_model import SGDClassifier
from sklearn.model_selection import cross_val_predict
from sklearn.metrics import confusion_matrix , precision_score, recall_score


mnist = fetch_mldata('MNIST original')

classifier = SGDClassifier(random_state = 42, max_iter = 5)


X,y = mnist["data"], mnist["target"]
some_digit = X[36001]
some_digit_image = some_digit.reshape(28, 28)

X_train, X_test, y_train, y_test = X[:60000], X[60000:], y[:60000], y[60000:]

random_order = np.random.permutation(60000)

X_train, y_train = X_train[random_order], y_train[random_order]

y_test_5 = (y_test == 5)
y_train_5 = (y_train == 5)


classifier.fit(X_train, y_train_5)
print(classifier.decision_function([X_test[1]]))

он печатает [-289809.39489525] для функции decision_function на данный момент. Я не уверен, как читать и как оценивать эти значения (я ожидал увидеть проценты). Если бы кто-нибудь мог объяснить мне, что означают эти показания, это было бы очень полезно.

Заранее большое спасибо.

Теги:
machine-learning
scikit-learn

1 ответ

2

Как получить вероятности (проценты)?

Используйте метод predict_proba.

Что такое decision_function ?

Поскольку SGDClassifier является линейной моделью, SGDClassifier decision_function выводит знаковое расстояние до разделительной гиперплоскости. Это число просто < w, x > + b или переведено в имена атрибутов scikit-learn < coef_, x > + intercept_.

  • 0
    Так как бы я прочитал цифры? Чем они больше, тем увереннее ответ? например, в этом случае [-289809.39489525] модель более уверена в первом значении или во втором?
  • 1
    Вам нужно посмотреть на знак. Так что в вашем случае отрицательный знак предполагает, что модель предсказывает, что выборка будет из класса «не пять». Что касается уверенности, то чем больше (в абсолютном выражении), тем увереннее. Однако для достижения вероятности необходимо выполнить масштабирование с помощью сигмоидальной функции.
Показать ещё 6 комментариев

Ещё вопросы

Сообщество Overcoder
Наверх
Меню