deepbox 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +344 -0
- package/dist/CSRMatrix-CwGwQRea.d.cts +219 -0
- package/dist/CSRMatrix-KzNt6QpS.d.ts +219 -0
- package/dist/Tensor-BQLk1ltW.d.cts +147 -0
- package/dist/Tensor-g8mUClel.d.ts +147 -0
- package/dist/chunk-4S73VUBD.js +677 -0
- package/dist/chunk-4S73VUBD.js.map +1 -0
- package/dist/chunk-5R4S63PF.js +2925 -0
- package/dist/chunk-5R4S63PF.js.map +1 -0
- package/dist/chunk-6AE5FKKQ.cjs +9264 -0
- package/dist/chunk-6AE5FKKQ.cjs.map +1 -0
- package/dist/chunk-AD436M45.js +3854 -0
- package/dist/chunk-AD436M45.js.map +1 -0
- package/dist/chunk-ALS7ETWZ.cjs +4263 -0
- package/dist/chunk-ALS7ETWZ.cjs.map +1 -0
- package/dist/chunk-AU7XHGKJ.js +2092 -0
- package/dist/chunk-AU7XHGKJ.js.map +1 -0
- package/dist/chunk-B5TNKUEY.js +1481 -0
- package/dist/chunk-B5TNKUEY.js.map +1 -0
- package/dist/chunk-BCR7G3A6.js +9136 -0
- package/dist/chunk-BCR7G3A6.js.map +1 -0
- package/dist/chunk-C4PKXY74.cjs +1917 -0
- package/dist/chunk-C4PKXY74.cjs.map +1 -0
- package/dist/chunk-DWZY6PIP.cjs +6400 -0
- package/dist/chunk-DWZY6PIP.cjs.map +1 -0
- package/dist/chunk-E3EU5FZO.cjs +2113 -0
- package/dist/chunk-E3EU5FZO.cjs.map +1 -0
- package/dist/chunk-F3JWBINJ.js +1054 -0
- package/dist/chunk-F3JWBINJ.js.map +1 -0
- package/dist/chunk-FJYLIGJX.js +1940 -0
- package/dist/chunk-FJYLIGJX.js.map +1 -0
- package/dist/chunk-JSCDE774.cjs +729 -0
- package/dist/chunk-JSCDE774.cjs.map +1 -0
- package/dist/chunk-LWECRCW2.cjs +2412 -0
- package/dist/chunk-LWECRCW2.cjs.map +1 -0
- package/dist/chunk-MLBMYKCG.js +6379 -0
- package/dist/chunk-MLBMYKCG.js.map +1 -0
- package/dist/chunk-OX6QXFMV.cjs +3874 -0
- package/dist/chunk-OX6QXFMV.cjs.map +1 -0
- package/dist/chunk-PHV2DKRS.cjs +1072 -0
- package/dist/chunk-PHV2DKRS.cjs.map +1 -0
- package/dist/chunk-PL7TAYKI.js +4056 -0
- package/dist/chunk-PL7TAYKI.js.map +1 -0
- package/dist/chunk-PR647I7R.js +1898 -0
- package/dist/chunk-PR647I7R.js.map +1 -0
- package/dist/chunk-QERHVCHC.cjs +2960 -0
- package/dist/chunk-QERHVCHC.cjs.map +1 -0
- package/dist/chunk-XEG44RF6.cjs +1514 -0
- package/dist/chunk-XEG44RF6.cjs.map +1 -0
- package/dist/chunk-XMWVME2W.js +2377 -0
- package/dist/chunk-XMWVME2W.js.map +1 -0
- package/dist/chunk-ZB75FESB.cjs +1979 -0
- package/dist/chunk-ZB75FESB.cjs.map +1 -0
- package/dist/chunk-ZLW62TJG.cjs +4061 -0
- package/dist/chunk-ZLW62TJG.cjs.map +1 -0
- package/dist/chunk-ZXKBDFP3.js +4235 -0
- package/dist/chunk-ZXKBDFP3.js.map +1 -0
- package/dist/core/index.cjs +204 -0
- package/dist/core/index.cjs.map +1 -0
- package/dist/core/index.d.cts +2 -0
- package/dist/core/index.d.ts +2 -0
- package/dist/core/index.js +3 -0
- package/dist/core/index.js.map +1 -0
- package/dist/dataframe/index.cjs +22 -0
- package/dist/dataframe/index.cjs.map +1 -0
- package/dist/dataframe/index.d.cts +3 -0
- package/dist/dataframe/index.d.ts +3 -0
- package/dist/dataframe/index.js +5 -0
- package/dist/dataframe/index.js.map +1 -0
- package/dist/datasets/index.cjs +134 -0
- package/dist/datasets/index.cjs.map +1 -0
- package/dist/datasets/index.d.cts +3 -0
- package/dist/datasets/index.d.ts +3 -0
- package/dist/datasets/index.js +5 -0
- package/dist/datasets/index.js.map +1 -0
- package/dist/index-74AB8Cyh.d.cts +1126 -0
- package/dist/index-9oQx1HgV.d.cts +1180 -0
- package/dist/index-BJY2SI4i.d.ts +483 -0
- package/dist/index-BWGhrDlr.d.ts +733 -0
- package/dist/index-B_DK4FKY.d.cts +242 -0
- package/dist/index-BbA2Gxfl.d.ts +456 -0
- package/dist/index-BgHYAoSS.d.cts +837 -0
- package/dist/index-BndMbqsM.d.ts +1439 -0
- package/dist/index-C1mfVYoo.d.ts +2517 -0
- package/dist/index-CCvlwAmL.d.cts +809 -0
- package/dist/index-CDw5CnOU.d.ts +785 -0
- package/dist/index-Cn3SdB0O.d.ts +1126 -0
- package/dist/index-CrqLlS-a.d.ts +776 -0
- package/dist/index-D61yaSMY.d.cts +483 -0
- package/dist/index-D9Loo1_A.d.cts +2517 -0
- package/dist/index-DIT_OO9C.d.cts +785 -0
- package/dist/index-DIp_RrRt.d.ts +242 -0
- package/dist/index-DbultU6X.d.cts +1427 -0
- package/dist/index-DmEg_LCm.d.cts +776 -0
- package/dist/index-DoPWVxPo.d.cts +1439 -0
- package/dist/index-DuCxd-8d.d.ts +837 -0
- package/dist/index-Dx42TZaY.d.ts +809 -0
- package/dist/index-DyZ4QQf5.d.cts +456 -0
- package/dist/index-GFAVyOWO.d.ts +1427 -0
- package/dist/index-WHQLn0e8.d.cts +733 -0
- package/dist/index-ZtI1Iy4L.d.ts +1180 -0
- package/dist/index-eJgeni9c.d.cts +1911 -0
- package/dist/index-tk4lSYod.d.ts +1911 -0
- package/dist/index.cjs +72 -0
- package/dist/index.cjs.map +1 -0
- package/dist/index.d.cts +17 -0
- package/dist/index.d.ts +17 -0
- package/dist/index.js +15 -0
- package/dist/index.js.map +1 -0
- package/dist/linalg/index.cjs +86 -0
- package/dist/linalg/index.cjs.map +1 -0
- package/dist/linalg/index.d.cts +3 -0
- package/dist/linalg/index.d.ts +3 -0
- package/dist/linalg/index.js +5 -0
- package/dist/linalg/index.js.map +1 -0
- package/dist/metrics/index.cjs +158 -0
- package/dist/metrics/index.cjs.map +1 -0
- package/dist/metrics/index.d.cts +3 -0
- package/dist/metrics/index.d.ts +3 -0
- package/dist/metrics/index.js +5 -0
- package/dist/metrics/index.js.map +1 -0
- package/dist/ml/index.cjs +87 -0
- package/dist/ml/index.cjs.map +1 -0
- package/dist/ml/index.d.cts +3 -0
- package/dist/ml/index.d.ts +3 -0
- package/dist/ml/index.js +6 -0
- package/dist/ml/index.js.map +1 -0
- package/dist/ndarray/index.cjs +501 -0
- package/dist/ndarray/index.cjs.map +1 -0
- package/dist/ndarray/index.d.cts +5 -0
- package/dist/ndarray/index.d.ts +5 -0
- package/dist/ndarray/index.js +4 -0
- package/dist/ndarray/index.js.map +1 -0
- package/dist/nn/index.cjs +142 -0
- package/dist/nn/index.cjs.map +1 -0
- package/dist/nn/index.d.cts +6 -0
- package/dist/nn/index.d.ts +6 -0
- package/dist/nn/index.js +5 -0
- package/dist/nn/index.js.map +1 -0
- package/dist/optim/index.cjs +77 -0
- package/dist/optim/index.cjs.map +1 -0
- package/dist/optim/index.d.cts +4 -0
- package/dist/optim/index.d.ts +4 -0
- package/dist/optim/index.js +4 -0
- package/dist/optim/index.js.map +1 -0
- package/dist/plot/index.cjs +114 -0
- package/dist/plot/index.cjs.map +1 -0
- package/dist/plot/index.d.cts +6 -0
- package/dist/plot/index.d.ts +6 -0
- package/dist/plot/index.js +5 -0
- package/dist/plot/index.js.map +1 -0
- package/dist/preprocess/index.cjs +82 -0
- package/dist/preprocess/index.cjs.map +1 -0
- package/dist/preprocess/index.d.cts +4 -0
- package/dist/preprocess/index.d.ts +4 -0
- package/dist/preprocess/index.js +5 -0
- package/dist/preprocess/index.js.map +1 -0
- package/dist/random/index.cjs +74 -0
- package/dist/random/index.cjs.map +1 -0
- package/dist/random/index.d.cts +3 -0
- package/dist/random/index.d.ts +3 -0
- package/dist/random/index.js +5 -0
- package/dist/random/index.js.map +1 -0
- package/dist/stats/index.cjs +142 -0
- package/dist/stats/index.cjs.map +1 -0
- package/dist/stats/index.d.cts +3 -0
- package/dist/stats/index.d.ts +3 -0
- package/dist/stats/index.js +5 -0
- package/dist/stats/index.js.map +1 -0
- package/dist/tensor-B96jjJLQ.d.cts +205 -0
- package/dist/tensor-B96jjJLQ.d.ts +205 -0
- package/package.json +226 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/datasets/index.ts","../src/datasets/utils.ts","../src/datasets/DataLoader.ts","../src/datasets/generators.ts","../src/datasets/loaders.ts"],"names":[],"mappings":"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","file":"chunk-B5TNKUEY.js","sourcesContent":["export type { DataLoaderOptions } from \"./DataLoader\";\nexport { DataLoader } from \"./DataLoader\";\nexport {\n makeBlobs,\n makeCircles,\n makeClassification,\n makeGaussianQuantiles,\n makeMoons,\n makeRegression,\n} from \"./generators\";\nexport type { Dataset } from \"./loaders\";\nexport {\n loadBreastCancer,\n loadConcentricRings,\n loadCropYield,\n loadCustomerSegments,\n loadDiabetes,\n loadDigits,\n loadEnergyEfficiency,\n loadFitnessScores,\n loadFlowersExtended,\n loadFruitQuality,\n loadGaussianIslands,\n loadHousingMini,\n loadIris,\n loadLeafShapes,\n loadLinnerud,\n loadMoonsMulti,\n loadPerfectlySeparable,\n loadPlantGrowth,\n loadSeedMorphology,\n loadSensorStates,\n loadSpiralArms,\n loadStudentPerformance,\n loadTrafficConditions,\n loadWeatherOutcomes,\n} from \"./loaders\";\n","import { DeepboxError, InvalidParameterError } from \"../core/errors\";\n\n/**\n * Assert that an input is a positive integer.\n *\n * @internal\n */\nexport function assertPositiveInt(name: string, value: number): void {\n if (!Number.isInteger(value) || value <= 0 || !Number.isSafeInteger(value)) {\n throw new InvalidParameterError(\n `${name} must be a positive safe integer; received ${value}`,\n name,\n value\n );\n }\n}\n\n/**\n * Assert that a value is a boolean.\n *\n * @internal\n */\nexport function assertBoolean(name: string, value: unknown): void {\n if (typeof value !== \"boolean\") {\n throw new InvalidParameterError(\n `${name} must be a boolean; received ${String(value)}`,\n name,\n value\n );\n }\n}\n\n/**\n * Normalize and validate an optional seed value.\n *\n * @internal\n */\nexport function normalizeOptionalSeed(name: string, value: number | undefined): number | undefined {\n if (value === undefined) {\n return undefined;\n }\n if (!Number.isFinite(value) || !Number.isInteger(value) || !Number.isSafeInteger(value)) {\n throw new InvalidParameterError(\n `${name} must be a finite safe integer; received ${value}`,\n name,\n value\n );\n }\n return value;\n}\n\n/**\n * Create a pseudo-random number generator.\n *\n * Uses a Linear Congruential Generator (LCG) with parameters from Numerical Recipes.\n * If seed is undefined, falls back to Math.random().\n *\n * @internal\n */\nexport function createRng(seed?: number): () => number {\n if (seed === undefined) return () => Math.random();\n\n let state = (seed ^ 0x9e3779b9) >>> 0;\n return () => {\n state = (state * 1664525 + 1013904223) >>> 0;\n return state / 2 ** 32;\n };\n}\n\n/**\n * Sample from standard normal distribution N(0, 1) using Box-Muller transform.\n *\n * @internal\n */\nexport function normal01(rng: () => number): number {\n const u1 = Math.max(rng(), Number.EPSILON);\n const u2 = rng();\n return Math.sqrt(-2 * Math.log(u1)) * Math.cos(2 * Math.PI * u2);\n}\n\n/**\n * Shuffle an array in-place using Fisher-Yates.\n *\n * @internal\n */\nexport function shuffleInPlace<T>(array: T[], rng: () => number): void {\n if (array.length <= 1) return;\n\n for (let i = array.length - 1; i > 0; i--) {\n const j = Math.floor(rng() * (i + 1));\n // Safety: i and j are both in [0, array.length - 1]\n const tmp = array[i];\n const swap = array[j];\n if (tmp === undefined || swap === undefined) {\n throw new DeepboxError(\n `Internal error: shuffle index out of bounds (i=${i}, j=${j}, len=${array.length})`\n );\n }\n array[i] = swap;\n array[j] = tmp;\n }\n}\n\n/**\n * Shuffle two aligned arrays in-place using Fisher-Yates.\n *\n * @internal\n */\nexport function shufflePairedInPlace<T, U>(left: T[], right: U[], rng: () => number): void {\n if (left.length !== right.length) {\n throw new DeepboxError(\n `Internal error: array length mismatch during shuffle (${left.length} vs ${right.length})`\n );\n }\n if (left.length <= 1) return;\n\n for (let i = left.length - 1; i > 0; i--) {\n const j = Math.floor(rng() * (i + 1));\n // Safety: i and j are both in [0, left.length - 1]\n const leftTmp = left[i];\n const leftSwap = left[j];\n if (leftTmp === undefined || leftSwap === undefined) {\n throw new DeepboxError(\n `Internal error: shuffle index out of bounds (i=${i}, j=${j}, len=${left.length})`\n );\n }\n left[i] = leftSwap;\n left[j] = leftTmp;\n\n const rightTmp = right[i];\n const rightSwap = right[j];\n if (rightTmp === undefined || rightSwap === undefined) {\n throw new DeepboxError(\n `Internal error: shuffle index out of bounds (i=${i}, j=${j}, len=${right.length})`\n );\n }\n right[i] = rightSwap;\n right[j] = rightTmp;\n }\n}\n","import { InvalidParameterError } from \"../core/errors\";\nimport { gather, Tensor, tensor } from \"../ndarray\";\nimport {\n assertBoolean,\n assertPositiveInt,\n createRng,\n normalizeOptionalSeed,\n shuffleInPlace,\n} from \"./utils\";\n\nexport type DataLoaderOptions = {\n batchSize?: number;\n shuffle?: boolean;\n dropLast?: boolean;\n seed?: number;\n};\n\n/**\n * Data loader for batching and shuffling datasets.\n *\n * Similar to PyTorch's DataLoader. Provides efficient iteration over datasets with support for\n * batching, shuffling, and deterministic reproducibility.\n *\n * @remarks\n * **Iteration Behavior:**\n * - Each iteration creates a fresh shuffle (if enabled), so multiple iterations over the same\n * loader will produce different orderings unless a seed is provided.\n * - With a seed, all iterations produce identical shuffles (deterministic).\n * - The underlying tensors are not copied; batches reference the same data via gather operations.\n *\n * **Shuffling:**\n * - Uses Fisher-Yates shuffle algorithm for uniform random permutation.\n * - When `seed` is provided, shuffling is deterministic and reproducible across runs.\n * - Shuffle happens per iteration, not per construction.\n *\n * @example\n * ```ts\n * import { DataLoader } from 'deepbox/datasets';\n * import { tensor } from 'deepbox/ndarray';\n *\n * const X = tensor([[1, 2], [3, 4], [5, 6], [7, 8]]);\n * const y = tensor([0, 1, 0, 1]);\n *\n * // Training loop with shuffling\n * const loader = new DataLoader(X, y, {\n * batchSize: 2,\n * shuffle: true,\n * seed: 42 // Deterministic shuffling\n * });\n *\n * for (const [xBatch, yBatch] of loader) {\n * // Train on batch\n * console.log(xBatch.shape, yBatch.shape); // [2, 2], [2]\n * }\n * ```\n *\n * @example\n * ```ts\n * // Inference without labels\n * const testLoader = new DataLoader(X, undefined, {\n * batchSize: 4,\n * shuffle: false\n * });\n *\n * for (const [xBatch] of testLoader) {\n * // Make predictions\n * }\n * ```\n *\n * @see {@link https://pytorch.org/docs/stable/data.html#torch.utils.data.DataLoader | PyTorch DataLoader}\n */\nexport class DataLoader<TTarget extends Tensor | undefined = undefined> {\n private X: Tensor;\n private y: Tensor | undefined;\n private batchSize: number;\n private shuffle: boolean;\n private dropLast: boolean;\n private indices: number[];\n private seed: number | undefined;\n private nSamples: number;\n\n constructor(X: Tensor, y: TTarget, options?: DataLoaderOptions);\n constructor(X: Tensor, options?: DataLoaderOptions);\n constructor(X: Tensor, yOrOptions?: TTarget | DataLoaderOptions, options?: DataLoaderOptions) {\n this.X = X;\n\n let rawOpts: DataLoaderOptions | undefined;\n\n if (yOrOptions instanceof Tensor) {\n this.y = yOrOptions;\n rawOpts = options;\n } else {\n this.y = undefined;\n // supports: new DataLoader(X, options) AND new DataLoader(X, undefined, options)\n rawOpts = yOrOptions === undefined ? options : yOrOptions;\n }\n\n if (rawOpts !== undefined) {\n if (rawOpts === null || typeof rawOpts !== \"object\" || Array.isArray(rawOpts)) {\n throw new InvalidParameterError(\n \"options must be an object when provided\",\n \"options\",\n rawOpts\n );\n }\n }\n\n const opts: DataLoaderOptions = rawOpts ?? {};\n\n this.batchSize = opts.batchSize ?? 1;\n this.shuffle = opts.shuffle ?? false;\n this.dropLast = opts.dropLast ?? false;\n this.seed = normalizeOptionalSeed(\"seed\", opts.seed);\n\n assertPositiveInt(\"batchSize\", this.batchSize);\n if (opts.shuffle !== undefined) assertBoolean(\"shuffle\", this.shuffle);\n if (opts.dropLast !== undefined) assertBoolean(\"dropLast\", this.dropLast);\n\n if (this.X.ndim === 0) {\n throw new InvalidParameterError(\"X must have at least 1 dimension (samples axis)\", \"X\");\n }\n\n const nSamples = this.X.shape[0];\n if (nSamples === undefined || nSamples === 0) {\n throw new InvalidParameterError(\"X must have at least 1 sample\", \"X\", nSamples);\n }\n\n const y = this.y;\n if (y !== undefined) {\n if (y.ndim === 0) {\n throw new InvalidParameterError(\"y must have at least 1 dimension (samples axis)\", \"y\");\n }\n const ySamples = y.shape[0];\n if (ySamples !== nSamples) {\n throw new InvalidParameterError(\n `X and y must have the same number of samples; X has ${nSamples}, y has ${ySamples}`,\n \"y\",\n ySamples\n );\n }\n }\n\n this.nSamples = nSamples;\n this.indices = Array.from({ length: nSamples }, (_, i) => i);\n }\n\n /**\n * Number of batches in the data loader.\n */\n get length(): number {\n return this.dropLast\n ? Math.floor(this.nSamples / this.batchSize)\n : Math.ceil(this.nSamples / this.batchSize);\n }\n\n [Symbol.iterator](this: DataLoader<Tensor>): IterableIterator<[Tensor, Tensor]>;\n [Symbol.iterator](this: DataLoader<undefined>): IterableIterator<[Tensor]>;\n [Symbol.iterator](): IterableIterator<[Tensor] | [Tensor, Tensor]> {\n return this.y === undefined ? this.iterateX() : this.iterateXY();\n }\n\n private prepareIteration(): { indices: number[]; nBatches: number } {\n const indices = [...this.indices];\n\n if (this.shuffle) {\n const rng = createRng(this.seed);\n shuffleInPlace(indices, rng);\n }\n\n const nBatches = this.dropLast\n ? Math.floor(this.nSamples / this.batchSize)\n : Math.ceil(this.nSamples / this.batchSize);\n\n return { indices, nBatches };\n }\n\n private *iterateX(): IterableIterator<[Tensor]> {\n const { indices, nBatches } = this.prepareIteration();\n\n for (let i = 0; i < nBatches; i++) {\n const start = i * this.batchSize;\n const end = Math.min(start + this.batchSize, this.nSamples);\n const batchIndices = indices.slice(start, end);\n\n const indexTensor = tensor(batchIndices, { dtype: \"int32\" });\n const xBatch = gather(this.X, indexTensor, 0);\n\n yield [xBatch];\n }\n }\n\n private *iterateXY(): IterableIterator<[Tensor, Tensor]> {\n const { indices, nBatches } = this.prepareIteration();\n const y = this.y;\n if (y === undefined) {\n throw new InvalidParameterError(\"Internal error: expected y to be defined\", \"y\");\n }\n\n for (let i = 0; i < nBatches; i++) {\n const start = i * this.batchSize;\n const end = Math.min(start + this.batchSize, this.nSamples);\n const batchIndices = indices.slice(start, end);\n\n const indexTensor = tensor(batchIndices, { dtype: \"int32\" });\n const xBatch = gather(this.X, indexTensor, 0);\n const yBatch = gather(y, indexTensor, 0);\n\n yield [xBatch, yBatch];\n }\n }\n}\n","import { DeepboxError, InvalidParameterError } from \"../core/errors\";\nimport { type Tensor, tensor } from \"../ndarray\";\nimport {\n assertBoolean,\n assertPositiveInt,\n createRng,\n normal01,\n normalizeOptionalSeed,\n shufflePairedInPlace,\n} from \"./utils\";\n\nfunction readAt<T>(arr: ArrayLike<T>, index: number, label: string): T {\n if (!Number.isInteger(index) || index < 0 || index >= arr.length) {\n throw new DeepboxError(`Internal error: ${label}[${index}] is out of bounds`);\n }\n const v = arr[index];\n if (v === undefined) {\n throw new DeepboxError(`Internal error: ${label}[${index}] is undefined`);\n }\n return v;\n}\n\nfunction readFiniteNumber(arr: ArrayLike<number>, index: number, label: string): number {\n const v = readAt(arr, index, label);\n if (!Number.isFinite(v)) {\n throw new InvalidParameterError(\"Center coordinates must be finite\", \"centers\", v);\n }\n return v;\n}\n\nfunction getRequired<T>(arr: readonly T[], index: number, label: string): T {\n const v = arr[index];\n if (v === undefined) {\n throw new DeepboxError(`Internal error: ${label}[${index}] is undefined`);\n }\n return v;\n}\n\n/**\n * Generate a random n-class classification dataset.\n *\n * Produces informative features drawn from class-conditional Gaussians,\n * redundant features as random linear combinations of the informative ones,\n * and noise features sampled from N(0, 1).\n *\n * @param options - Configuration options.\n * @param options.nSamples - Number of samples (default: 100).\n * @param options.nFeatures - Total number of features (default: 20).\n * @param options.nInformative - Number of informative features (default: 2).\n * @param options.nRedundant - Number of redundant features (default: 2).\n * @param options.nClasses - Number of classes (default: 2).\n * @param options.randomState - Seed for reproducibility.\n * @returns A tuple `[X, y]` where X has shape `[nSamples, nFeatures]` and y has shape `[nSamples]` with dtype `int32`.\n *\n * @see {@link https://scikit-learn.org/stable/modules/generated/sklearn.datasets.make_classification.html | sklearn.datasets.make_classification}\n */\nexport function makeClassification(\n options: {\n nSamples?: number;\n nFeatures?: number;\n nInformative?: number;\n nRedundant?: number;\n nClasses?: number;\n randomState?: number;\n } = {}\n): [Tensor, Tensor] {\n const nSamples = options.nSamples ?? 100;\n const nFeatures = options.nFeatures ?? 20;\n const nInformative = options.nInformative ?? 2;\n const nRedundant = options.nRedundant ?? 2;\n const nClasses = options.nClasses ?? 2;\n\n assertPositiveInt(\"nSamples\", nSamples);\n assertPositiveInt(\"nFeatures\", nFeatures);\n assertPositiveInt(\"nInformative\", nInformative);\n assertPositiveInt(\"nClasses\", nClasses);\n\n if (!Number.isInteger(nRedundant) || nRedundant < 0 || !Number.isSafeInteger(nRedundant)) {\n throw new InvalidParameterError(\n `nRedundant must be a non-negative safe integer; received ${nRedundant}`,\n \"nRedundant\",\n nRedundant\n );\n }\n if (nInformative > nFeatures) {\n throw new InvalidParameterError(\n `nInformative (${nInformative}) cannot exceed nFeatures (${nFeatures})`,\n \"nInformative\",\n nInformative\n );\n }\n if (nInformative + nRedundant > nFeatures) {\n throw new InvalidParameterError(\n `nInformative + nRedundant (${\n nInformative + nRedundant\n }) cannot exceed nFeatures (${nFeatures})`,\n \"nRedundant\",\n nRedundant\n );\n }\n\n const seed = normalizeOptionalSeed(\"randomState\", options.randomState);\n const rng = createRng(seed);\n\n // classMeans[c][k]\n const classMeans = Array.from({ length: nClasses }, () => new Float64Array(nInformative));\n for (let c = 0; c < nClasses; c++) {\n const meanVec = getRequired(classMeans, c, \"classMeans\");\n for (let k = 0; k < nInformative; k++) {\n meanVec[k] = (rng() - 0.5) * 2 * nClasses;\n }\n }\n\n // weights[j][k] for redundant features\n const weights = Array.from({ length: nRedundant }, () => new Float64Array(nInformative));\n for (let j = 0; j < nRedundant; j++) {\n const w = getRequired(weights, j, \"weights\");\n for (let k = 0; k < nInformative; k++) {\n w[k] = rng() - 0.5;\n }\n }\n\n const XData: number[][] = new Array(nSamples);\n const yData: number[] = new Array(nSamples);\n\n const nNoise = nFeatures - nInformative - nRedundant;\n\n for (let i = 0; i < nSamples; i++) {\n const label = Math.floor(rng() * nClasses);\n yData[i] = label;\n\n const meanVec = getRequired(classMeans, label, \"classMeans\");\n const row: number[] = [];\n\n // informative\n const informative = new Float64Array(nInformative);\n for (let k = 0; k < nInformative; k++) {\n const mean = readAt(meanVec, k, \"meanVec\");\n const v = mean + normal01(rng);\n informative[k] = v;\n row.push(v);\n }\n\n // redundant\n for (let j = 0; j < nRedundant; j++) {\n const w = getRequired(weights, j, \"weights\");\n let val = 0;\n for (let k = 0; k < nInformative; k++) {\n val += readAt(informative, k, \"informative\") * readAt(w, k, \"weights\");\n }\n row.push(val + normal01(rng) * 0.01);\n }\n\n // noise\n for (let j = 0; j < nNoise; j++) {\n row.push(normal01(rng));\n }\n\n XData[i] = row;\n }\n\n return [tensor(XData), tensor(yData, { dtype: \"int32\" })];\n}\n\n/**\n * Generate a random regression dataset.\n *\n * Features are drawn from N(0, 1) and the target is a linear combination\n * of the features with optional Gaussian noise.\n *\n * @param options - Configuration options.\n * @param options.nSamples - Number of samples (default: 100).\n * @param options.nFeatures - Number of features (default: 100).\n * @param options.noise - Standard deviation of Gaussian noise on the target (default: 0).\n * @param options.randomState - Seed for reproducibility.\n * @returns A tuple `[X, y]` where X has shape `[nSamples, nFeatures]` and y has shape `[nSamples]`.\n *\n * @see {@link https://scikit-learn.org/stable/modules/generated/sklearn.datasets.make_regression.html | sklearn.datasets.make_regression}\n */\nexport function makeRegression(\n options: { nSamples?: number; nFeatures?: number; noise?: number; randomState?: number } = {}\n): [Tensor, Tensor] {\n const nSamples = options.nSamples ?? 100;\n const nFeatures = options.nFeatures ?? 100;\n const noiseStd = options.noise ?? 0.0;\n\n assertPositiveInt(\"nSamples\", nSamples);\n assertPositiveInt(\"nFeatures\", nFeatures);\n\n if (!Number.isFinite(noiseStd) || noiseStd < 0) {\n throw new InvalidParameterError(\n `noise must be a non-negative finite number; received ${noiseStd}`,\n \"noise\",\n noiseStd\n );\n }\n\n const seed = normalizeOptionalSeed(\"randomState\", options.randomState);\n const rng = createRng(seed);\n\n const weights = new Float64Array(nFeatures);\n for (let j = 0; j < nFeatures; j++) {\n weights[j] = normal01(rng);\n }\n\n const XData: number[][] = new Array(nSamples);\n const yData: number[] = new Array(nSamples);\n\n for (let i = 0; i < nSamples; i++) {\n const row: number[] = new Array(nFeatures);\n let val = 0;\n\n for (let j = 0; j < nFeatures; j++) {\n const x = normal01(rng);\n row[j] = x;\n val += x * readAt(weights, j, \"weights\");\n }\n\n if (noiseStd > 0) val += normal01(rng) * noiseStd;\n\n XData[i] = row;\n yData[i] = val;\n }\n\n return [tensor(XData), tensor(yData)];\n}\n\n/**\n * Generate isotropic Gaussian blobs for clustering.\n *\n * Samples are drawn from Gaussian distributions centered at randomly generated\n * or user-specified locations. Useful for testing clustering algorithms.\n *\n * @param options - Configuration options.\n * @param options.nSamples - Total number of samples (default: 100).\n * @param options.nFeatures - Number of features per sample (default: 2). Ignored when `centers` is an array.\n * @param options.centers - Number of cluster centers or explicit center coordinates (default: 3).\n * @param options.clusterStd - Standard deviation of each cluster (default: 1.0).\n * @param options.shuffle - Whether to shuffle the samples (default: true).\n * @param options.randomState - Seed for reproducibility.\n * @returns A tuple `[X, y]` where X has shape `[nSamples, nFeatures]` and y has shape `[nSamples]` with dtype `int32`.\n *\n * @see {@link https://scikit-learn.org/stable/modules/generated/sklearn.datasets.make_blobs.html | sklearn.datasets.make_blobs}\n */\nexport function makeBlobs(\n options: {\n nSamples?: number;\n nFeatures?: number;\n centers?: number | number[][];\n clusterStd?: number;\n randomState?: number;\n shuffle?: boolean;\n } = {}\n): [Tensor, Tensor] {\n const nSamples = options.nSamples ?? 100;\n const clusterStd = options.clusterStd ?? 1.0;\n const shuffle = options.shuffle ?? true;\n\n assertPositiveInt(\"nSamples\", nSamples);\n if (!Number.isFinite(clusterStd) || clusterStd <= 0) {\n throw new InvalidParameterError(\n `clusterStd must be positive; received ${clusterStd}`,\n \"clusterStd\",\n clusterStd\n );\n }\n assertBoolean(\"shuffle\", shuffle);\n\n const centersInput = options.centers === undefined ? 3 : options.centers;\n const seed = normalizeOptionalSeed(\"randomState\", options.randomState);\n const rng = createRng(seed);\n\n let nFeatures: number;\n let centerLocations: Float64Array[];\n\n if (typeof centersInput === \"number\") {\n assertPositiveInt(\"centers\", centersInput);\n\n const nFeat = options.nFeatures ?? 2;\n assertPositiveInt(\"nFeatures\", nFeat);\n nFeatures = nFeat;\n\n centerLocations = Array.from({ length: centersInput }, () => {\n const c = new Float64Array(nFeat);\n for (let j = 0; j < nFeat; j++) c[j] = (rng() - 0.5) * 20;\n return c;\n });\n } else if (Array.isArray(centersInput)) {\n if (centersInput.length === 0) {\n throw new InvalidParameterError(\"centers cannot be empty\", \"centers\");\n }\n const firstCenter = centersInput[0];\n if (!Array.isArray(firstCenter) || firstCenter.length === 0) {\n throw new InvalidParameterError(\"centers must be a non-empty array of arrays\", \"centers\");\n }\n\n nFeatures = options.nFeatures ?? firstCenter.length;\n assertPositiveInt(\"nFeatures\", nFeatures);\n\n centerLocations = centersInput.map((c) => {\n if (!Array.isArray(c) || c.length !== nFeatures) {\n throw new InvalidParameterError(\n `Center dimension mismatch. Expected ${nFeatures}; received ${\n Array.isArray(c) ? c.length : 0\n }`,\n \"centers\",\n c\n );\n }\n const out = new Float64Array(nFeatures);\n for (let j = 0; j < nFeatures; j++) {\n out[j] = readFiniteNumber(c, j, \"centers\");\n }\n return out;\n });\n } else {\n throw new InvalidParameterError(\"centers must be an int or an array of arrays\", \"centers\");\n }\n\n const nCenters = centerLocations.length;\n const base = Math.floor(nSamples / nCenters);\n const remainder = nSamples % nCenters;\n\n const XData: number[][] = [];\n const yData: number[] = [];\n\n for (let c = 0; c < nCenters; c++) {\n const nC = base + (c < remainder ? 1 : 0);\n const center = getRequired(centerLocations, c, \"centerLocations\");\n\n for (let i = 0; i < nC; i++) {\n const row: number[] = new Array(nFeatures);\n for (let j = 0; j < nFeatures; j++) {\n row[j] = readAt(center, j, \"center\") + normal01(rng) * clusterStd;\n }\n XData.push(row);\n yData.push(c);\n }\n }\n\n if (shuffle) shufflePairedInPlace(XData, yData, rng);\n\n return [tensor(XData), tensor(yData, { dtype: \"int32\" })];\n}\n\n/**\n * Generate two interleaving half-circle (moons) dataset.\n *\n * Useful for testing algorithms that handle non-linearly separable data.\n *\n * @param options - Configuration options.\n * @param options.nSamples - Total number of samples, split evenly between the two moons (default: 100).\n * @param options.noise - Standard deviation of Gaussian noise (default: 0).\n * @param options.shuffle - Whether to shuffle the samples (default: true).\n * @param options.randomState - Seed for reproducibility.\n * @returns A tuple `[X, y]` where X has shape `[nSamples, 2]` and y has shape `[nSamples]` with dtype `int32`.\n *\n * @see {@link https://scikit-learn.org/stable/modules/generated/sklearn.datasets.make_moons.html | sklearn.datasets.make_moons}\n */\nexport function makeMoons(\n options: { nSamples?: number; noise?: number; randomState?: number; shuffle?: boolean } = {}\n): [Tensor, Tensor] {\n const nSamples = options.nSamples ?? 100;\n const noiseStd = options.noise ?? 0.0;\n const shuffle = options.shuffle ?? true;\n\n assertPositiveInt(\"nSamples\", nSamples);\n if (!Number.isFinite(noiseStd) || noiseStd < 0) {\n throw new InvalidParameterError(\n `noise must be a non-negative finite number; received ${noiseStd}`,\n \"noise\",\n noiseStd\n );\n }\n assertBoolean(\"shuffle\", shuffle);\n\n const seed = normalizeOptionalSeed(\"randomState\", options.randomState);\n const rng = createRng(seed);\n\n const samplesFirst = Math.ceil(nSamples / 2);\n const samplesSecond = nSamples - samplesFirst;\n\n const XData: number[][] = [];\n const yData: number[] = [];\n\n for (let i = 0; i < samplesFirst; i++) {\n const angle = Math.PI * (i / samplesFirst);\n const x = Math.cos(angle) + normal01(rng) * noiseStd;\n const y = Math.sin(angle) + normal01(rng) * noiseStd;\n XData.push([x, y]);\n yData.push(0);\n }\n\n for (let i = 0; i < samplesSecond; i++) {\n const angle = Math.PI * (i / samplesSecond);\n const x = 1 - Math.cos(angle) + normal01(rng) * noiseStd;\n const y = 0.5 - Math.sin(angle) + normal01(rng) * noiseStd;\n XData.push([x, y]);\n yData.push(1);\n }\n\n if (shuffle) shufflePairedInPlace(XData, yData, rng);\n\n return [tensor(XData), tensor(yData, { dtype: \"int32\" })];\n}\n\n/**\n * Generate a large circle containing a smaller circle in 2D.\n *\n * Useful for testing algorithms that handle non-linearly separable data.\n *\n * @param options - Configuration options.\n * @param options.nSamples - Total number of samples, split evenly between inner and outer circles (default: 100).\n * @param options.noise - Standard deviation of Gaussian noise (default: 0).\n * @param options.factor - Scale factor between inner and outer circle, must be in (0, 1) (default: 0.8).\n * @param options.shuffle - Whether to shuffle the samples (default: true).\n * @param options.randomState - Seed for reproducibility.\n * @returns A tuple `[X, y]` where X has shape `[nSamples, 2]` and y has shape `[nSamples]` with dtype `int32`.\n *\n * @see {@link https://scikit-learn.org/stable/modules/generated/sklearn.datasets.make_circles.html | sklearn.datasets.make_circles}\n */\nexport function makeCircles(\n options: {\n nSamples?: number;\n noise?: number;\n factor?: number;\n randomState?: number;\n shuffle?: boolean;\n } = {}\n): [Tensor, Tensor] {\n const nSamples = options.nSamples ?? 100;\n const noiseStd = options.noise ?? 0.0;\n const factor = options.factor ?? 0.8;\n const shuffle = options.shuffle ?? true;\n\n assertPositiveInt(\"nSamples\", nSamples);\n if (!Number.isFinite(noiseStd) || noiseStd < 0) {\n throw new InvalidParameterError(\n `noise must be a non-negative finite number; received ${noiseStd}`,\n \"noise\",\n noiseStd\n );\n }\n if (!Number.isFinite(factor) || factor <= 0 || factor >= 1) {\n throw new InvalidParameterError(\n `factor must be in (0, 1); received ${factor}`,\n \"factor\",\n factor\n );\n }\n assertBoolean(\"shuffle\", shuffle);\n\n const seed = normalizeOptionalSeed(\"randomState\", options.randomState);\n const rng = createRng(seed);\n\n const samplesOuter = Math.ceil(nSamples / 2);\n const samplesInner = nSamples - samplesOuter;\n\n const XData: number[][] = [];\n const yData: number[] = [];\n\n for (let i = 0; i < samplesOuter; i++) {\n const angle = 2 * Math.PI * (i / samplesOuter);\n const x = Math.cos(angle) + normal01(rng) * noiseStd;\n const y = Math.sin(angle) + normal01(rng) * noiseStd;\n XData.push([x, y]);\n yData.push(0);\n }\n\n for (let i = 0; i < samplesInner; i++) {\n const angle = 2 * Math.PI * (i / samplesInner);\n const x = factor * Math.cos(angle) + normal01(rng) * noiseStd;\n const y = factor * Math.sin(angle) + normal01(rng) * noiseStd;\n XData.push([x, y]);\n yData.push(1);\n }\n\n if (shuffle) shufflePairedInPlace(XData, yData, rng);\n\n return [tensor(XData), tensor(yData, { dtype: \"int32\" })];\n}\n\n/**\n * Generate a dataset with classes separated by concentric Gaussian quantile shells.\n *\n * Samples are drawn from an isotropic Gaussian and assigned to classes based on\n * quantile boundaries of their Euclidean distance from the origin.\n *\n * @param options - Configuration options.\n * @param options.nSamples - Number of samples (default: 100).\n * @param options.nFeatures - Number of features (default: 2).\n * @param options.nClasses - Number of classes (default: 3).\n * @param options.randomState - Seed for reproducibility.\n * @returns A tuple `[X, y]` where X has shape `[nSamples, nFeatures]` and y has shape `[nSamples]` with dtype `int32`.\n *\n * @see {@link https://scikit-learn.org/stable/modules/generated/sklearn.datasets.make_gaussian_quantiles.html | sklearn.datasets.make_gaussian_quantiles}\n */\nexport function makeGaussianQuantiles(\n options: { nSamples?: number; nFeatures?: number; nClasses?: number; randomState?: number } = {}\n): [Tensor, Tensor] {\n const nSamples = options.nSamples ?? 100;\n const nFeatures = options.nFeatures ?? 2;\n const nClasses = options.nClasses ?? 3;\n\n assertPositiveInt(\"nSamples\", nSamples);\n assertPositiveInt(\"nFeatures\", nFeatures);\n assertPositiveInt(\"nClasses\", nClasses);\n\n const seed = normalizeOptionalSeed(\"randomState\", options.randomState);\n const rng = createRng(seed);\n\n const XData: number[][] = new Array(nSamples);\n const distances: number[] = new Array(nSamples);\n\n for (let i = 0; i < nSamples; i++) {\n const row: number[] = new Array(nFeatures);\n let distSq = 0;\n\n for (let j = 0; j < nFeatures; j++) {\n const v = normal01(rng);\n row[j] = v;\n distSq += v * v;\n }\n\n XData[i] = row;\n distances[i] = Math.sqrt(distSq);\n }\n\n const sortedDistances = [...distances].sort((a, b) => a - b);\n const quantileBoundaries: number[] = [];\n\n for (let c = 1; c < nClasses; c++) {\n const idx = Math.floor((c * nSamples) / nClasses);\n quantileBoundaries.push(getRequired(sortedDistances, idx, \"sortedDistances\"));\n }\n\n const yData: number[] = new Array(nSamples);\n for (let i = 0; i < nSamples; i++) {\n const dist = getRequired(distances, i, \"distances\");\n let label = 0;\n for (const boundary of quantileBoundaries) {\n if (dist > boundary) label++;\n else break;\n }\n yData[i] = label;\n }\n\n return [tensor(XData), tensor(yData, { dtype: \"int32\" })];\n}\n","// ---- loaders.ts ----\nimport { type Tensor, tensor } from \"../ndarray\";\nimport { createRng, normal01 } from \"./utils\";\n\nexport type Dataset = {\n data: Tensor;\n target: Tensor;\n featureNames: string[];\n targetNames?: string[];\n description: string;\n};\n\nconst SYNTHETIC_NOTE =\n \"Synthetic (deterministic) dataset inspired by a common ML benchmark. \" +\n \"Values are generated, not the original reference dataset.\";\n\n// ─────────────────────────────────────────────────────────────────────────────\n// 1. Iris\n// ─────────────────────────────────────────────────────────────────────────────\n\nlet __iris: { data: number[][]; target: number[] } | undefined;\n\nfunction getIrisData() {\n if (__iris !== undefined) return __iris;\n const rng = createRng(1337);\n\n const data: number[][] = [];\n const target: number[] = [];\n\n for (let i = 0; i < 50; i++) {\n data.push([5.0 + rng() * 0.8, 3.4 + rng() * 0.4, 1.4 + rng() * 0.3, 0.2 + rng() * 0.2]);\n target.push(0);\n }\n for (let i = 0; i < 50; i++) {\n data.push([5.9 + rng() * 0.8, 2.8 + rng() * 0.4, 4.2 + rng() * 0.5, 1.3 + rng() * 0.3]);\n target.push(1);\n }\n for (let i = 0; i < 50; i++) {\n data.push([6.5 + rng() * 0.8, 3.0 + rng() * 0.4, 5.5 + rng() * 0.5, 2.0 + rng() * 0.4]);\n target.push(2);\n }\n\n __iris = { data, target };\n return __iris;\n}\n\n/**\n * Load the synthetic Iris dataset.\n *\n * 150 samples, 4 features, 3 classes (setosa, versicolor, virginica).\n * Deterministic — always returns the same data.\n *\n * @returns A {@link Dataset} with `data` shape `[150, 4]` and `target` shape `[150]` (int32).\n */\nexport function loadIris(): Dataset {\n const { data, target } = getIrisData();\n return {\n data: tensor(data),\n target: tensor(target, { dtype: \"int32\" }),\n featureNames: [\n \"sepal length (cm)\",\n \"sepal width (cm)\",\n \"petal length (cm)\",\n \"petal width (cm)\",\n ],\n targetNames: [\"setosa\", \"versicolor\", \"virginica\"],\n description: `${SYNTHETIC_NOTE} 150 samples, 4 features, 3 classes.`,\n };\n}\n\n// ─────────────────────────────────────────────────────────────────────────────\n// 2. Digits\n// ─────────────────────────────────────────────────────────────────────────────\n\nlet __digits: { data: number[][]; target: number[] } | undefined;\n\nfunction getDigitsData() {\n if (__digits !== undefined) return __digits;\n const rng = createRng(7);\n\n const data: number[][] = [];\n const target: number[] = [];\n\n for (let digit = 0; digit < 10; digit++) {\n const samplesPerDigit = digit === 9 ? 177 : 180;\n for (let i = 0; i < samplesPerDigit; i++) {\n const sample: number[] = [];\n for (let j = 0; j < 64; j++) {\n sample.push(Math.floor(rng() * 16));\n }\n data.push(sample);\n target.push(digit);\n }\n }\n\n __digits = { data, target };\n return __digits;\n}\n\n/**\n * Load the synthetic Digits dataset.\n *\n * 1797 samples, 64 features (8×8 pixel values 0–15), 10 classes (digits 0–9).\n * Deterministic — always returns the same data.\n *\n * @returns A {@link Dataset} with `data` shape `[1797, 64]` and `target` shape `[1797]` (int32).\n */\nexport function loadDigits(): Dataset {\n const { data, target } = getDigitsData();\n return {\n data: tensor(data),\n target: tensor(target, { dtype: \"int32\" }),\n featureNames: Array.from({ length: 64 }, (_, i) => `pixel_${i}`),\n targetNames: [\"0\", \"1\", \"2\", \"3\", \"4\", \"5\", \"6\", \"7\", \"8\", \"9\"],\n description: `${SYNTHETIC_NOTE} 1797 samples, 64 features, 10 classes.`,\n };\n}\n\n// ─────────────────────────────────────────────────────────────────────────────\n// 3. Breast Cancer\n// ─────────────────────────────────────────────────────────────────────────────\n\nlet __breastCancer: { data: number[][]; target: number[] } | undefined;\n\nfunction getBreastCancerData() {\n if (__breastCancer !== undefined) return __breastCancer;\n const rng = createRng(99);\n\n const data: number[][] = [];\n const target: number[] = [];\n\n for (let i = 0; i < 212; i++) {\n const sample: number[] = [];\n for (let j = 0; j < 30; j++) {\n sample.push(15 + rng() * 10);\n }\n data.push(sample);\n target.push(0);\n }\n for (let i = 0; i < 357; i++) {\n const sample: number[] = [];\n for (let j = 0; j < 30; j++) {\n sample.push(10 + rng() * 8);\n }\n data.push(sample);\n target.push(1);\n }\n\n __breastCancer = { data, target };\n return __breastCancer;\n}\n\n/**\n * Load the synthetic Breast Cancer dataset.\n *\n * 569 samples, 30 features, 2 classes (malignant, benign).\n * Deterministic — always returns the same data.\n *\n * @returns A {@link Dataset} with `data` shape `[569, 30]` and `target` shape `[569]` (int32).\n */\nexport function loadBreastCancer(): Dataset {\n const { data, target } = getBreastCancerData();\n return {\n data: tensor(data),\n target: tensor(target, { dtype: \"int32\" }),\n featureNames: [\n \"mean radius\",\n \"mean texture\",\n \"mean perimeter\",\n \"mean area\",\n \"mean smoothness\",\n \"mean compactness\",\n \"mean concavity\",\n \"mean concave points\",\n \"mean symmetry\",\n \"mean fractal dimension\",\n \"radius error\",\n \"texture error\",\n \"perimeter error\",\n \"area error\",\n \"smoothness error\",\n \"compactness error\",\n \"concavity error\",\n \"concave points error\",\n \"symmetry error\",\n \"fractal dimension error\",\n \"worst radius\",\n \"worst texture\",\n \"worst perimeter\",\n \"worst area\",\n \"worst smoothness\",\n \"worst compactness\",\n \"worst concavity\",\n \"worst concave points\",\n \"worst symmetry\",\n \"worst fractal dimension\",\n ],\n targetNames: [\"malignant\", \"benign\"],\n description: `${SYNTHETIC_NOTE} 569 samples, 30 features, 2 classes.`,\n };\n}\n\n// ─────────────────────────────────────────────────────────────────────────────\n// 4. Diabetes\n// ─────────────────────────────────────────────────────────────────────────────\n\nlet __diabetes: { data: number[][]; target: number[] } | undefined;\n\nfunction getDiabetesData() {\n if (__diabetes !== undefined) return __diabetes;\n const rng = createRng(123);\n\n const data: number[][] = [];\n const target: number[] = [];\n\n for (let i = 0; i < 442; i++) {\n const sample: number[] = [];\n for (let j = 0; j < 10; j++) {\n sample.push(-0.1 + rng() * 0.2);\n }\n data.push(sample);\n target.push(50 + rng() * 300);\n }\n\n __diabetes = { data, target };\n return __diabetes;\n}\n\n/**\n * Load the synthetic Diabetes regression dataset.\n *\n * 442 samples, 10 features, continuous target.\n * Deterministic — always returns the same data.\n *\n * @returns A {@link Dataset} with `data` shape `[442, 10]` and `target` shape `[442]`.\n */\nexport function loadDiabetes(): Dataset {\n const { data, target } = getDiabetesData();\n return {\n data: tensor(data),\n target: tensor(target),\n featureNames: [\"age\", \"sex\", \"bmi\", \"bp\", \"s1\", \"s2\", \"s3\", \"s4\", \"s5\", \"s6\"],\n description: `${SYNTHETIC_NOTE} 442 samples, 10 features (regression).`,\n };\n}\n\n// ─────────────────────────────────────────────────────────────────────────────\n// 5. Linnerud\n// ─────────────────────────────────────────────────────────────────────────────\n\nlet __linnerud: { data: number[][]; target: number[][] } | undefined;\n\nfunction getLinnerudData() {\n if (__linnerud !== undefined) return __linnerud;\n const rng = createRng(555);\n\n const data: number[][] = [];\n const target: number[][] = [];\n\n for (let i = 0; i < 20; i++) {\n data.push([\n 5 + Math.floor(rng() * 15),\n 100 + Math.floor(rng() * 100),\n 50 + Math.floor(rng() * 200),\n ]);\n target.push([170 + rng() * 30, 60 + rng() * 20, 50 + rng() * 20]);\n }\n\n __linnerud = { data, target };\n return __linnerud;\n}\n\n/**\n * Load the synthetic Linnerud multi-output regression dataset.\n *\n * 20 samples, 3 exercise features, 3 physiological targets.\n * Deterministic — always returns the same data.\n *\n * @returns A {@link Dataset} with `data` shape `[20, 3]` and `target` shape `[20, 3]`.\n */\nexport function loadLinnerud(): Dataset {\n const { data, target } = getLinnerudData();\n return {\n data: tensor(data),\n target: tensor(target),\n featureNames: [\"Chins\", \"Situps\", \"Jumps\"],\n targetNames: [\"Weight\", \"Waist\", \"Pulse\"],\n description: `${SYNTHETIC_NOTE} 20 samples, 3 exercise features, 3 physiological targets.`,\n };\n}\n\n// ─────────────────────────────────────────────────────────────────────────────\n// 6. Flowers Extended\n// ─────────────────────────────────────────────────────────────────────────────\n\nlet __flowersExtended: { data: number[][]; target: number[] } | undefined;\n\nfunction getFlowersExtendedData() {\n if (__flowersExtended !== undefined) return __flowersExtended;\n const rng = createRng(3001);\n const data: number[][] = [];\n const target: number[] = [];\n\n // Class 0: setosa\n for (let i = 0; i < 45; i++) {\n data.push([\n 4.5 + rng() * 1.0,\n 3.0 + rng() * 0.8,\n 1.0 + rng() * 0.8,\n 0.1 + rng() * 0.4,\n 2.0 + rng() * 1.5,\n 1.5 + rng() * 1.0,\n ]);\n target.push(0);\n }\n // Class 1: versicolor\n for (let i = 0; i < 45; i++) {\n data.push([\n 5.5 + rng() * 1.5,\n 2.5 + rng() * 0.8,\n 3.5 + rng() * 1.5,\n 1.0 + rng() * 0.8,\n 4.0 + rng() * 2.0,\n 2.5 + rng() * 1.0,\n ]);\n target.push(1);\n }\n // Class 2: virginica\n for (let i = 0; i < 45; i++) {\n data.push([\n 6.0 + rng() * 1.9,\n 2.8 + rng() * 0.8,\n 4.5 + rng() * 2.0,\n 1.5 + rng() * 1.0,\n 5.0 + rng() * 2.0,\n 3.0 + rng() * 1.5,\n ]);\n target.push(2);\n }\n // Class 3: chrysantha\n for (let i = 0; i < 45; i++) {\n data.push([\n 5.0 + rng() * 1.5,\n 2.2 + rng() * 0.8,\n 2.5 + rng() * 1.5,\n 0.8 + rng() * 0.6,\n 6.0 + rng() * 2.5,\n 2.0 + rng() * 1.0,\n ]);\n target.push(3);\n }\n\n __flowersExtended = { data, target };\n return __flowersExtended;\n}\n\n/**\n * Load the synthetic Flowers Extended classification dataset.\n *\n * 180 samples, 6 features, 4 species.\n * Deterministic — always returns the same data.\n *\n * @returns A {@link Dataset} with `data` shape `[180, 6]` and `target` shape `[180]` (int32).\n */\nexport function loadFlowersExtended(): Dataset {\n const { data, target } = getFlowersExtendedData();\n return {\n data: tensor(data),\n target: tensor(target, { dtype: \"int32\" }),\n featureNames: [\n \"sepal length (cm)\",\n \"sepal width (cm)\",\n \"petal length (cm)\",\n \"petal width (cm)\",\n \"color intensity\",\n \"stem thickness (mm)\",\n ],\n targetNames: [\"setosa\", \"versicolor\", \"virginica\", \"chrysantha\"],\n description: `${SYNTHETIC_NOTE} 180 samples, 6 features, 4 species.`,\n };\n}\n\n// ─────────────────────────────────────────────────────────────────────────────\n// 7. Leaf Shapes\n// ─────────────────────────────────────────────────────────────────────────────\n\nlet __leafShapes: { data: number[][]; target: number[] } | undefined;\n\nfunction getLeafShapesData() {\n if (__leafShapes !== undefined) return __leafShapes;\n const rng = createRng(3002);\n const data: number[][] = [];\n const target: number[] = [];\n\n // Class 0: maple\n for (let i = 0; i < 30; i++) {\n data.push([\n 15 + rng() * 15,\n 25 + rng() * 20,\n 0.8 + rng() * 0.4,\n 0.3 + rng() * 0.3,\n 0.3 + rng() * 0.2,\n 0.5 + rng() * 0.3,\n 0.7 + rng() * 0.3,\n 0.6 + rng() * 0.2,\n ]);\n target.push(0);\n }\n // Class 1: oak\n for (let i = 0; i < 30; i++) {\n data.push([\n 20 + rng() * 20,\n 30 + rng() * 20,\n 1.0 + rng() * 0.5,\n 0.2 + rng() * 0.3,\n 0.4 + rng() * 0.2,\n 0.3 + rng() * 0.3,\n 0.8 + rng() * 0.4,\n 0.7 + rng() * 0.2,\n ]);\n target.push(1);\n }\n // Class 2: birch\n for (let i = 0; i < 30; i++) {\n data.push([\n 8 + rng() * 10,\n 15 + rng() * 15,\n 1.2 + rng() * 0.6,\n 0.1 + rng() * 0.2,\n 0.5 + rng() * 0.2,\n 0.1 + rng() * 0.2,\n 1.0 + rng() * 0.5,\n 0.8 + rng() * 0.15,\n ]);\n target.push(2);\n }\n // Class 3: willow\n for (let i = 0; i < 30; i++) {\n data.push([\n 5 + rng() * 7,\n 20 + rng() * 15,\n 3.0 + rng() * 2.0,\n 0.05 + rng() * 0.15,\n 0.2 + rng() * 0.2,\n 0.05 + rng() * 0.1,\n 2.0 + rng() * 1.5,\n 0.85 + rng() * 0.13,\n ]);\n target.push(3);\n }\n // Class 4: ginkgo\n for (let i = 0; i < 30; i++) {\n data.push([\n 10 + rng() * 12,\n 18 + rng() * 14,\n 0.9 + rng() * 0.4,\n 0.15 + rng() * 0.2,\n 0.5 + rng() * 0.2,\n 0.15 + rng() * 0.2,\n 0.8 + rng() * 0.3,\n 0.75 + rng() * 0.15,\n ]);\n target.push(4);\n }\n\n __leafShapes = { data, target };\n return __leafShapes;\n}\n\n/**\n * Load the synthetic Leaf Shapes classification dataset.\n *\n * 150 samples, 8 geometric features, 5 plant species.\n * Deterministic — always returns the same data.\n *\n * @returns A {@link Dataset} with `data` shape `[150, 8]` and `target` shape `[150]` (int32).\n */\nexport function loadLeafShapes(): Dataset {\n const { data, target } = getLeafShapesData();\n return {\n data: tensor(data),\n target: tensor(target, { dtype: \"int32\" }),\n featureNames: [\n \"area (cm²)\",\n \"perimeter (cm)\",\n \"aspect ratio\",\n \"curvature\",\n \"compactness\",\n \"lobedness\",\n \"elongation\",\n \"solidity\",\n ],\n targetNames: [\"maple\", \"oak\", \"birch\", \"willow\", \"ginkgo\"],\n description: `${SYNTHETIC_NOTE} 150 samples, 8 geometric features, 5 plant species.`,\n };\n}\n\n// ─────────────────────────────────────────────────────────────────────────────\n// 8. Fruit Quality\n// ─────────────────────────────────────────────────────────────────────────────\n\nlet __fruitQuality: { data: number[][]; target: number[] } | undefined;\n\nfunction getFruitQualityData() {\n if (__fruitQuality !== undefined) return __fruitQuality;\n const rng = createRng(3003);\n const data: number[][] = [];\n const target: number[] = [];\n\n // Class 0: apple\n for (let i = 0; i < 50; i++) {\n data.push([150 + rng() * 70, 11 + rng() * 3, 3.2 + rng() * 0.6, 6 + rng() * 3, 5 + rng() * 3]);\n target.push(0);\n }\n // Class 1: orange\n for (let i = 0; i < 50; i++) {\n data.push([130 + rng() * 70, 9 + rng() * 3, 3.0 + rng() * 0.5, 3 + rng() * 3, 6 + rng() * 3]);\n target.push(1);\n }\n // Class 2: banana\n for (let i = 0; i < 50; i++) {\n data.push([100 + rng() * 50, 14 + rng() * 6, 4.5 + rng() * 1.0, 1 + rng() * 3, 4 + rng() * 3]);\n target.push(2);\n }\n\n __fruitQuality = { data, target };\n return __fruitQuality;\n}\n\n/**\n * Load the synthetic Fruit Quality classification dataset.\n *\n * 150 samples, 5 features, 3 fruit classes.\n * Deterministic — always returns the same data.\n *\n * @returns A {@link Dataset} with `data` shape `[150, 5]` and `target` shape `[150]` (int32).\n */\nexport function loadFruitQuality(): Dataset {\n const { data, target } = getFruitQualityData();\n return {\n data: tensor(data),\n target: tensor(target, { dtype: \"int32\" }),\n featureNames: [\n \"weight (g)\",\n \"sugar content (Brix)\",\n \"acidity (pH)\",\n \"firmness (N)\",\n \"color score\",\n ],\n targetNames: [\"apple\", \"orange\", \"banana\"],\n description: `${SYNTHETIC_NOTE} 150 samples, 5 features, 3 fruit classes.`,\n };\n}\n\n// ─────────────────────────────────────────────────────────────────────────────\n// 9. Seed Morphology\n// ─────────────────────────────────────────────────────────────────────────────\n\nlet __seedMorphology: { data: number[][]; target: number[] } | undefined;\n\nfunction getSeedMorphologyData() {\n if (__seedMorphology !== undefined) return __seedMorphology;\n const rng = createRng(3005);\n const data: number[][] = [];\n const target: number[] = [];\n\n // Class 0: wheat\n for (let i = 0; i < 50; i++) {\n data.push([5.5 + rng() * 2.0, 2.8 + rng() * 1.0, 0.75 + rng() * 0.17, 1.3 + rng() * 0.2]);\n target.push(0);\n }\n // Class 1: rice\n for (let i = 0; i < 50; i++) {\n data.push([6.0 + rng() * 3.0, 1.8 + rng() * 0.7, 0.3 + rng() * 0.2, 1.1 + rng() * 0.2]);\n target.push(1);\n }\n // Class 2: sunflower\n for (let i = 0; i < 50; i++) {\n data.push([8.0 + rng() * 5.0, 4.0 + rng() * 3.0, 0.55 + rng() * 0.2, 0.9 + rng() * 0.2]);\n target.push(2);\n }\n\n __seedMorphology = { data, target };\n return __seedMorphology;\n}\n\n/**\n * Load the synthetic Seed Morphology classification dataset.\n *\n * 150 samples, 4 features, 3 seed types.\n * Deterministic — always returns the same data.\n *\n * @returns A {@link Dataset} with `data` shape `[150, 4]` and `target` shape `[150]` (int32).\n */\nexport function loadSeedMorphology(): Dataset {\n const { data, target } = getSeedMorphologyData();\n return {\n data: tensor(data),\n target: tensor(target, { dtype: \"int32\" }),\n featureNames: [\"length (mm)\", \"width (mm)\", \"roundness\", \"density (g/cm³)\"],\n targetNames: [\"wheat\", \"rice\", \"sunflower\"],\n description: `${SYNTHETIC_NOTE} 150 samples, 4 features, 3 seed types.`,\n };\n}\n\n// ─────────────────────────────────────────────────────────────────────────────\n// 10. Moons-Multi\n// ─────────────────────────────────────────────────────────────────────────────\n\nlet __moonsMulti: { data: number[][]; target: number[] } | undefined;\n\nfunction getMoonsMultiData() {\n if (__moonsMulti !== undefined) return __moonsMulti;\n const rng = createRng(3006);\n const data: number[][] = [];\n const target: number[] = [];\n\n for (let c = 0; c < 3; c++) {\n const rotation = (c * 2 * Math.PI) / 3;\n const cosR = Math.cos(rotation);\n const sinR = Math.sin(rotation);\n for (let j = 0; j < 50; j++) {\n const t = Math.PI * (j / 50);\n const baseX = Math.cos(t);\n const baseY = Math.sin(t);\n const x = baseX * cosR - baseY * sinR;\n const y = baseX * sinR + baseY * cosR;\n data.push([x + normal01(rng) * 0.08, y + normal01(rng) * 0.08]);\n target.push(c);\n }\n }\n\n __moonsMulti = { data, target };\n return __moonsMulti;\n}\n\n/**\n * Load the synthetic Moons-Multi classification dataset.\n *\n * 150 samples, 2D, 3 interleaving rotated moon classes.\n * Deterministic — always returns the same data.\n *\n * @returns A {@link Dataset} with `data` shape `[150, 2]` and `target` shape `[150]` (int32).\n */\nexport function loadMoonsMulti(): Dataset {\n const { data, target } = getMoonsMultiData();\n return {\n data: tensor(data),\n target: tensor(target, { dtype: \"int32\" }),\n featureNames: [\"x\", \"y\"],\n targetNames: [\"moon_0\", \"moon_1\", \"moon_2\"],\n description: `${SYNTHETIC_NOTE} 150 samples, 2D, 3 interleaving moon classes.`,\n };\n}\n\n// ─────────────────────────────────────────────────────────────────────────────\n// 11. Concentric Rings\n// ─────────────────────────────────────────────────────────────────────────────\n\nlet __concentricRings: { data: number[][]; target: number[] } | undefined;\n\nfunction getConcentricRingsData() {\n if (__concentricRings !== undefined) return __concentricRings;\n const rng = createRng(3007);\n const data: number[][] = [];\n const target: number[] = [];\n\n for (let c = 0; c < 3; c++) {\n const radius = 1.0 + c * 1.5;\n for (let j = 0; j < 50; j++) {\n const angle = 2 * Math.PI * (j / 50);\n data.push([\n radius * Math.cos(angle) + normal01(rng) * 0.15,\n radius * Math.sin(angle) + normal01(rng) * 0.15,\n ]);\n target.push(c);\n }\n }\n\n __concentricRings = { data, target };\n return __concentricRings;\n}\n\n/**\n * Load the synthetic Concentric Rings classification dataset.\n *\n * 150 samples, 2D, 3 concentric circle classes.\n * Deterministic — always returns the same data.\n *\n * @returns A {@link Dataset} with `data` shape `[150, 2]` and `target` shape `[150]` (int32).\n */\nexport function loadConcentricRings(): Dataset {\n const { data, target } = getConcentricRingsData();\n return {\n data: tensor(data),\n target: tensor(target, { dtype: \"int32\" }),\n featureNames: [\"x\", \"y\"],\n targetNames: [\"inner\", \"middle\", \"outer\"],\n description: `${SYNTHETIC_NOTE} 150 samples, 2D, 3 concentric circle classes.`,\n };\n}\n\n// ─────────────────────────────────────────────────────────────────────────────\n// 12. Spiral Arms\n// ─────────────────────────────────────────────────────────────────────────────\n\nlet __spiralArms: { data: number[][]; target: number[] } | undefined;\n\nfunction getSpiralArmsData() {\n if (__spiralArms !== undefined) return __spiralArms;\n const rng = createRng(3008);\n const data: number[][] = [];\n const target: number[] = [];\n\n for (let c = 0; c < 3; c++) {\n const offset = (c * 2 * Math.PI) / 3;\n for (let j = 0; j < 50; j++) {\n const t = (j / 50) * 3 * Math.PI;\n const r = 0.5 + t * 0.15;\n const angle = t + offset;\n data.push([\n r * Math.cos(angle) + normal01(rng) * 0.1,\n r * Math.sin(angle) + normal01(rng) * 0.1,\n ]);\n target.push(c);\n }\n }\n\n __spiralArms = { data, target };\n return __spiralArms;\n}\n\n/**\n * Load the synthetic Spiral Arms classification dataset.\n *\n * 150 samples, 2D, 3 spiral classes.\n * Deterministic — always returns the same data.\n *\n * @returns A {@link Dataset} with `data` shape `[150, 2]` and `target` shape `[150]` (int32).\n */\nexport function loadSpiralArms(): Dataset {\n const { data, target } = getSpiralArmsData();\n return {\n data: tensor(data),\n target: tensor(target, { dtype: \"int32\" }),\n featureNames: [\"x\", \"y\"],\n targetNames: [\"arm_0\", \"arm_1\", \"arm_2\"],\n description: `${SYNTHETIC_NOTE} 150 samples, 2D, 3 spiral classes.`,\n };\n}\n\n// ─────────────────────────────────────────────────────────────────────────────\n// 13. Gaussian Islands\n// ─────────────────────────────────────────────────────────────────────────────\n\nlet __gaussianIslands: { data: number[][]; target: number[] } | undefined;\n\nfunction getGaussianIslandsData() {\n if (__gaussianIslands !== undefined) return __gaussianIslands;\n const rng = createRng(3009);\n const data: number[][] = [];\n const target: number[] = [];\n\n const centers: [number, number, number][] = [\n [3, 3, 3],\n [-3, 3, -3],\n [-3, -3, 3],\n [3, -3, -3],\n ];\n\n let c = 0;\n for (const center of centers) {\n for (let i = 0; i < 50; i++) {\n data.push([\n center[0] + normal01(rng) * 0.8,\n center[1] + normal01(rng) * 0.8,\n center[2] + normal01(rng) * 0.8,\n ]);\n target.push(c);\n }\n c++;\n }\n\n __gaussianIslands = { data, target };\n return __gaussianIslands;\n}\n\n/**\n * Load the synthetic Gaussian Islands classification dataset.\n *\n * 200 samples, 3D, 4 separated Gaussian clusters.\n * Deterministic — always returns the same data.\n *\n * @returns A {@link Dataset} with `data` shape `[200, 3]` and `target` shape `[200]` (int32).\n */\nexport function loadGaussianIslands(): Dataset {\n const { data, target } = getGaussianIslandsData();\n return {\n data: tensor(data),\n target: tensor(target, { dtype: \"int32\" }),\n featureNames: [\"x\", \"y\", \"z\"],\n targetNames: [\"island_0\", \"island_1\", \"island_2\", \"island_3\"],\n description: `${SYNTHETIC_NOTE} 200 samples, 3D, 4 separated Gaussian clusters.`,\n };\n}\n\n// ─────────────────────────────────────────────────────────────────────────────\n// 14. Plant Growth\n// ─────────────────────────────────────────────────────────────────────────────\n\nlet __plantGrowth: { data: number[][]; target: number[] } | undefined;\n\nfunction getPlantGrowthData() {\n if (__plantGrowth !== undefined) return __plantGrowth;\n const rng = createRng(3010);\n const data: number[][] = [];\n const target: number[] = [];\n\n for (let i = 0; i < 200; i++) {\n const sunlight = 4 + rng() * 8;\n const water = 100 + rng() * 400;\n const soilQuality = rng() * 10;\n data.push([sunlight, water, soilQuality]);\n\n const height = 5 + 2.5 * sunlight + 0.02 * water + 3 * soilQuality + (rng() - 0.5) * 10;\n target.push(height);\n }\n\n __plantGrowth = { data, target };\n return __plantGrowth;\n}\n\n/**\n * Load the synthetic Plant Growth regression dataset.\n *\n * 200 samples, 3 features (sunlight, water, soil quality), target: height (cm).\n * Deterministic — always returns the same data.\n *\n * @returns A {@link Dataset} with `data` shape `[200, 3]` and `target` shape `[200]`.\n */\nexport function loadPlantGrowth(): Dataset {\n const { data, target } = getPlantGrowthData();\n return {\n data: tensor(data),\n target: tensor(target),\n featureNames: [\"sunlight (hours/day)\", \"water (mL/day)\", \"soil quality (0-10)\"],\n description: `${SYNTHETIC_NOTE} 200 samples, 3 features, target: height (cm) after 30 days.`,\n };\n}\n\n// ─────────────────────────────────────────────────────────────────────────────\n// 15. Housing-Mini\n// ─────────────────────────────────────────────────────────────────────────────\n\nlet __housingMini: { data: number[][]; target: number[] } | undefined;\n\nfunction getHousingMiniData() {\n if (__housingMini !== undefined) return __housingMini;\n const rng = createRng(3011);\n const data: number[][] = [];\n const target: number[] = [];\n\n for (let i = 0; i < 200; i++) {\n const size = 30 + rng() * 170;\n const rooms = 1 + Math.floor(rng() * 6);\n const age = rng() * 50;\n const distance = 0.5 + rng() * 29.5;\n data.push([size, rooms, age, distance]);\n\n const price = 80 + 2.0 * size + 15 * rooms - 0.5 * age - 1.5 * distance + (rng() - 0.5) * 30;\n target.push(price);\n }\n\n __housingMini = { data, target };\n return __housingMini;\n}\n\n/**\n * Load the synthetic Housing-Mini regression dataset.\n *\n * 200 samples, 4 features (size, rooms, age, distance), target: price (thousands).\n * Deterministic — always returns the same data.\n *\n * @returns A {@link Dataset} with `data` shape `[200, 4]` and `target` shape `[200]`.\n */\nexport function loadHousingMini(): Dataset {\n const { data, target } = getHousingMiniData();\n return {\n data: tensor(data),\n target: tensor(target),\n featureNames: [\"size (sqm)\", \"rooms\", \"age (years)\", \"distance to center (km)\"],\n description: `${SYNTHETIC_NOTE} 200 samples, 4 features, target: price (thousands).`,\n };\n}\n\n// ─────────────────────────────────────────────────────────────────────────────\n// 16. Energy Efficiency\n// ─────────────────────────────────────────────────────────────────────────────\n\nlet __energyEfficiency: { data: number[][]; target: number[] } | undefined;\n\nfunction getEnergyEfficiencyData() {\n if (__energyEfficiency !== undefined) return __energyEfficiency;\n const rng = createRng(3012);\n const data: number[][] = [];\n const target: number[] = [];\n\n for (let i = 0; i < 200; i++) {\n const insulation = 1 + rng() * 7;\n const windowArea = 5 + rng() * 25;\n const orientation = rng() * 360;\n data.push([insulation, windowArea, orientation]);\n\n const orientationRad = orientation * (Math.PI / 180);\n const energy =\n 250 - 20 * insulation + 4 * windowArea + 15 * Math.cos(orientationRad) + (rng() - 0.5) * 20;\n target.push(energy);\n }\n\n __energyEfficiency = { data, target };\n return __energyEfficiency;\n}\n\n/**\n * Load the synthetic Energy Efficiency regression dataset.\n *\n * 200 samples, 3 features (insulation, window area, orientation), target: energy usage (kWh).\n * Deterministic — always returns the same data.\n *\n * @returns A {@link Dataset} with `data` shape `[200, 3]` and `target` shape `[200]`.\n */\nexport function loadEnergyEfficiency(): Dataset {\n const { data, target } = getEnergyEfficiencyData();\n return {\n data: tensor(data),\n target: tensor(target),\n featureNames: [\"insulation (R-value)\", \"window area (sqm)\", \"orientation (degrees)\"],\n description: `${SYNTHETIC_NOTE} 200 samples, 3 features, target: energy usage (kWh).`,\n };\n}\n\n// ─────────────────────────────────────────────────────────────────────────────\n// 17. Crop Yield\n// ─────────────────────────────────────────────────────────────────────────────\n\nlet __cropYield: { data: number[][]; target: number[] } | undefined;\n\nfunction getCropYieldData() {\n if (__cropYield !== undefined) return __cropYield;\n const rng = createRng(3013);\n const data: number[][] = [];\n const target: number[] = [];\n\n for (let i = 0; i < 200; i++) {\n const rainfall = 200 + rng() * 600;\n const fertilizer = 50 + rng() * 250;\n const temperature = 15 + rng() * 20;\n data.push([rainfall, fertilizer, temperature]);\n\n const tempEffect = -0.015 * (temperature - 25) * (temperature - 25);\n const yieldVal = 2 + 0.005 * rainfall + 0.008 * fertilizer + tempEffect + (rng() - 0.5) * 1.0;\n target.push(yieldVal);\n }\n\n __cropYield = { data, target };\n return __cropYield;\n}\n\n/**\n * Load the synthetic Crop Yield regression dataset.\n *\n * 200 samples, 3 features (rainfall, fertilizer, temperature), target: yield (tons/ha).\n * Deterministic — always returns the same data.\n *\n * @returns A {@link Dataset} with `data` shape `[200, 3]` and `target` shape `[200]`.\n */\nexport function loadCropYield(): Dataset {\n const { data, target } = getCropYieldData();\n return {\n data: tensor(data),\n target: tensor(target),\n featureNames: [\"rainfall (mm)\", \"fertilizer (kg/ha)\", \"temperature (°C)\"],\n description: `${SYNTHETIC_NOTE} 200 samples, 3 features, target: yield (tons/ha).`,\n };\n}\n\n// ─────────────────────────────────────────────────────────────────────────────\n// 18. Customer Segments\n// ─────────────────────────────────────────────────────────────────────────────\n\nlet __customerSegments: { data: number[][]; target: number[] } | undefined;\n\nfunction getCustomerSegmentsData() {\n if (__customerSegments !== undefined) return __customerSegments;\n const rng = createRng(3014);\n const data: number[][] = [];\n const target: number[] = [];\n\n // Cluster 0\n for (let i = 0; i < 50; i++) {\n data.push([25 + normal01(rng) * 3, 30 + normal01(rng) * 5, 70 + normal01(rng) * 8]);\n target.push(0);\n }\n // Cluster 1\n for (let i = 0; i < 50; i++) {\n data.push([30 + normal01(rng) * 4, 80 + normal01(rng) * 8, 85 + normal01(rng) * 6]);\n target.push(1);\n }\n // Cluster 2\n for (let i = 0; i < 50; i++) {\n data.push([55 + normal01(rng) * 5, 50 + normal01(rng) * 8, 40 + normal01(rng) * 8]);\n target.push(2);\n }\n // Cluster 3\n for (let i = 0; i < 50; i++) {\n data.push([60 + normal01(rng) * 4, 90 + normal01(rng) * 7, 30 + normal01(rng) * 7]);\n target.push(3);\n }\n\n __customerSegments = { data, target };\n return __customerSegments;\n}\n\n/**\n * Load the synthetic Customer Segments clustering dataset.\n *\n * 200 samples, 3 features (age, income, spending score), 4 natural clusters.\n * Deterministic — always returns the same data.\n *\n * @returns A {@link Dataset} with `data` shape `[200, 3]` and `target` shape `[200]` (int32).\n */\nexport function loadCustomerSegments(): Dataset {\n const { data, target } = getCustomerSegmentsData();\n return {\n data: tensor(data),\n target: tensor(target, { dtype: \"int32\" }),\n featureNames: [\"age\", \"income (thousands)\", \"spending score (0-100)\"],\n targetNames: [\"young_budget\", \"young_premium\", \"mature_moderate\", \"mature_saver\"],\n description: `${SYNTHETIC_NOTE} 200 samples, 3 features, 4 natural clusters.`,\n };\n}\n\n// ─────────────────────────────────────────────────────────────────────────────\n// 19. Sensor States\n// ─────────────────────────────────────────────────────────────────────────────\n\nlet __sensorStates: { data: number[][]; target: number[] } | undefined;\n\nfunction getSensorStatesData() {\n if (__sensorStates !== undefined) return __sensorStates;\n const rng = createRng(3015);\n const data: number[][] = [];\n const target: number[] = [];\n\n // Mode 0: normal\n for (let i = 0; i < 60; i++) {\n data.push([\n 50 + rng() * 10,\n 1013 + rng() * 5,\n 60 + rng() * 10,\n 220 + rng() * 5,\n 3 + rng() * 0.5,\n 0.5 + rng() * 0.3,\n ]);\n target.push(0);\n }\n // Mode 1: heating\n for (let i = 0; i < 60; i++) {\n data.push([\n 80 + rng() * 15,\n 1010 + rng() * 8,\n 40 + rng() * 15,\n 218 + rng() * 8,\n 5 + rng() * 1,\n 0.8 + rng() * 0.4,\n ]);\n target.push(1);\n }\n // Mode 2: fault\n for (let i = 0; i < 60; i++) {\n data.push([\n 30 + rng() * 40,\n 1000 + rng() * 20,\n 20 + rng() * 60,\n 200 + rng() * 30,\n 1 + rng() * 8,\n 0.2 + rng() * 1.5,\n ]);\n target.push(2);\n }\n\n __sensorStates = { data, target };\n return __sensorStates;\n}\n\n/**\n * Load the synthetic Sensor States classification dataset.\n *\n * 180 samples, 6 sensor readings, 3 hidden operating modes.\n * Deterministic — always returns the same data.\n *\n * @returns A {@link Dataset} with `data` shape `[180, 6]` and `target` shape `[180]` (int32).\n */\nexport function loadSensorStates(): Dataset {\n const { data, target } = getSensorStatesData();\n return {\n data: tensor(data),\n target: tensor(target, { dtype: \"int32\" }),\n featureNames: [\n \"temperature (°C)\",\n \"pressure (hPa)\",\n \"humidity (%)\",\n \"voltage (V)\",\n \"vibration (mm/s)\",\n \"current (A)\",\n ],\n targetNames: [\"normal\", \"heating\", \"fault\"],\n description: `${SYNTHETIC_NOTE} 180 samples, 6 sensor readings, 3 hidden operating modes.`,\n };\n}\n\n// ─────────────────────────────────────────────────────────────────────────────\n// 20. Student Performance\n// ─────────────────────────────────────────────────────────────────────────────\n\nlet __studentPerformance: { data: number[][]; target: number[] } | undefined;\n\nfunction getStudentPerformanceData() {\n if (__studentPerformance !== undefined) return __studentPerformance;\n const rng = createRng(3016);\n const data: number[][] = [];\n const target: number[] = [];\n\n // Class 0: fail\n for (let i = 0; i < 50; i++) {\n data.push([Math.floor(rng() * 6), 8 + Math.floor(rng() * 8), 20 + Math.floor(rng() * 30)]);\n target.push(0);\n }\n // Class 1: pass\n for (let i = 0; i < 50; i++) {\n data.push([4 + Math.floor(rng() * 8), 3 + Math.floor(rng() * 6), 45 + Math.floor(rng() * 30)]);\n target.push(1);\n }\n // Class 2: excellent\n for (let i = 0; i < 50; i++) {\n data.push([10 + Math.floor(rng() * 11), Math.floor(rng() * 4), 70 + Math.floor(rng() * 31)]);\n target.push(2);\n }\n\n __studentPerformance = { data, target };\n return __studentPerformance;\n}\n\n/**\n * Load the synthetic Student Performance classification dataset.\n *\n * 150 samples, 3 integer features, 3 outcome classes.\n * Deterministic — always returns the same data.\n *\n * @returns A {@link Dataset} with `data` shape `[150, 3]` and `target` shape `[150]` (int32).\n */\nexport function loadStudentPerformance(): Dataset {\n const { data, target } = getStudentPerformanceData();\n return {\n data: tensor(data),\n target: tensor(target, { dtype: \"int32\" }),\n featureNames: [\"study hours (per week)\", \"absences\", \"quiz score (0-100)\"],\n targetNames: [\"fail\", \"pass\", \"excellent\"],\n description: `${SYNTHETIC_NOTE} 150 samples, 3 integer features, 3 outcome classes.`,\n };\n}\n\n// ─────────────────────────────────────────────────────────────────────────────\n// 21. Traffic Conditions\n// ─────────────────────────────────────────────────────────────────────────────\n\nlet __trafficConditions: { data: number[][]; target: number[] } | undefined;\n\nfunction getTrafficConditionsData() {\n if (__trafficConditions !== undefined) return __trafficConditions;\n const rng = createRng(3017);\n const data: number[][] = [];\n const target: number[] = [];\n\n // Class 0: light\n for (let i = 0; i < 50; i++) {\n data.push([Math.floor(rng() * 10), 50 + Math.floor(rng() * 40), 5 + Math.floor(rng() * 20)]);\n target.push(0);\n }\n // Class 1: moderate\n for (let i = 0; i < 50; i++) {\n data.push([\n 8 + Math.floor(rng() * 8),\n 25 + Math.floor(rng() * 30),\n 20 + Math.floor(rng() * 30),\n ]);\n target.push(1);\n }\n // Class 2: heavy\n for (let i = 0; i < 50; i++) {\n data.push([\n 15 + Math.floor(rng() * 8),\n 5 + Math.floor(rng() * 25),\n 45 + Math.floor(rng() * 45),\n ]);\n target.push(2);\n }\n\n __trafficConditions = { data, target };\n return __trafficConditions;\n}\n\n/**\n * Load the synthetic Traffic Conditions classification dataset.\n *\n * 150 samples, 3 features, 3 traffic level classes.\n * Deterministic — always returns the same data.\n *\n * @returns A {@link Dataset} with `data` shape `[150, 3]` and `target` shape `[150]` (int32).\n */\nexport function loadTrafficConditions(): Dataset {\n const { data, target } = getTrafficConditionsData();\n return {\n data: tensor(data),\n target: tensor(target, { dtype: \"int32\" }),\n featureNames: [\"time of day (hour)\", \"speed (km/h)\", \"density (vehicles/km)\"],\n targetNames: [\"light\", \"moderate\", \"heavy\"],\n description: `${SYNTHETIC_NOTE} 150 samples, 3 features, 3 traffic level classes.`,\n };\n}\n\n// ─────────────────────────────────────────────────────────────────────────────\n// 22. Fitness Scores\n// ─────────────────────────────────────────────────────────────────────────────\n\nlet __fitnessScores: { data: number[][]; target: number[][] } | undefined;\n\nfunction getFitnessScoresData() {\n if (__fitnessScores !== undefined) return __fitnessScores;\n const rng = createRng(3018);\n const data: number[][] = [];\n const target: number[][] = [];\n\n for (let i = 0; i < 100; i++) {\n const duration = 20 + rng() * 70;\n const intensity = 1 + rng() * 9;\n const frequency = 1 + rng() * 6;\n data.push([duration, intensity, frequency]);\n target.push([\n 10 + 0.3 * duration + 5 * intensity + 3 * frequency + (rng() - 0.5) * 8,\n 15 + 0.5 * duration + 2 * intensity + 5 * frequency + (rng() - 0.5) * 8,\n 30 + 0.4 * duration + 1 * intensity + 2 * frequency + (rng() - 0.5) * 8,\n ]);\n }\n\n __fitnessScores = { data, target };\n return __fitnessScores;\n}\n\n/**\n * Load the synthetic Fitness Scores multi-output regression dataset.\n *\n * 100 samples, 3 exercise features, 3 fitness targets (strength, endurance, flexibility).\n * Deterministic — always returns the same data.\n *\n * @returns A {@link Dataset} with `data` shape `[100, 3]` and `target` shape `[100, 3]`.\n */\nexport function loadFitnessScores(): Dataset {\n const { data, target } = getFitnessScoresData();\n return {\n data: tensor(data),\n target: tensor(target),\n featureNames: [\"exercise duration (min)\", \"intensity (1-10)\", \"frequency (times/week)\"],\n targetNames: [\"strength\", \"endurance\", \"flexibility\"],\n description: `${SYNTHETIC_NOTE} 100 samples, 3 exercise features, 3 fitness targets (multi-output).`,\n };\n}\n\n// ─────────────────────────────────────────────────────────────────────────────\n// 23. Weather Outcomes\n// ─────────────────────────────────────────────────────────────────────────────\n\nlet __weatherOutcomes: { data: number[][]; target: number[][] } | undefined;\n\nfunction getWeatherOutcomesData() {\n if (__weatherOutcomes !== undefined) return __weatherOutcomes;\n const rng = createRng(3019);\n const data: number[][] = [];\n const target: number[][] = [];\n\n for (let i = 0; i < 150; i++) {\n const humidity = 20 + rng() * 80;\n const pressure = 990 + rng() * 50;\n const temperature = -5 + rng() * 40;\n data.push([humidity, pressure, temperature]);\n\n const rawRain =\n 0.01 * humidity - 0.003 * (pressure - 1000) + 0.005 * temperature - 0.3 + (rng() - 0.5) * 0.1;\n const rainProb = Math.max(0, Math.min(1, rawRain));\n const windSpeed = 8 + 0.5 * Math.abs(pressure - 1013) + 0.3 * temperature + (rng() - 0.5) * 6;\n\n target.push([rainProb, Math.max(0, windSpeed)]);\n }\n\n __weatherOutcomes = { data, target };\n return __weatherOutcomes;\n}\n\n/**\n * Load the synthetic Weather Outcomes multi-output regression dataset.\n *\n * 150 samples, 3 features, 2 targets (rain probability, wind speed).\n * Deterministic — always returns the same data.\n *\n * @returns A {@link Dataset} with `data` shape `[150, 3]` and `target` shape `[150, 2]`.\n */\nexport function loadWeatherOutcomes(): Dataset {\n const { data, target } = getWeatherOutcomesData();\n return {\n data: tensor(data),\n target: tensor(target),\n featureNames: [\"humidity (%)\", \"pressure (hPa)\", \"temperature (°C)\"],\n targetNames: [\"rain probability\", \"wind speed (km/h)\"],\n description: `${SYNTHETIC_NOTE} 150 samples, 3 features, 2 targets (multi-output regression).`,\n };\n}\n\n// ─────────────────────────────────────────────────────────────────────────────\n// 24. Perfectly Separable\n// ─────────────────────────────────────────────────────────────────────────────\n\nlet __perfectlySeparable: { data: number[][]; target: number[] } | undefined;\n\nfunction getPerfectlySeparableData() {\n if (__perfectlySeparable !== undefined) return __perfectlySeparable;\n const rng = createRng(3020);\n const data: number[][] = [];\n const target: number[] = [];\n\n // Class 0\n for (let i = 0; i < 50; i++) {\n data.push([1 + rng() * 0.8, 0.5 + rng() * 0.6, -1 + rng() * 0.7, 2 + rng() * 0.5]);\n target.push(0);\n }\n // Class 1\n for (let i = 0; i < 50; i++) {\n data.push([4 + rng() * 0.8, 3.5 + rng() * 0.6, 2 + rng() * 0.7, 5 + rng() * 0.5]);\n target.push(1);\n }\n\n __perfectlySeparable = { data, target };\n return __perfectlySeparable;\n}\n\n/**\n * Load the synthetic Perfectly Separable classification dataset.\n *\n * 100 samples, 4 features, 2 linearly separable classes.\n * Deterministic — always returns the same data.\n *\n * @returns A {@link Dataset} with `data` shape `[100, 4]` and `target` shape `[100]` (int32).\n */\nexport function loadPerfectlySeparable(): Dataset {\n const { data, target } = getPerfectlySeparableData();\n return {\n data: tensor(data),\n target: tensor(target, { dtype: \"int32\" }),\n featureNames: [\"feature_0\", \"feature_1\", \"feature_2\", \"feature_3\"],\n targetNames: [\"class_0\", \"class_1\"],\n description: `${SYNTHETIC_NOTE} 100 samples, 4 features, 2 linearly separable classes.`,\n };\n}\n"]}
|