SuperAPI AI 工具集

pycse

数据与分析

查看项目

更新于 10-27 12:33

技能介绍

用途

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 格式,人类可读,兼容 maggma
  • SqlCache:基于 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 多页科学计算主题内容