Fix the label correction for the train split
Your task
An AI wrote a label fix before training. It took the train rows with train = df[df['split'] == 'train'], then ran train['label'][train['raw_score'] > 0.9] = 1. Pandas raised a SettingWithCopyWarning, the assistant said to ignore it, and the corrected labels never reached the model. Your team rewrote the step in plain code.
An assistant wrote relabel_train_split(splits, labels, raw_scores, threshold). It is in the editor. It has a bug. Find it and fix it.
Input and output:
splits,labelsandraw_scores: one entry per row, at the same index: the row's split, its label, and its audit score.threshold: train rows scoring above this get label 1.- Return the corrected labels of the train rows, in row order.
Rules the tests check:
- If the lists differ in length, use only the first n rows, where n is the shortest length.
- Only rows whose split is exactly
trainare returned, case included. - A train row whose score is strictly greater than
thresholdgets label 1. A score equal to it keeps its label. - Every other train row keeps its label.
Examples
relabel_train_split(splits: list[str], labels: list[int], raw_scores: list[float], threshold: float) -> list[int]Example 1
Input
relabel_train_split(["train", "test", "train", "train"], [0, 0, 0, 1], [0.95, 0.99, 0.5, 0.2], 0.9)Output
[1, 0, 1]Example 2
Input
relabel_train_split(["val", "test"], [1, 0], [0.99, 0.95], 0.9)Output
[]