from sklearn.model_selection import train_test_split from sklearn.metrics import log_loss X_train, X_val, y_train, y_val = train_test_split(X, y, test_size=0.2) model = DecisionTreeClassifier() best_loss = np.inf for epoch in range(100): model.fit(X_train, y_train) val_preds = model.predict(X_val) loss = log_loss(y_val, val_preds) if loss < best_loss: best_loss = loss else: break