Как правильно реализовать упаковку в дереве решений с помощью цикла for? - PullRequest
0 голосов
/ 09 ноября 2018

Я пытаюсь реализовать суммирование и голосование, используя дерево решений и цикл for. Я использую Sklearn Resample. Тем не менее, я получаю Number of labels=97 does not match number of samples=77 и могу понять почему, но я не уверен, как это исправить.

В наборе данных 150 образцов. 150 ярлыков поэтому 150 * 0,35 = 97 и 97 * 0,8 = 77. X - это матрица признаков длиной 150, и у - вектор метки длиной 150

Ниже мой код

from sklearn.model_selection import train_test_split
from sklearn.metrics import accuracy_score
from sklearn.utils import resample


X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.35, random_state=3)

predictions = []

for i in range(1,20):
    bootstrap_size = int(0.8*len(X_train))
    bag = resample(X_train, n_samples = bootstrap_size , random_state=i , replace = True) 
    Base_DecisionTree = DecisionTreeClassifier(random_state=3)
    Base_DecisionTree.fit(bag, y_train)
    y_predict = Base_DecisionTree.predict(X_test)
    accuracy = accuracy_score(y_test, y_predict)
    predictions.append(accuracy)

1 Ответ

0 голосов
/ 09 ноября 2018

Вы должны также изменить образцы и использовать их в fit().

x_bag, y_bag = resample(X_train, y_train, n_samples = bootstrap_size , random_state=i , replace = True) 
tree = DecisionTreeClassifier(random_state=3)
tree.fit(x_bag, y_bag)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...