Функция Predict_proba для многоцелевой классификации - PullRequest
0 голосов
/ 22 октября 2018

Я работаю над многоцелевой (двоичной) классификацией.Есть 11 целей, и я использую Sklearn MultiOutputClassifier.У меня проблемы с функцией Predict_proba.См. Фрагмент набора данных и код ниже:

import pandas as pd
import numpy as npy
from sklearn.model_selection import train_test_split
from sklearn.ensemble import GradientBoostingClassifier
from sklearn.multioutput import MultiOutputClassifier

data = pd.read_csv("123.csv") 

набор данных

target = ['H67BC97','H67GC93','H67LC63','H67WC103','H67RC91','H67YC73','H67RC92','H67GC94','H67LC64','H67NC60','H67YC72']
train, test = train_test_split(data, test_size=0.2)
X_train = train.drop(['H67BC97','H67GC93','H67LC63','H67WC103','H67RC91','H67YC73','H67RC92','H67GC94','H67LC64','H67NC60','H67YC72','FORMULA_NUMBER'],axis=1)
X_test = test.drop(['H67BC97','H67GC93','H67LC63','H67WC103','H67RC91','H67YC73','H67RC92','H67GC94','H67LC64','H67NC60','H67YC72','FORMULA_NUMBER'],axis=1)
Y_train = train[target]
Y_test = test[target]

model = MultiOutputClassifier(GradientBoostingClassifier())
model.fit(X_train, Y_train)
target_probabilities = model.predict_proba(X_test)
print(target_probabilities) 

вероятности

вывод вероятностей не в правильной форме.Я получаю 11 565x2 массивов (565 - это длина моего тестового набора).Я хотел бы сохранить target_probabilities в CSV-файл, но я получаю сообщение об ошибке: ValueError: Ожидаемый 1D или 2D массив, вместо него получен 3D массив.Мой вопрос по сути такой же, как и по ссылке - https://datascience.stackexchange.com/questions/22762/understanding-predict-proba-from-multioutputclassifier,, но ответ там только объясняет, почему вывод представляет собой набор массивов.

РЕДАКТИРОВАТЬ: я упростил проблему.

target_probabilities = array(target_probabilities)

Теперь target_probabilities - это матрица (11 565,2) - необходимо изменить форму матрицы на (565,11), где каждая строка имеет форму target_probabilities [:, i] [:, 1], для i в диапазоне (0,565).

...