Создание истории точности в BaggingClassifier - PullRequest
0 голосов
/ 15 апреля 2019

Я обучил простому алгоритму случайного леса и классификатору мешков (n_estimators = 100).Можно ли построить историю точности в классификаторе мешков?Как рассчитать дисперсию в 100 выборках?

Я только что напечатал значение точности для обоих алгоритмов:

# DecisionTree
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.90)
clf2 = tree.DecisionTreeClassifier()
clf2.fit(X_tr, y_tr)
pred2 = clf2.predict(X_test)
acc2  = clf2.score(X_test, y_test)
acc2  # 0.6983930778739185

# Bagging
clf3 = BaggingClassifier(tree.DecisionTreeClassifier(),  max_samples=0.5, max_features=0.5, n_estimators=100,\
                         verbose=2)
clf3.fit(X_tr, y_tr)
pred3 = clf3.predict(X_test)
acc3=clf3.score(X_test,y_test)
acc3 # 0.911619283065513

1 Ответ

1 голос
/ 16 апреля 2019

Я не думаю, что вы можете получить эту информацию от установленного BaggingClassifier.Но вы можете создать такой график, подбирая для различных n_estimators:

import matplotlib.pyplot as plt

from sklearn.tree import DecisionTreeClassifier
from sklearn.ensemble import BaggingClassifier

from sklearn import datasets
from sklearn.model_selection import train_test_split

iris = datasets.load_iris()
X, X_test, y, y_test = train_test_split(iris.data,
                                        iris.target,
                                        test_size=0.20)

estimators = list(range(1, 20))
accuracy = []

for n_estimators in estimators:
    clf = BaggingClassifier(DecisionTreeClassifier(max_depth=1),
                            max_samples=0.2,
                            n_estimators=n_estimators)
    clf.fit(X, y)
    acc = clf.score(X_test, y_test)
    accuracy.append(acc)

plt.plot(estimators, accuracy)
plt.xlabel("Number of estimators")
plt.ylabel("Accuracy")
plt.show()

(Конечно, набор данных iris легко умещается только с одним DecisionTreeClassifier, поэтому я установил max_depth=1 в этомпример.)

Для получения статистически значимого результата вы должны набрать BaggingClassifier несколько раз для каждого n_estimators и взять среднее значение полученной точности.

...