Skip to content

API: SplitDataset

skyulf.data.dataset.SplitDataset dataclass

Source code in skyulf-core/skyulf/data/dataset.py
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
@dataclass
class SplitDataset:
    train: SplitPayload
    test: SplitPayload
    validation: Optional[SplitPayload] = None

    def copy(self) -> "SplitDataset":
        def copy_data(data):
            if isinstance(data, tuple):
                # Handle target copy safely (Series/Array/List)
                y = data[1]
                y_copy = (
                    y.copy() if hasattr(y, "copy") else (y.clone() if hasattr(y, "clone") else y)
                )

                X = data[0]
                X_copy = (
                    X.copy() if hasattr(X, "copy") else (X.clone() if hasattr(X, "clone") else X)
                )

                return (X_copy, y_copy)

            if hasattr(data, "copy"):
                return data.copy()
            if hasattr(data, "clone"):
                return data.clone()
            return data

        return SplitDataset(
            train=copy_data(self.train),
            test=copy_data(self.test),
            validation=(copy_data(self.validation) if self.validation is not None else None),
        )