Define the prediction unit before choosing a seed
This workflow serves analysts preparing a classification experiment, with a bounded deliverable: approved train, validation and test files plus a reproducibility and review ledger. It does not train a classifier or certify that a dataset is unbiased. Define what one observation represents and which information would exist at prediction time. Repeated patients, users, source documents, households or time-ordered outcomes are not independent merely because they occupy different rows. When isolation must follow entities or time, stop and use an appropriate external splitter; this tool has no group or time split controls.
Confirm upload permission and remove unnecessary sensitive fields without destroying the controlled source mapping. Profile missing values, label spellings and class counts. Blank targets must be resolved rather than accepted as another class. Validate the actual CSV before splitting: the splitter can pad short rows and truncate excess cells to the header width. Reject ambiguous headers and malformed records instead of treating a successful export as proof that all fields survived.
For class counts, give the CSV grouper a separately verified simple label-only table, not multiline feature text or delimiter-bearing quoted labels. Its parser is basic; if labels need complex CSV quoting, use a suitable external reader and reconcile totals instead. Do not rename or merge labels merely to fit a parser.
Review duplicates without erasing the evidence
Use the column selector to define the intended feature and label schema. Keep a stable non-feature record key, or retain a separate authorized mapping if that key must not be uploaded. Unique IDs are for membership accounting, not predictive input. For duplicate review, compare relevant content in a separate working copy without unique IDs obscuring equality, while preserving traceability to every source row. The deduplicator removes rows; do not run it on the only original or accept fuzzy matches automatically.
Repeated measurements can be legitimate and may instead make this row-split route unsuitable. Conflicting labels on the same content need adjudication, not arbitrary deletion. Remove confirmed accidental copies before the split and log retained keys and reasons. Do not fit imputation, scaling, feature selection or balancing on the full dataset. Approve label policy and any fixed eligibility exclusions separately from learned transformations, which must be fitted on training data only.
Freeze the exact split and inspect what was allocated
Hash the exact cleaned input and record its order, selected fields, target, tool revision, mode, ratios, seed, shuffle and stratification settings. The seed alone does not reproduce a changed input or a different library. This implementation uses its own random generator, so matching a scikit-learn seed does not imply matching memberships. In standard mode, test percentage is the remainder after training and validation; inspect actual integer allocations, not just requested percentages.
For an independent 100-row input with class counts 80 and 20, a 70/15/15 plan can allocate the smaller class as 14/3/3. A class with only two rows cannot cover all three partitions. Do not merge scientifically distinct labels or disable stratification merely to silence a warning. Optional stratified k-fold yields training/validation pairs: training rows overlap across folds by design, whereas each pair must isolate its validation members. It does not create an independent final test set.
Reconcile membership and deliver immutable evaluation data
Download and inspect the ZIP, including train.csv, validation.csv, test.csv and split_report.json for standard mode. Recount labels and reconcile source keys with the approved input. For the standard split, every eligible original belongs once, with no unexplained omission or overlap. The built-in warning compares whole-row contents; unique IDs or small edits can hide equivalent features. Check entity and near-copy overlap and future-derived information separately. The JSON report is not a complete membership or cross-split leakage ledger: retain the displayed warnings and external checks too.
Keep evaluation partitions unchanged. Inspect the imbalance tool only on a training copy, and any cross-validation experiment only inside each training fold. The split tool's SMOTE option is a numeric-feature preview; synthetic examples are not added to its exported split CSVs. Integer codes and identifiers are not valid continuous features merely because they parse as numbers. Compare any approved resampling in a separate experiment, never by improving the test distribution. Validate and hash final CSVs, retain local files, review records and explicit unresolved risks, and keep record keys out of model features. A new source, order or setting requires a new reviewed revision; statistical analysis and broader cleanup belong to the related workflows.