Я хотел бы преобразовать классы вероятности, выводимые SVM, в логиты.
Чтобы получить вероятность каждого класса
model = svm.SVC(probability=True)
model.fit(X, Y)
results = model.predict_proba(test_data)[0]
# gets a dictionary of {'class_name': probability}
prob_per_class_dictionary = dict(zip(model.classes_, results))
# gets a list of ['most_probable_class', 'second_most_probable_class', ..., 'least_class']
results_ordered_by_probability = map(lambda x: x[0], sorted(zip(model.classes_, results), key=lambda x: x[1], reverse=True))
Что я хочу сделать с этими вероятностями?
Преобразование вероятностей в логиты.
Почему?
Я хотел бы объединить результаты SVM с результатами нейронной сети. Такова потеря нейронной сети с выходом логитов. Как следствие, я ищу способ преобразования вероятностей, выводимых SVM, в логиты, а затем объединять логики нейронной сети с логинами SVM с использованием равных весов:
SVM logits + neural network logits = overal_logits
overal_probabilities= softmax(overal_logits)
РЕДАКТИРОВАТЬ:
Это эквивалентно сумме логитов, а затем получить вероятности для суммирования непосредственно по вероятностям, деленным на 2?
proba_nn_class_1=[0.8,0.002,0.1,...,0.00002]
proba_SVM_class_1=[0.6,0.1,0.21,...,0.000003]
overall_proba=[(0.8+0.6)/2,(0.002+0.1)/2,(0.1+0.21)/2,..., (0.00002+0.000003)/2 ]
Является ли этот процесс численно эквивалентным логитам сумм SVM и NN, а затем получить вероятности с помощью softmax?
Спасибо