Страницы

Поиск по вопросам

среда, 12 июня 2019 г.

получение вероятности принадлежности к классу в sklearn

Собственно классификация данных методом логистической регрессии:
from sklearn import datasets from sklearn.model_selection import train_test_split from sklearn.preprocessing import StandardScaler from sklearn.linear_model import LogisticRegression
iris = datasets.load_iris() X = iris.data[:, [2,3]] y = iris.target
X_train, X_test, y_train, y_test = train_test_split( X, y, test_size=0.3, random_state=0 )
sc = StandardScaler() sc.fit(X_train) X_train_std = sc.transform(X_train) X_test_std = sc.transform(X_test)
lr = LogisticRegression(C=1000.0, random_state=0) lr.fit(X_train_std, y_train)
lr.predict_proba([X_test_std[0,:]])
Тренировочные данные взяты прямо из библиотеки:
iris = datasets.load_iris()
Проблема в методе:
lr.predict_proba([X_test_std[0,:]])
который должен должен предсказывать вероятность принадлежности образца(ов) к имеющимся классам, и должен выдавать результат в таком виде:
array([[ 0.000, 0.063, 0.937 ]])
Приведенный выше массив должен говорить о том что модель предсказывает с шансом 93% принадлежность первого образца к третьему классу и 6.3% ко второму (к первому 0) Но мне вместо этого выдает следующее:
array([[ 2.05743774e-11, 6.31620264e-02, 9.36837974e-01]])
Как исправить, что не так ?


Ответ

Как уже сказал коллега @Applemoon - вы получили правильные значения - просто они в виде "scientific notation"
Вот пример:
In [91]: A = np.array([[ 2.05743774e-11, 6.31620264e-02, 9.36837974e-01]])
In [92]: print(A) [[ 2.05743774e-11 6.31620264e-02 9.36837974e-01]]
In [93]: np.set_printoptions(suppress=True)
In [94]: print(A) [[ 0. 0.06316203 0.93683797]]

Комментариев нет:

Отправить комментарий