Skip to content

API: SplitDataset

skyulf.data.dataset.SplitDataset dataclass

Source code in skyulf-core\skyulf\data\dataset.py
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
@dataclass
class SplitDataset:
    train: Union[SkyulfDataFrame, Tuple[SkyulfDataFrame, Any]]
    test: Union[SkyulfDataFrame, Tuple[SkyulfDataFrame, Any]]
    validation: Optional[Union[SkyulfDataFrame, Tuple[SkyulfDataFrame, Any]]] = 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
            ),
        )