OneVsRestClassifier не смог предсказать двойную метку мультикласса - PullRequest
0 голосов
/ 31 мая 2019

Я выполнил OneVsRestClassifier с классификатором randorm fores для бинаризации метки класса. я использовал перекрестную проверку Kfold. я выполнил бинаризационный класс для построения кривой roc

Моя проблема в том, что метод classifier.predict не удалось предсказать в какой-либо записи. вот мой код

# Define classifier
classifier = OneVsRestClassifier(RandomForestClassifier(bootstrap=False, class_weight=None, criterion='gini',
            max_depth=13, max_features='auto', max_leaf_nodes=None,
            min_impurity_decrease=0.0, min_impurity_split=None,
            min_samples_leaf=4, min_samples_split=10,
            min_weight_fraction_leaf=0.0, n_estimators=100, n_jobs=3,
            oob_score=False, random_state=27, verbose=0, warm_start=False))

# Define Method
kf = KFold(n_splits=3, random_state=27, shuffle=True)

scores = []
y_preds = []
y_trues = []
y_probs = []
for train_indices, test_indices in kf.split(X):
    # Perform Fold Validation
    classifier.fit(X[train_indices], y[train_indices])
    y_pred = classifier.predict(X[test_indices])
    y_true = y[test_indices]
    score = classifier.score(X[test_indices], y_true)
    y_prob = classifier.predict_proba(X[test_indices])

    # Append to list
    scores.append(score)
    y_preds.append(y_pred)
    y_trues.append(y_true)
    y_probs.append(y_prob)

    print('iteration..')

scores = np.array(scores)
ypred = np.concatenate(np.array(y_preds))
ytrue = np.concatenate(np.array(y_trues))
yprob = np.concatenate(np.array(y_probs))

мой результат ytrue, ypred и yprob

ytrue 
 [[0 0 0 0 0 1]
 [0 0 0 0 0 1]
 [0 0 0 0 0 1]
 ...
 [1 0 0 0 0 0]
 [0 0 0 0 1 0]
 [0 0 1 0 0 0]]
ypred 
 [[0 0 0 0 0 0]
 [0 0 0 1 0 0]
 [0 0 0 0 0 1]
 ...
 [0 0 0 0 0 0]
 [0 0 0 1 0 0]
 [0 0 0 0 0 0]]
yprob 
 [[0.0284438 0.        0.0237302 0.4376503 0.070079  0.3654891]
 [0.018646  0.        0.0111984 0.5008399 0.1122584 0.3558225]
 [0.0770742 0.        0.1195185 0.0839903 0.1776736 0.6168349]
 ...
 [0.0319885 0.0194651 0.2914288 0.1826586 0.3700613 0.1913803]
 [0.0037897 0.0053333 0.0129757 0.552535  0.2664548 0.1772928]
 [0.0030278 0.0026374 0.0673323 0.4866199 0.2321866 0.260554 ]]

почему какая-то запись / строка не имеет предсказанного класса? что не так с моим кодом?

...