用途
pycse(Python Computations in Science and Engineering)在 numpy/scipy 之上扩展了一组便捷函数,主要面向科学与工程计算场景。其核心价值在于:将原本需要 100 多行 scipy 样板代码的回归分析,压缩为约 10 行清晰、可复用的代码。最突出的特点是回归函数会自动返回置信区间,无需手动提取协方差矩阵、计算标准误、查 t 分布表。
主要能力
回归与拟合
- 线性回归:
regress(A, y, alpha=0.05),返回p, pint, se - 非线性回归:
nlinfit(model, x, y, p0, alpha=0.05),返回p, pint, se - 多项式拟合:
polyfit(x, y, deg, alpha=0.05),返回p, pint, se
所有回归函数统一返回三元组:p 为拟合参数,pint 为参数置信区间,se 为标准误。
预测与误差边界
- 线性预测:
predict(X, y, pars, XX, alpha=0.05),返回预测值与区间 - 非线性预测:
nlpredict(X, y, model, loss, popt, xnew),返回预测值与边界
模型比较与评估
- 模型比较:
bic(x, y, model, popt)返回 BIC 值(越低越好) - 线性 BIC:
lbic(X, y, popt) - 拟合优度:
Rsquared(y, Y)返回 R² 值
ODE 求解
ivp(f, tspan, y0, **kwargs):对 scipy 的 ODE 求解器提供便捷接口,返回解。
持久化哈希缓存
针对分子动力学、DFT 计算或长时间仿真等昂贵计算,pycse 提供基于磁盘的缓存:
HashCache:基于 pickle,速度最快JsonCache:JSON 格式,人类可读,兼容 maggmaSqlCache:基于 SQLite,支持search()检索缓存结果
可通过装饰器方式使用,例如 @HashCache() 装饰函数后,首次调用执行计算并缓存,相同参数再次调用时直接从缓存读取。SqlCache 还支持按条件搜索已缓存结果。
Google Sheets 集成
pycse.utils.read_gsheet(url):将 Google 表格直接读入 pandas DataFrame,随后可配合 pycse 的回归函数使用。
模糊比较
feq, fgt, flt, fge, fle:带容差的浮点比较函数,可指定 epsilon 参数。
使用方式
安装:
pip install pycse
依赖:Python 3.6+、numpy、scipy。
典型用法示例(非线性回归):
import numpy as np
import pycse
time = np.array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10])
concentration = np.array([100, 82, 67, 55, 45, 37, 30, 25, 20, 17, 14])
def model(t, C0, k):
return C0 * np.exp(-k * t)
p, pint, se = pycse.nlinfit(model, time, concentration, [100, 0.1])
print(f"C0 = {p[0]:.2f} ± {pint[0,1] - p[0]:.2f}")
print(f"k = {p[1]:.4f} ± {pint[1,1] - p[1]:.4f}")
线性回归需注意 A 为二维数组,形状为(观测数, 参数数),通常需用 np.column_stack 添加截距列。非线性拟合必须提供初始参数猜测 p0。
适用场景
- 将模型拟合到实验数据并需要参数置信区间
- 执行回归分析(线性、非线性、多项式)
- 使用统计准则(BIC、R²)比较模型
- 生成带误差边界的预测
- 缓存昂贵的计算结果
- 从 Google Sheets 读取数据到 pandas
- 求解 ODE
限制
- 若 scipy 本身已满足需求,可不使用 pycse(两者都有效)
- 需要最小二乘之外的定制优化时,pycse 不适用
- 不支持 pycse 未涵盖的模型
- 非线性拟合必须提供初始猜测,否则会失败
regress()要求输入矩阵为二维,否则形状错误
与 scipy 的关系
pycse 是对 scipy 的便捷封装,而非替代。需要自定义优化方法、复杂约束优化、pycse 未暴露的功能或构建底层计算工具时,应使用 scipy。
其他资源
- GitHub:https://github.com/jkitchin/pycse
- 文档:https://kitchingroup.cheme.cmu.edu/pycse/
- 示例:pycse 书籍包含 400 多页科学计算主题内容