В настоящее время я нахожусь в середине своего первого машинного обучения, и до сих пор я не совсем получаю масштаб значений, которые получаю от 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
на данный момент. Я не уверен, как читать и как оценивать эти значения (я ожидал увидеть проценты). Если бы кто-нибудь мог объяснить мне, что означают эти показания, это было бы очень полезно.
Заранее большое спасибо.
Как получить вероятности (проценты)?
Используйте метод predict_proba
.
Что такое decision_function
?
Поскольку SGDClassifier
является линейной моделью, SGDClassifier
decision_function
выводит знаковое расстояние до разделительной гиперплоскости. Это число просто < w, x > + b или переведено в имена атрибутов scikit-learn < coef_
, x > + intercept_
.
[-289809.39489525]
модель более уверена в первом значении или во втором?