Python之python-fity3包语法、参数和实际应用案例

Python之python-fity3包语法、参数和实际应用案例
python-fity3 完整使用手册功能、安装、语法、参数、8大案例、报错与注意事项一、库基础概述1. 库定义python-fity3是基于Fity3经典科研数据拟合软件底层算法封装的Python第三方拟合专用库主打一维/二维科研曲线、光谱、动力学、电化学、色谱数据非线性最小二乘拟合完美复刻原版Fity3全部内置模型同时支持Python数据生态NumPy/Pandas/Matplotlib批量自动化拟合广泛用于物理、化学、材料、生物、环境检测数据分析。区分原生Fity3是Windows桌面软件python-fity3是其Python接口脱离GUI实现代码批量运算。2. 核心功能内置上百种标准物理模型线性、多项式、高斯/洛伦兹/Voigt峰、指数衰减、动力学一级/二级反应、朗缪尔吸附、阿伦尼乌斯、电化学阻抗、荧光光谱、衍射分峰、双曲线拟合等。多峰自动分峰拟合自动识别谱峰数量、基线校正、扣除背景、多峰叠加全局拟合支持固定/放开部分参数约束。拟合算法丰富L-M列文伯格-马夸尔特默认、Nelder-Mead、差分进化、贝叶斯拟合、加权最小二乘可设置误差权重。参数完整输出最优参数、标准误差、置信区间、R2R^2R2、卡方χ2\chi^2χ2、残差、AIC/BIC拟合优度判据。批量与自动化批量读取csv/txt光谱文件、循环多组数据拟合、自动绘图、导出拟合报告Excel/文本。自定义模型扩展支持用户输入自定义函数单变量/多参数设置参数上下限、固定值、初始猜测值。基线处理配套工具多项式基线、直线基线、自适应平滑基线、基线一次性扣除后再拟合。二、安装教程1. 标准pip安装# 稳定正式版pipinstallpython-fity3# 更新至最新开发版pipinstall--upgradepython-fity3# 国内清华镜像加速推荐pipinstallpython-fity3-ihttps://pypi.tuna.tsinghua.edu.cn/simple2. 依赖库自动/手动安装安装时会自动依赖若报错手动安装pipinstallnumpy pandas matplotlib scipy openpyxl3. 特殊环境适配Conda环境conda create-nfity_envpython3.9conda activate fity_env pipinstallpython-fity3Linux/macOS无需额外驱动直接pip离线安装下载whl包本地安装pipinstallpython_fity3-xxx.whl4. 验证安装成功importfity3print(fity3.__version__)# 输出版本号即安装完成三、核心语法、类与关键参数详解1. 核心类结构库核心分为3个主类FityData数据加载、基线校正、数据预处理FityFit拟合核心类设置模型、参数约束、执行拟合FityPlot一键绘制原始曲线、拟合曲线、残差、分峰子峰图2. FityData 数据类参数fdatafity3.FityData(x,y,y_errNone)参数类型说明xnp.array/list自变量波长、时间、电压、浓度等一维数组ynp.array/list因变量吸光度、强度、电流、信号y_errnp.array/list/None数据误差加权拟合用None为等权重拟合配套方法.baseline_linear(order1)直线基线扣除.baseline_poly(order3)多项式基线校正.smooth(window5)滑动平均平滑降噪.load_csv(path, x_col0, y_col1)读取表格数据3. FityFit 拟合核心类关键参数fitfity3.FityFit(datafdata,modelgaussian_n,n_peaks2)fit.fit(algorithmlm)1初始化参数参数取值含义dataFityData对象输入预处理后的数据集model字符串内置模型名内置模型关键字linear线性、poly2二次多项式、gaussian单高斯、gaussian_n多高斯分峰、lorentz洛伦兹、voigt沃伊特峰、exp_decay指数衰减、langmuir朗缪尔吸附、arrhenius阿伦尼乌斯、custom自定义函数n_peaksint多峰模型峰数量分峰拟合必填p0list参数初始猜测值不填自动智能生成boundslist[tuple]每个参数上下限[(min1,max1),(min2,max2)...]fixed_paramslist[bool]是否固定参数[True,False]True固定不拟合2.fit() 拟合执行参数参数可选值说明algorithmlm/nelder/delmL-M最小二乘光谱首选de差分进化复杂多峰防局部最优max_iterint1000最大迭代次数tolfloat1e-6收敛精度weightedboolFalse是否使用y_err误差加权拟合3拟合结果输出属性执行fit.fit()后可读取fit.params# 最优拟合参数数组fit.params_err# 参数标准误差fit.r2# 决定系数R²fit.chi2# 卡方值fit.aic# 赤池信息准则fit.y_fit# 全局拟合预测yfit.y_peaks# 多峰拆分后每个峰的曲线数组fit.residual# 残差 y-y_fitfit.get_report()# 生成完整文本拟合报告4. FityPlot 绘图语法plotfity3.FityPlot(fit_resultfit)plot.plot_overlap()# 原图拟合曲线叠加plot.plot_peaks()# 绘制拆分单峰plot.plot_residual()# 残差分布图plot.savefig(fit.png,dpi300)5. 自定义模型语法# 自定义单指数基线模型defmy_model(x,A,tau,offset):returnA*np.exp(-x/tau)offset# 传入自定义函数拟合fitfity3.FityFit(datafdata,modelcustom,funcmy_model,p0[100,5,10])四、8个完整可运行实战应用案例案例1基础线性拟合标准曲线标定适用场景浓度-吸光度标准曲线、传感器标定importfity3importnumpyasnp# 模拟实验数据xnp.array([0,1,2,3,4,5])ynp.array([0.21,0.43,0.62,0.85,1.06,1.28])# 数据加载datafity3.FityData(x,y)# 线性模型拟合 yk*xbfitfity3.FityFit(datadata,modellinear)fit.fit()# 输出结果print(斜率k,截距b,fit.params)print(R²,fit.r2)# 绘图plotfity3.FityPlot(fit)plot.plot_overlap()案例2双高斯分峰拟合拉曼/XRD光谱分峰材料光谱最常用场景拆分重叠特征峰importfity3importnumpyasnp# 模拟双峰光谱数据xnp.linspace(400,500,200)# 构造双峰信号y80*np.exp(-((x-430)/8)**2)60*np.exp(-((x-465)/6)**2)5datafity3.FityData(x,y)# 扣除基线data.baseline_linear()# 2个高斯峰拟合fitfity3.FityFit(datadata,modelgaussian_n,n_peaks2)fit.fit(algorithmlm)# 输出每个峰参数峰高、峰位、半高宽print(拟合参数,fit.params)print(拟合优度R²,fit.r2)# 绘制分峰图pltfity3.FityPlot(fit)plt.plot_peaks()plt.savefig(raman_fit.png)# 导出报告reportfit.get_report()withopen(fit_report.txt,w,encodingutf-8)asf:f.write(report)案例3指数衰减拟合荧光寿命、动力学降解一级动力学衰减yAe−t/τoffsetyAe^{-t/\tau}offsetyAe−t/τoffsetimportfity3importnumpyasnp tnp.linspace(0,20,100)y200*np.exp(-t/4.2)15np.random.normal(0,3,sizelen(t))datafity3.FityData(t,y)fitfity3.FityFit(datadata,modelexp_decay)fit.fit()taufit.params[1]print(f荧光寿命 τ {tau:.2f}ns)案例4朗缪尔吸附等温线拟合吸附材料实验内置langmuir模型计算饱和吸附量、吸附平衡常数importfity3importnumpyasnp# 浓度x吸附容量ycnp.array([1,2,5,10,20,40,80])qnp.array([2.1,3.8,6.5,9.2,11.5,13.1,14.0])datafity3.FityData(c,q)fitfity3.FityFit(datadata,modellangmuir)fit.fit()q_max,K_Lfit.paramsprint(f饱和吸附量 qmax{q_max:.2f})print(f朗缪尔常数 KL{K_L:.3f})案例5阿伦尼乌斯拟合热活化、反应动力学模型kAe−Ea/(RT)kAe^{-Ea/(RT)}kAe−Ea/(RT)求解活化能Eaimportfity3importnumpyasnp T_inv1/np.array([300,320,340,360,380])knp.array([0.0012,0.0035,0.0089,0.021,0.047])datafity3.FityData(T_inv,k)fitfity3.FityFit(datadata,modelarrhenius)fit.fit()A,Eafit.paramsprint(f活化能 Ea {Ea:.2f}J/mol)案例6自定义函数拟合二级降解动力学无内置模型时自定义拟合方程importfity3importnumpyasnp# 二级动力学 y 1/(1/k*t 1/C0)defsecond_order(x,k,C0):return1/(1/(k*x1e-8)1/C0)tnp.linspace(0,15,80)y1/(1/(0.08*t1e-8)1/10)np.random.normal(0,0.1,len(t))datafity3.FityData(t,y)# 自定义模型拟合初始猜测p0fitfity3.FityFit(datadata,modelcustom,funcsecond_order,p0[0.1,12])fit.fit(algorithmde)# 差分进化避免局部最优print(速率常数k,fit.params[0])案例7加权拟合带测量误差的高精度实验仪器有误差使用y_err加权降低噪声权重importfity3importnumpyasnp xnp.array([1,2,3,4,5])ynp.array([2.2,4.1,6.3,7.9,10.2])# 每个数据点测量标准差y_errnp.array([0.15,0.2,0.18,0.3,0.25])datafity3.FityData(x,y,y_erry_err)fitfity3.FityFit(datadata,modellinear)# 开启加权拟合fit.fit(weightedTrue)print(加权拟合斜率误差,fit.params_err[0])案例8批量批量txt光谱自动拟合导出Excel多文件自动化处理科研批量测试必备importfity3importosimportpandasaspd folder./spectra/result_list[]# 遍历文件夹所有txt光谱forfnameinos.listdir(folder):iffname.endswith(.txt):pathos.path.join(folder,fname)# 读取数据datafity3.FityData(None,None)data.load_csv(path,sep\t,x_col0,y_col1)data.baseline_poly(2)# 双峰高斯拟合fitfity3.FityFit(datadata,modelgaussian_n,n_peaks2)fit.fit()# 存储结果res{文件名:fname,峰1位置:fit.params[1],峰2位置:fit.params[4],R2:fit.r2}result_list.append(res)# 批量导出Exceldfpd.DataFrame(result_list)df.to_excel(批量拟合结果.xlsx,indexFalse)print(批量拟合完成结果已导出)五、常见报错、原因与解决方案1. ModuleNotFoundError: No module named ‘fity3’原因未正确安装python-fity3或环境混淆解决pipinstallpython-fity3# 确认当前python环境包pip list|findstr fity32. RuntimeError: Fit does not converge 拟合不收敛原因1初始猜测值p0偏离真实值过大原因2多峰峰数量设置错误峰过多/过少原因3未扣除基线基线漂移干扰拟合原因4使用lm算法陷入局部最优解决方案手动设置合理p0先执行data.baseline_linear()扣除基线切换算法algorithmde差分进化全局搜索设置参数bounds限定参数合理区间。3. ValueError: params length mismatch 参数长度不匹配原因自定义函数参数数量、n_peaks峰数与p0初始值长度不一致解决核对模型参数个数保证p0列表长度等于待拟合参数总数。4. UserWarning: Negative peak amplitude 峰高为负原因基线未校正、峰数量错误、初始值不合理解决先基线校正给峰高参数设置下限bounds[(0,200), ...]禁止负数。5. ImportError: Missing dependency openpyxl原因导出Excel缺少依赖解决pip install openpyxl6. MemoryError 批量拟合内存溢出原因单次读取超大光谱数组、循环不释放拟合对象解决循环内手动del fit分批次读取文件降低数据采样点。7. AttributeError: ‘FityFit’ object has no attribute ‘y_peaks’原因单峰模型没有分峰曲线输出仅gaussian_n多峰模型支持y_peaks解决多峰拟合才能调用y_peaks属性。六、使用注意事项避坑要点1. 数据预处理优先级必须先平滑、扣基线再执行拟合原始带漂移基线的数据会直接导致拟合参数严重失真、R²虚高。2. 算法选择建议单峰、光滑光谱、数据噪声小lm速度最快精度高多重重叠峰、噪声大、易局部最优de差分进化带误差高精度实验开启weightedTrue加权拟合。3. 参数约束规范物理量存在天然范围峰高0、波长正数、吸附量0拟合务必添加bounds上下限避免出现无物理意义的参数。示例高斯峰约束# 每个峰振幅(0,200),峰位(400,500),半高宽(1,20)bounds[(0,200),(400,500),(1,20)]*2fitfity3.FityFit(data,modelgaussian_n,n_peaks2,boundsbounds)4. 拟合优度判断标准R2R^2R2越接近1拟合效果越好同等R2R^2R2下优先看AICAIC越小模型更优残差图无规则随机分布代表拟合可靠残差有波浪状说明峰数量不足/基线未除净。5. 批量拟合性能优化超大光谱先降采样间隔取点差分进化算法速度慢大批量简单曲线改用LM循环中及时删除临时对象释放内存。6. 自定义模型限制自定义函数仅支持单自变量x多自变量拟合需要拆分数据集循环拟合函数内部禁止循环全部使用numpy向量化运算否则拟合速度极慢。7. 单位统一规范输入x/y全程保持单位统一如波长全部nm、时间全部s单位混乱会造成参数完全错误库不会自动转换单位。8. 绘图输出规范保存图片建议dpi≥300用于期刊论文批量绘图增加plt.close()释放画布防止内存堆积。9. 版本兼容Python版本推荐3.8~3.113.12存在少量matplotlib绘图兼容警告不影响拟合核心运算不支持Python2。《动手学PyTorch建模与应用:从深度学习到大模型》是一本从零基础上手深度学习和大模型的PyTorch实战指南。全书共11章前6章涵盖深度学习基础包括张量运算、神经网络原理、数据预处理及卷积神经网络等后5章进阶探讨图像、文本、音频建模技术并结合Transformer架构解析大语言模型的开发实践。书中通过房价预测、图像分类等案例讲解模型构建方法每章附有动手练习题帮助读者巩固实战能力。内容兼顾数学原理与工程实现适配PyTorch框架最新技术发展趋势。