Min_samples_leaf в GradientBoostedClassifier() имеет странное поведениеPython

Программы на Python
Anonymous
Min_samples_leaf в GradientBoostedClassifier() имеет странное поведение

Сообщение Anonymous »

Пытаюсь настроить min_samples_leaf в GradientBoostedClassifer(). Я вижу ожидаемые результаты с компромиссом смещения/дисперсии. Однако, просто чтобы проверить границы, я сделал min_samples_leaf > n_samples в наборе обучающих данных, ожидая ошибки или чего-то еще, но я все равно получаю результаты, аналогичные тем, когда модель настроена:

Код: Выделить всё

df = df_a # number of samples = 347
df=df.sample(frac=1)
train_proportion = 0.8
n = len(df)
t = int(train_proportion * n)

# separate training and test sets
y = df['detected']
X = df.loc[:, ~df.columns.isin(['detected'])]

# samples in training set
train_x = X.iloc[:t,:].reset_index().iloc[:,1:]
# samples in test set
test_x = X.iloc[t:,:].reset_index().iloc[:,1:]
#targets in train set
train_y = pd.Series(y[:t].reset_index().iloc[:,1:].iloc[:,0])
#targets in test set
test_y = pd.Series(y[t:].reset_index().iloc[:,1:].iloc[:,0])

clf = GradientBoostingClassifier(n_estimators = 100, max_depth = 10, random_state= 0, min_samples_leaf=500)
clf.fit(train_x,train_y)
print(clf.score(train_x,train_y))
print(clf.score(test_x,test_y))

output:
0.924187725631769
0.9142857142857143
Почему это так? Я ожидал, что произойдет ошибка или разделение не будет выполнено. Кажется, в документации нет ничего о том, что произойдет, если min_samples_leaf > n_samples. Единственное требование для int — это диапазон [1,inf]. Никаких дополнительных примечаний по этому поводу также нет.
Я думал, что, возможно, это сбросит min_samples_leaf на какое-то полезное значение, но все поддеревья не имеют глубины и не производятся разделения: subtree< /п>

Подробнее здесь: https://stackoverflow.com/questions/787 ... d-behavior

Вернуться в «Python»