Код: Выделить всё
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 на какое-то полезное значение, но все поддеревья не имеют глубины и не производятся разделения: subtree< /п>
Подробнее здесь: https://stackoverflow.com/questions/787 ... d-behavior