crossval

package
v1.0.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Nov 4, 2025 License: MIT Imports: 4 Imported by: 0

Documentation

Overview

Package crossval provides cross-validation utilities for model evaluation.

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func CrossValScore

func CrossValScore(model Scorer, X *dataframe.DataFrame, y *seriesPkg.Series[any], cv *KFold, scoringFunc func(*seriesPkg.Series[any], *seriesPkg.Series[any]) float64) ([]float64, error)

CrossValScore evaluates a model using cross-validation. Returns a score for each fold.

func CrossValScoreStratified

func CrossValScoreStratified(model Scorer, X *dataframe.DataFrame, y *seriesPkg.Series[any], cv *StratifiedKFold, scoringFunc func(*seriesPkg.Series[any], *seriesPkg.Series[any]) float64) ([]float64, error)

CrossValScoreStratified performs stratified cross-validation.

Types

type Fold

type Fold struct {
	TrainIndices []int
	TestIndices  []int
}

Fold represents a single train/test split in cross-validation.

type KFold

type KFold struct {
	// NSplits is the number of folds (K)
	NSplits int

	// Shuffle whether to shuffle the data before splitting
	Shuffle bool

	// Seed for random number generator (used if Shuffle is true)
	Seed int64
}

KFold provides K-fold cross-validation splitting. Splits dataset into K consecutive folds. Each fold is used once as validation while the remaining K-1 folds form the training set.

func NewKFold

func NewKFold(nSplits int, shuffle bool, seed int64) *KFold

NewKFold creates a new K-fold cross-validator.

func (*KFold) Split

func (k *KFold) Split(df *dataframe.DataFrame) []Fold

Split generates train/test index splits.

type Scorer

type Scorer interface {
	Fit(X *dataframe.DataFrame, y *seriesPkg.Series[any]) error
	Predict(X *dataframe.DataFrame) (*seriesPkg.Series[any], error)
}

CrossValScore performs cross-validation and returns scores for each fold.

type StratifiedKFold

type StratifiedKFold struct {
	// NSplits is the number of folds
	NSplits int

	// Shuffle whether to shuffle within each class before splitting
	Shuffle bool

	// Seed for random number generator
	Seed int64
}

StratifiedKFold provides stratified K-fold cross-validation. Stratification ensures that each fold maintains the same class distribution as the complete dataset. Important for imbalanced datasets.

func NewStratifiedKFold

func NewStratifiedKFold(nSplits int, shuffle bool, seed int64) *StratifiedKFold

NewStratifiedKFold creates a new stratified K-fold cross-validator.

func (*StratifiedKFold) Split

Split generates stratified train/test splits. The y parameter is used for stratification (typically class labels).

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL