Вы не можете предсказать вероятность ваших меток.
predict_proba
предсказывает вероятность для каждого ярлыка из ваших данных X, таким образом:
class_probabilitiesDec = clf.predict_proba(X_test)
То, что вы упоминаете как «когда я использую X_train»:
[[ 0.00490808 0.00765327 0.01123035 0.00332751 0.00665502 0.00357707
0.05182597 0.03169453 0.04267532 0.02761833 0.01988187 0.01281091
0.02936528 0.03934781 0.02329257 0.02961484 0.0353548 0.02503951
0.03577073 0.04700108 0.07661592 0.04433907 0.03019715 0.02196157
0.0108976 0.0074869 0.0291989 0.03951418 0.01372598 0.0176358
0.02345895 0.0169703 0.02487314 0.01813493 0.0482489 0.01988187
0.03252641 0.01572249 0.01455786 0.00457533 0.00083188]
Список вероятности истинности для каждого возможного ярлыка.
EDIT
После прочтения ваших комментариев предскажите, что проба именно то, что вы хотите.
Давайте приведем пример. В следующем коде у нас есть классификатор с 3 классами: 11, 12 или 13.
Если вход равен 1, классификатор должен прогнозировать 11
Если входное значение равно 2, классификатор должен прогнозировать 12
...
Если входное значение равно 7, классификатор должен прогнозировать 12
clf = DecisionTreeClassifier()
clf.fit([[1],[2],[3],[4],[5],[6],[7]], [[11],[12],[13],[13],[12],[11],[13]])
теперь, если у вас есть тестовые данные в одной строке, например 5, чем классификатор должен предсказать 12. Итак, давайте попробуем это.
clf.predict([[5]])
И вуаля: результат array([12])
если мы хотим получить вероятность, тогда предсказуем, что проба - это путь:
clf.predict_proba([[5]])
и мы получаем [array([0., 1., 0.])]
В этом случае массив [0., 1., 0.]
означает:
0% вероятности для класса 11
100% вероятность для класса 12
0% вероятности для класса 13
Если я прав, это именно то, что вы хотите.
Вы даже можете сопоставить это с именами ваших классов с помощью:
probabilities = clf.predict_proba([[5]])[0]
{clf.classes_[i] : probabilities[i] for i in range(len(probabilities))}
, который дает вам словарь с вероятностями для имен классов:
{11: 0.0, 12: 1.0, 13: 0.0}
Теперь в вашем случае у вас намного больше классов, чем только [11,12,13], поэтому массив становится длиннее. И для каждой строки в вашем наборе данных Forex_proba создает массив, поэтому для более чем одной строки данных ваш вывод становится матрицей.