packages feed

dataframe-learn-2.0.0.0: dataframe-learn.cabal

cabal-version:      3.4
name:               dataframe-learn
version:            2.0.0.0
synopsis:           Interpretable, expression-returning machine learning for the dataframe ecosystem.
description:
    A small scikit-learn-style ML library where every model returns both an
    inspectable record and dataframe @Expr@ value(s): linear/ridge/lasso/
    elastic-net and logistic regression, linear and RFF-kernel SVMs, decision
    trees, gradient boosting and AdaBoost, PCA and Nyström kernel PCA, k-means,
    Gaussian mixtures, DBSCAN, and symbolic regression — plus cross-validation
    and grid search. Pure Haskell, built on @dataframe-operations@.

bug-reports:        https://github.com/mchav/dataframe/issues
license:            MIT
license-file:       LICENSE
author:             Michael Chavinda
maintainer:         mschavinda@gmail.com
copyright:          (c) 2024-2026 Michael Chavinda
category:           Data
tested-with:        GHC ==9.4.8 || ==9.6.7 || ==9.8.4 || ==9.10.3 || ==9.12.2
extra-doc-files:    README.md

common warnings
    ghc-options:
        -Wincomplete-patterns
        -Wincomplete-uni-patterns
        -Wunused-imports
        -Wunused-local-binds
        -Wunused-packages

-- Numeric kernels, linear solver, tree engine, and symbolic-regression
-- internals. Private: reachable only by this package's own components
-- (the public estimators below and the learn-internal test-suite).
library internal
    import:             warnings
    visibility:         private
    exposed-modules:
                        DataFrame.DecisionTree.Types
                        DataFrame.DecisionTree.CondVec
                        DataFrame.DecisionTree.Cart
                        DataFrame.DecisionTree.Numeric
                        DataFrame.DecisionTree.Prune
                        DataFrame.DecisionTree.Predict
                        DataFrame.DecisionTree.Categorical
                        DataFrame.DecisionTree.Pool
                        DataFrame.DecisionTree.Linear
                        DataFrame.DecisionTree.Tao
                        DataFrame.DecisionTree.Fit
                        DataFrame.LinearSolver
                        DataFrame.LinearSolver.Loss
                        DataFrame.LinearAlgebra
                        DataFrame.LinearAlgebra.Solve
                        DataFrame.LinearAlgebra.Eigen
                        DataFrame.Random
                        DataFrame.Featurize.Internal
                        DataFrame.SymbolicRegression.Expr
                        DataFrame.SymbolicRegression.Simplify
                        DataFrame.SymbolicRegression.Optimize
                        DataFrame.SymbolicRegression.GP
    build-depends:      base >= 4 && < 5,
                        containers >= 0.6.7 && < 0.10,
                        parallel >= 3.3 && < 4,
                        random >= 1.2 && < 2,
                        dataframe-core:internal >= 2.0 && < 2.1,
                        dataframe-operations >= 2.0 && < 2.1,
                        text >= 2.1 && < 3,
                        vector >= 0.13 && < 0.15,
                        vector-algorithms >= 0.9 && < 0.11
    hs-source-dirs:     src-internal
    default-language:   Haskell2010

-- Curated estimator surface: fit/predict + configs + fitted records + the
-- DataFrame.Learn umbrella. Implementation sealed in the private sublib.
library
    import:             warnings
    exposed-modules:
                        DataFrame.Learn
                        DataFrame.Model
                        DataFrame.LinearModel
                        DataFrame.LinearModel.Regression
                        DataFrame.LinearModel.Logistic
                        DataFrame.SVM
                        DataFrame.SVM.RFF
                        DataFrame.DecisionTree
                        DataFrame.DecisionTree.Regression
                        DataFrame.DecisionTree.Model
                        DataFrame.PCA
                        DataFrame.PCA.Kernel
                        DataFrame.KMeans
                        DataFrame.Transform
                        DataFrame.Transform.Serialize
                        DataFrame.Boosting
                        DataFrame.Boosting.GBM
                        DataFrame.Boosting.AdaBoost
                        DataFrame.GMM
                        DataFrame.DBSCAN
                        DataFrame.Metrics
                        DataFrame.Metrics.Report
                        DataFrame.ModelSelection
                        DataFrame.SymbolicRegression
                        DataFrame.Synthesis
                        DataFrame.Segmented
    build-depends:      base >= 4 && < 5,
                        aeson >= 0.11.0.0 && < 3,
                        containers >= 0.6.7 && < 0.10,
                        parallel >= 3.3 && < 4,
                        random >= 1.2 && < 2,
                        dataframe-core >= 2.0 && < 2.1,
                        dataframe-core:internal >= 2.0 && < 2.1,
                        dataframe-operations >= 2.0 && < 2.1,
                        dataframe-operations:internal >= 2.0 && < 2.1,
                        dataframe-expr-serializer >= 1.1 && < 1.2,
                        dataframe-learn:internal,
                        text >= 2.1 && < 3,
                        vector >= 0.13 && < 0.15
    hs-source-dirs:     src
    default-language:   Haskell2010

-- Tests that exercise the private `internal` sublib directly (solver, tree
-- engine, symbolic-regression internals). They live here rather than in the
-- meta `dataframe` test-suite because that suite cannot reach a private sublib.
test-suite learn-internal
    import:             warnings
    type:               exitcode-stdio-1.0
    main-is:            Main.hs
    other-modules:      DataFrameApi
                        Cart
                        DecisionTree
                        TreePruning
                        Worklist
                        LinearSolver
                        Properties.Simplify
                        Learn.Numerics
                        Learn.Symbolic
                        Learn.EdgeCases
                        Learn.NumericalRigor
    -- Depends on the constituent packages directly, NOT the meta `dataframe`
    -- (which depends back on dataframe-learn, a package-level cycle).
    build-depends:      base >= 4 && < 5,
                        aeson >= 0.11.0.0 && < 3,
                        bytestring >= 0.11 && < 0.14,
                        containers >= 0.6.7 && < 0.10,
                        dataframe-core >= 2.0 && < 2.1,
                        dataframe-core:internal >= 2.0 && < 2.1,
                        dataframe-csv >= 2.0 && < 2.1,
                        dataframe-learn,
                        dataframe-learn:internal,
                        dataframe-operations >= 2.0 && < 2.1,
                        dataframe-operations:internal >= 2.0 && < 2.1,
                        HUnit >= 1.6 && < 1.8,
                        QuickCheck >= 2 && < 3,
                        random >= 1 && < 2,
                        text >= 2.1 && < 3,
                        vector >= 0.13 && < 0.15
    hs-source-dirs:     tests-internal
    default-language:   Haskell2010