Собственно классификация данных методом логистической регрессии:
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]]
Комментариев нет:
Отправить комментарий