Я хочу получить распределение prbability для моей проблемы регрессии, используя scikit-learn. Я использую разные классификаторы (например, logisti c Regresion):
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LogisticRegression
X_train, X_test, y_train, y_test = train_test_split(X, y11, test_size=0.2, random_state=0)
lr=LogisticRegression(random_state=0, solver='lbfgs', max_iter=10).fit(X_train, y_train)
classes = lr.classes_
class_list = []
for x in range(len(classes)):
class_list.append(np.c_[y_test,lr.predict_proba(X_test)[:,x]])
print(class_list)
дает вывод:
array([[ 0.00e+00, 9.99e-01],
[ 9.00e+01, 1.26e-02],
[ 4.00e+01, 2.73e-06],
[ 0.50e+01, 1.97e-05],
[ 1.00e+01, 5.96e-03],
[ 6.00e+01, 1.19e-03],
[ 1.00e+02, 3.25e-03],
[ 6.50e+01, 2.63e-04],
[ 5.00e+00, 2.76e-04],
[ 7.50e+01, 8.21e-04],
[ 9.00e+01, 2.38e-02],
[ 0.00e+00, 9.81e-01],
[ 0.00e+00, 6.00e-01],
[ 1.50e+01, 1.36e-09],
[ 2.00e+01, 3.14e-04],
[ 2.50e+01, 4.03e-04],
[ 5.50e+01, 5.51e-05],
[ 0.00e+00, 9.96e-01],
[ 8.00e+01, 5.11e-06],
[ 6.50e+01, 8.81e-06],
[ 3.00e+01, 1.96e-03],
[ 5.50e+01, 1.67e-04],
[ 7.00e+00, 4.83e-07],
[ 2.00e+01, 1.25e-04],
[ 9.50e+01, 5.34e-03],
[ 1.50e+01, 6.07e-06],
[ 8.50e+01, 1.13e-04],
[ 2.00e+01, 7.13e-06],
[ 3.50e+01, 3.72e-03],
[ 5.00e+00, 6.21e-03],
[ 4.50e+01, 8.22e-04]])
Выходные данные показывают вероятности того, что X_test
является одним из классов. Но я хочу получить распределение вероятностей, которое также наследует вероятности между классами, как обычно в методах регрессии.
Таким образом, вероятность быть в классе 0:
9.99e-01, 9.81e-01, 6.00e-01, 9.96e-01
Вероятность быть в 5 классе:
1.97e-05
Вероятность быть в 10 классе:
5.96e-03
Вероятность в 15 классе:
1.36e-09, 6.07e-06
et c.
И я хочу метод, который дает мне вместо вероятностей класса, например predict_proba
распределение вероятностей для регрессии, например:
Для класса 0:
0.3
Для класса 0.1:
0.2
Для класса 0.2:
0.1
Для класса 0.3:
0.08
et c.