SwiftRegressor

一个灵活且易于使用的线性回归工具。

可以作为开源 Swift 库使用,以便集成到其他应用中。

SwiftRegressorOpenAlloc 开源 Swift 软件工具家族的一部分。

回归器

let points: [BaseRegressor<Double>.Point] = [
    Point(x: 0, y: 0),
    Point(x: 1, y: 1),
    Point(x: 2, y: 4),
    Point(x: 3, y: 9),
    Point(x: 4, y: 16),
    Point(x: 5, y: 25),
    Point(x: 6, y: 36),
]

let lr = LinearRegressor(points: points)!

print(String(format: "Intercept: %.1f", lr.intercept))
=> "Intercept: -5.0"

print(String(format: "Slope: %.1f", lr.slope))
=> "Slope: 6.0"

print(String(format: "y @ x=4.5: %.1f", lr.yRegression(x: 4.5)))
=> "y @ x=4.5: 22.0"

print(String(format: "x @ y=30: %.1f", lr.xEstimate(y: 30)))
=> "x @ y=30: 5.8"

print(String(format: "r^2: %.3f", lr.rSquared))
=> "r^2: 0.923"

类型

Point 类型在 BaseRegressor 中声明,其中 T 是您的 BinaryFloatingPoint 数据类型

public struct Point: Equatable {
    public let x, y: T
    public init(x: T, y: T) {
        self.x = x
        self.y = y
    }
}

通常,声明您自己的派生类型会很方便

typealias MyPoint = BaseRegressor<Float>.Point

初始化

基础回归器和线性回归器共享相同的初始化方式

如果提供了无效参数(例如,未提供任何点),初始化将失败并返回 nil

初始化值也可以作为属性使用

实例属性和方法

计算属性是惰性的,这意味着它们仅在首次需要时才会被计算。

基础回归器

基础回归器提供了不同类型回归通用的功能。

线性回归器

线性回归器继承了基础回归器的所有属性和方法。

另请参阅

此库是 OpenAlloc 项目 的成员。

许可证

版权所有 2021, 2022 OpenAlloc LLC

根据 Apache License, Version 2.0(“许可证”)获得许可;除非遵守许可证,否则您不得使用此文件。您可以在以下网址获取许可证副本:

https://apache.ac.cn/licenses/LICENSE-2.0

除非适用法律要求或书面同意,否则根据“按原样”基础分发的软件,不附带任何形式的明示或暗示的保证或条件。请参阅许可证,了解有关特定语言的权限和限制的详细信息。

贡献

非常欢迎贡献其他回归器,例如多项式回归器!

也欢迎其他贡献。 鼓励您提交拉取请求以修复错误、改进文档或提供新功能。

拉取请求不必是生产就绪的功能或修复。它可以是拟议更改的草稿,或者只是一个测试,以表明预期的行为存在错误。 可以从那里开始讨论拉取请求。

贡献最终应具有足够的测试覆盖率。 请参阅当前实体的测试,以了解预期的覆盖率。