По какой-то причине, когда я бегу ensemble.RandomForestClassifier()
и использовать метод .predict_proba()
, он возвращает 2d-массив в форме [n_classes, n_samples]
вместо [n_samples, n_classes]
формы, что, как предполагается, per the docs.RandomForestClassifier дают транспонированной выход для мульти-меток классов
Вот мой пример кода:
# generate some sample data
X = np.array([[4, 5, 6, 7, 8],
[0, 5, 6, 2, 3],
[1, 2, 6, 5, 8],
[6, 1, 1, 1, 3],
[2, 5, 3, 2, 0]])
»» X.shape
(5, 5)
y = [['blue', 'red'],
['red'],
['red', 'green'],
['blue', 'green'],
['orange']]
X_test = np.array([[4, 6, 1, 2, 8],
[0, 0, 1, 5, 1]])
»» X_test.shape
(2, 5)
# binarize text labels
mlb = preprocessing.MultiLabelBinarizer()
lb_y = mlb.fit_transform(y)
»» lb_y
[[1 0 0 1]
[0 0 0 1]
[0 1 0 1]
[1 1 0 0]
[0 0 1 0]]
»» lb_y.shape
(5, 4)
Все отлично до работы до этого момента. Но когда я делаю это:
rfc = ensemble.RandomForestClassifier(random_state=42)
rfc.fit(X, lb_y)
yhat_p = rfc.predict_proba(X_test)
»» yhat_p
[array([[ 0.5, 0.5],
[ 0.7, 0.3]]),
array([[ 0.4, 0.6],
[ 0.5, 0.5]]),
array([[ 0.7, 0.3],
[ 0.7, 0.3]]),
array([[ 0.7, 0.3],
[ 0.6, 0.4]])]
Мой yhat_p
размер [n_classes, n_samples]
вместо [n_samples, n_classes]
. Может кто-нибудь сказать мне, почему мой выход транспонирован? Примечание. Метод .predict()
работает отлично.
«В классах n_classes указано количество классов для одного вывода, а не общее количество классов во всех выводимых классификациях, которые вы делаете», - это будет сделано. благодаря – ralston