一个灵活且易于使用的线性回归工具。
可以作为开源 Swift 库使用,以便集成到其他应用中。
SwiftRegressor 是 OpenAlloc 开源 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
基础回归器和线性回归器共享相同的初始化方式
init?(points: [BaseRegressor<T>.Point])
如果提供了无效参数(例如,未提供任何点),初始化将失败并返回 nil
。
初始化值也可以作为属性使用
let points: [BaseRegressor<T>.Point]
: 源数据集中的点计算属性是惰性的,这意味着它们仅在首次需要时才会被计算。
基础回归器提供了不同类型回归通用的功能。
var count: T
: 数据集中点的计数
var mean: BaseRegressor<T>.Point
: 沿两个轴的均值
var summed: BaseRegressor<T>.Point
: 沿两个轴的值的总和
func xEstimates(y: T) -> [T]
: 从 y 值估计实数 x 值解
func yRegression(x: T) -> T
: 从 x 值估计 y 值
var resultPoints: [BaseRegressor<T>.Point]
: 源数据集中每个 x 值的最终点
var resultValuesY: [T]
: 源数据集中每个 x 值的最终 y 值
线性回归器继承了基础回归器的所有属性和方法。
func xEstimate(y: T) -> T
: 从 y 值估计 x 值
var intercept: T
: 截距 (a)
var pearsonsCorrelation: T
: 皮尔逊相关系数 (r)
var rSquared: T
: 回归误差的度量(1.0 表示零误差)
var sampleStandardDeviation: BaseRegressor<T>.Point
: 沿两个轴计算的标准偏差
var slope: T
: 斜率 (b)
var ssRegression: T
: 回归平方和误差
var ssTotal: T
: 总平方和误差
var summedSquareError: BaseRegressor<T>.Point
: 沿两个轴的平方和误差
此库是 OpenAlloc 项目 的成员。
版权所有 2021, 2022 OpenAlloc LLC
根据 Apache License, Version 2.0(“许可证”)获得许可;除非遵守许可证,否则您不得使用此文件。您可以在以下网址获取许可证副本:
https://apache.ac.cn/licenses/LICENSE-2.0
除非适用法律要求或书面同意,否则根据“按原样”基础分发的软件,不附带任何形式的明示或暗示的保证或条件。请参阅许可证,了解有关特定语言的权限和限制的详细信息。
非常欢迎贡献其他回归器,例如多项式回归器!
也欢迎其他贡献。 鼓励您提交拉取请求以修复错误、改进文档或提供新功能。
拉取请求不必是生产就绪的功能或修复。它可以是拟议更改的草稿,或者只是一个测试,以表明预期的行为存在错误。 可以从那里开始讨论拉取请求。
贡献最终应具有足够的测试覆盖率。 请参阅当前实体的测试,以了解预期的覆盖率。