One train/test split decides nothing: change which rows are held back and the winner can change. Count how often each model wins on the wine data.
Write wins_per_split(seeds).
For each seed in seeds:
load_wine(return_X_y=True, as_frame=True) and split it with train_test_split(X, y, test_size=0.25, random_state=seed, stratify=y)."logistic": make_pipeline(StandardScaler(), LogisticRegression(max_iter=1000))"bayes": GaussianNB()"tree": DecisionTreeClassifier(max_depth=3, random_state=0)Return a dict with all three names, each mapped to the number of splits it won (an int, which can be 0).