Я решаю проблему НЛП, в которой я сопоставляю названия лекарств с наиболее подходящим кодом. Это проблема классификации класса 970. Я использовал BOW для извлечения объектов.
clf=LogisticRegression(C=5,solver='saga',penalty='elasticnet',l1_ratio=0.5).fit(X_train_bow, y_train)
predicted=clf.predict(X_test_bow)
Прогнозируемый класс первой точки данных (X_test_bow [0]) - это «1AJ1», который является правильным классом, а индекс равен 586.
Но когда я вижу вероятности всех классов, используя приведенный ниже фрагмент кода:
f=clf.predict_proba([X_test_bow[0]])
max_prob=max(f[0])
np.where(f[0]==max_prob)
Максимальная вероятность равна индексу 360, а класс равен «1B11» с вероятностью 0,44, которая неверна, и вероятность равна индекс 586 (правильный индекс класса) равен 0,00006.
Теперь я в замешательстве. Вероятность в предсказанном классе должна быть максимальной, но в моем случае этого не происходит. Это происходит и в других точках данных.
Я не могу понять, что я делаю неправильно.