Как прогнозировать на тесте, используя cross_val_score в моделях ансамбля - PullRequest
0 голосов
/ 06 марта 2020

[вывод путаницы и баллов] [1] Я новичок в машинном обучении и работал с ансамблевыми моделями. На основании онлайн-чтения я понимаю, что, как только мы подберем модель в поезде, мы должны оценить точность данных тестирования. Однако я не уверен, как это сделать?

Я пытался предсказать, используя два метода (см. Код), основываясь на моем понимании, но когда я печатаю матрицу путаницы и пересчитываю оценку точности, ни один из методов не соответствует точности сообщили?

Может ли кто-нибудь подсказать мне правильный метод предсказания? Кроме того, я был бы признателен, если бы я мог понять, почему результаты не соответствуют?

Это мой первый пост - пожалуйста, дайте мне знать, если что-то не ясно, или я должен предоставить дополнительную информацию

# Get some classifiers to evaluate
seed = 1075
np.random.seed(seed)

# Create classifiers
rf = RandomForestClassifier()
et = ExtraTreesClassifier()
knn = KNeighborsClassifier()
svc = SVC()
rg = RidgeClassifier()

custom_scorer = make_scorer(accuracy_score, greater_is_better=True)

k_fold = StratifiedKFold(n_splits=10)

clf_array = [rf, et]
for clf in clf_array:
    vanilla_scores = cross_val_score(clf, x_train_res, y_train_res, cv=k_fold, n_jobs=-1,scoring=custom_scorer)
    bagging_clf = BaggingClassifier(clf, max_samples=0.4, max_features=10, random_state=seed)

# method 1
    bagging_scores = cross_val_score(bagging_clf, x_train_res, y_train_res, cv=k_fold, n_jobs=-1)
    bagging_clf = bagging_clf.fit(x_train_res, y_train_res)
    y_predict = bagging_clf.predict(x_test)
    cm=metrics.confusion_matrix(y_test, y_predict, labels=['1', '0'])
    print("confusion matrix below:")
    print(cm)

# method 2
    y_predict1= cross_val_predict(bagging_clf, x_test, y_test, cv=k_fold, n_jobs=-1)
    cm=metrics.confusion_matrix(y_test, y_predict1, labels=['1', '0'])
    print("confusion matrix below:")
    print(cm)
#     print(metrics.classification_report(y_test,y_predict, labels=[1, 0]))


    print ("Mean of: {1:.3f}, std: (+/-) {2:.3f} [{0}]".format(clf.__class__.__name__, vanilla_scores.mean(), vanilla_scores.std()))
    print ("Mean of: {1:.3f}, std: (+/-) {2:.3f} [Bagging {0}]\n".format(clf.__class__.__name__, bagging_scores.mean(), bagging_scores.std()))
```[output][2]


  [1]: https://i.stack.imgur.com/Eky7r.png
  [2]: https://i.stack.imgur.com/sDhXV.png
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...