news 2026/6/22 1:13:45

机器学习在光谱分析中的应用:Python实现

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
机器学习在光谱分析中的应用:Python实现

一、前言:光谱分析为何离不开机器学习

光谱技术包含拉曼、紫外-可见、近红外、荧光等多个门类,凭借快速、无损、样品无需复杂前处理等优势,广泛应用于食品检测、制药化工、环境监测、材料分析等领域。但原始采集的光谱数据普遍存在三大难点:

  1. 维度高、数据冗余:单条光谱包含数百至数千个波长点,直接建模不仅效率低下,还极易引发模型过拟合;
  2. 特征重叠严重:以近红外光谱为例,C-H、O-H、N-H 等官能团的振动吸收峰高度重叠,人工无法区分有效特征;
  3. 噪声与基线干扰:光源波动、仪器温漂、环境杂散光会造成基线漂移与高频噪声,直接掩盖样品的有效光谱特征。

机器学习依靠自动特征提取、非线性拟合、抗干扰建模能力,针对性解决以上问题。其中无监督学习(PCA/KMeans)多用于数据降维、聚类定性;有监督学习(PLS/SVM/神经网络)主打物质分类、成分定量,如今已成为现代光谱分析的核心技术。

在光谱硬件配套与一体化分析方案领域,上海辰昶仪器设备有限公司拥有多年光谱仪器研发与行业落地经验。旗下常规光纤光谱仪、芯片制冷型高灵敏度光谱仪,搭配自主研发的 ChSpecView 分析软件,内置成熟的机器学习建模模块,支持光谱预处理、模型训练、数据预测一站式操作,覆盖拉曼、近红外、紫外可见等主流应用场景,为科研实验与工业项目提供稳定可靠的整套解决方案。

二、光谱分析机器学习核心流程

标准处理流水线:原始光谱数据 → 预处理(平滑/基线校正) → 特征工程(降维/特征筛选) → 数据集划分 → 模型训练 → 模型评估 → 预测应用

2.1 数据来源

本文结合两类数据完成代码演示:

  • 实测数据:基于辰昶系列光纤光谱仪采集的水果糖度近红外光谱、药品原料拉曼光谱、水质 COD 紫外光谱等工业实测样本;
  • 仿真数据:使用 Python 生成带有基线漂移、高斯噪声的模拟光谱,方便大家复现代码、调试算法。

2.2 核心算法选型

任务类型常用算法适用场景
无监督降维PCA(主成分分析)数据压缩、特征可视化、去除数据冗余
无监督聚类KMeans、层次聚类未知样品归类、生产异常样品检测
定性分类SVM、随机森林、CNN物质识别、产品真伪鉴别、品类区分
定量回归PLS、SVR、LSTM物质成分含量、溶液浓度、理化指标预测

三、实战一:光谱数据预处理(Python 实现)

预处理是机器学习建模的基础,预处理效果直接决定模型最终精度。行业主流组合流程:SG 平滑去噪 → AsLS 基线校正 → SNV 标准化

3.1 完整预处理代码

importnumpyasnpimportpandasaspdimportmatplotlib.pyplotaspltfromscipy.signalimportsavgol_filterfromscipy.sparseimportdiagsfromscipy.sparse.linalgimportspsolve# 1. 生成仿真光谱数据:50 个样品,波长范围 200-1000nm,共 500 个波长点np.random.seed(42)wavelength=np.linspace(200,1000,500)n_samples=50# 构建真实光谱信号、基线、噪声true_signal=np.zeros((n_samples,len(wavelength)))foriinrange(n_samples):peak1=50*np.exp(-(wavelength-450)**2/(2*50**2))peak2=30*np.exp(-(wavelength-700)**2/(2*80**2))true_signal[i]=peak1+peak2 baseline=0.002*(wavelength-200)+10# 模拟基线漂移noise=np.random.normal(0,2,(n_samples,len(wavelength)))# 模拟高斯噪声raw_spectra=true_signal+baseline+noise# 2. SG 平滑去噪函数defsg_smooth(spectra,window=17,polyorder=3):returnsavgol_filter(spectra,window_length=window,polyorder=polyorder,axis=1)smoothed_spectra=sg_smooth(raw_spectra)# 3. AsLS 不对称最小二乘基线校正函数defbaseline_als(y,lam=1e5,p=0.01,n_iter=10):L=len(y)D=diags([1,-2,1],[0,-1,-2],shape=(L,L-2))D=lam*D.dot(D.T)w=np.ones(L)for_inrange(n_iter):W=diags(w,0,shape=(L,L))z=spsolve(W+D,w*y)w=p*(y>z)+(1-p)*(y<z)returnz# 逐个样品完成基线校正corrected_spectra=np.zeros_like(smoothed_spectra)foriinrange(n_samples):base=baseline_als(smoothed_spectra[i])corrected_spectra[i]=smoothed_spectra[i]-base# 4. SNV 标准化,消除样品散射干扰defsnv(spectra):mean=np.mean(spectra,axis=1,keepdims=True)std=np.std(spectra,axis=1,keepdims=True)return(spectra-mean)/(std+1e-8)# 加极小值避免除零错误snv_spectra=snv(corrected_spectra)# 可视化预处理全过程效果plt.figure(figsize=(12,8))plt.subplot(2,2,1)plt.plot(wavelength,raw_spectra[0])plt.title("原始光谱(含噪声+基线漂移)")plt.subplot(2,2,2)plt.plot(wavelength,smoothed_spectra[0])plt.title("SG 平滑后光谱")plt.subplot(2,2,3)plt.plot(wavelength,corrected_spectra[0])plt.title("基线校正后光谱")plt.subplot(2,2,4)plt.plot(wavelength,snv_spectra[0])plt.title("SNV 标准化后光谱")plt.tight_layout()plt.show()

3.2 预处理关键说明

SG 平滑:选用窗口 17、3 阶多项式,在滤除高频噪声的同时,最大程度保留光谱特征峰轮廓;
AsLS 基线校正:参数 lam=1e5、p=0.01,可适配倾斜、弯曲等不规则基线;
SNV 标准化:消除因样品颗粒度、测量角度带来的散射差异,提升模型泛化能力。

在实际项目落地中,辰昶自主开发的 ChSpecView 软件已完整集成以上预处理算法,支持可视化参数调节,一键输出预处理完成的数据,无需手动编写代码,有效提升光谱分析工作效率。

四、实战二:无监督学习 —— PCA 降维 + KMeans 聚类

高维光谱数据直接建模计算量大、易过拟合,一般先通过降维压缩数据,再结合聚类算法完成未知样品分类。

4.1 PCA 降维(数据压缩 + 可视化)

fromsklearn.decompositionimportPCAfromsklearn.preprocessingimportStandardScaler# 数据标准化(PCA 算法前置必要步骤)scaler=StandardScaler()scaled_spectra=scaler.fit_transform(snv_spectra)# 降至 2 维用于可视化pca=PCA(n_components=2)pca_result=pca.fit_transform(scaled_spectra)print(f"PCA 累计方差贡献率:{np.sum(pca.explained_variance_ratio_):.2f}")# 绘制降维后数据分布plt.figure(figsize=(8,6))plt.scatter(pca_result[:,0],pca_result[:,1],c='blue',alpha=0.7)plt.xlabel(f"主成分 1(方差占比:{pca.explained_variance_ratio_[0]:.2f})")plt.ylabel(f"主成分 2(方差占比:{pca.explained_variance_ratio_[1]:.2f})")plt.title("PCA 降维后光谱数据分布")plt.grid(True,alpha=0.3)plt.show()

4.2 KMeans 聚类(未知样品定性分类)

fromsklearn.clusterimportKMeans# 设置聚类类别为 3 类kmeans=KMeans(n_clusters=3,random_state=42)clusters=kmeans.fit_predict(pca_result)# 可视化聚类结果plt.figure(figsize=(8,6))foriinrange(3):mask=clusters==i plt.scatter(pca_result[mask,0],pca_result[mask,1],label=f"类别{i+1}",alpha=0.7)plt.xlabel("主成分 1")plt.ylabel("主成分 2")plt.title("KMeans 聚类结果")plt.legend()plt.grid(True,alpha=0.3)plt.show()

五、实战三:有监督学习 —— SVM 定性分类 + PLS 定量回归

有监督学习是光谱智能分析的核心,分为物质分类和成分定量两大应用方向。

5.1 数据集划分

fromsklearn.model_selectionimporttrain_test_split# 模拟分类标签:3 类物质,标签 0/1/2labels=np.random.randint(0,3,n_samples)# 划分训练集 80%、测试集 20%X_train,X_test,y_train,y_test=train_test_split(snv_spectra,labels,test_size=0.2,random_state=42)

5.2 SVM 定性分类(物质识别 / 真伪鉴别)

fromsklearn.svmimportSVCfromsklearn.metricsimportaccuracy_score,classification_report# 初始化并训练 SVM 分类模型svm_model=SVC(kernel='rbf',C=10,gamma=0.1,random_state=42)svm_model.fit(X_train,y_train)# 模型预测与评估y_pred=svm_model.predict(X_test)print(f"SVM 分类准确率:{accuracy_score(y_test,y_pred):.2f}")print("分类详细报告:")print(classification_report(y_test,y_pred))

5.3 PLS 定量回归(成分 / 浓度预测)

偏最小二乘回归(PLS)是光谱定量分析的经典算法,完美适配光谱数据共线性、高维度的特点。

fromsklearn.cross_decompositionimportPLSRegressionfromsklearn.metricsimportr2_score,mean_squared_error# 模拟回归标签(浓度/糖度值,范围 0~20)reg_labels=np.random.uniform(0,20,n_samples)X_reg_train,X_reg_test,y_reg_train,y_reg_test=train_test_split(snv_spectra,reg_labels,test_size=0.2,random_state=42)# 训练 PLS 回归模型pls_model=PLSRegression(n_components=2)pls_model.fit(X_reg_train,y_reg_train)# 预测与模型评估y_reg_pred=pls_model.predict(X_reg_test)print(f"PLS 回归决定系数 R²:{r2_score(y_reg_test,y_reg_pred):.2f}")print(f"PLS 回归均方根误差 RMSE:{np.sqrt(mean_squared_error(y_reg_test,y_reg_pred)):.2f}")# 绘制真实值与预测值对比图plt.figure(figsize=(8,6))plt.scatter(y_reg_test,y_reg_pred,alpha=0.7)plt.plot([0,20],[0,20],'r--')plt.xlabel("真实值")plt.ylabel("预测值")plt.title("PLS 回归:真实值 VS 预测值")plt.grid(True,alpha=0.3)plt.show()

六、工业实战落地场景

算法效果的上限,始终由光谱原始数据质量决定。优质硬件能够从源头降低噪声、抑制基线漂移,大幅降低算法调试难度。

食品检测:水果糖度无损预测

采用常规系列光纤光谱仪采集近红外光谱,搭配 SG 平滑 + AsLS 基线校正 + PLS 回归方案,实现水果糖度实时预测,检测速度快、精度高,可对接自动化分选生产线。

制药行业:原料真伪鉴别

选用制冷型高灵敏度光谱仪采集拉曼光谱,设备暗噪声极低,适合微弱信号检测。结合 PCA 降维 + SVM 分类算法,可精准区分结构相似的原料药,替代传统化学检测方式。

环境监测:水质 COD 快速检测

使用紫外波段光谱仪采集水样光谱,通过 PLS 回归模型建立光谱与 COD 指标的关联,检测过程无需化学试剂,无二次污染,适用于户外现场快速巡检。

以上场景均采用硬件设备 + 机器学习算法的组合方案,上海辰昶仪器设备有限公司可根据不同行业需求,提供对应的光谱硬件、配套软件以及技术支持,适配从实验室研发到工业化在线检测的全场景需求。

七、模型优化与常见问题避坑

7.1 高频问题及解决办法

  • 模型过拟合:训练集精度高、测试集精度低 → 扩充样本数量、使用 PCA 降维、增加交叉验证;
  • 预测精度偏低:光谱噪声大、基线畸变严重 → 优化光谱采集参数,优先选用高信噪比光谱设备,微调预处理算法参数;
  • 模型泛化能力差:样本覆盖场景单一 → 补充不同环境、不同批次的样品数据。

7.2 进阶优化方向

  • 数据层面:选择专业光谱仪器采集样本,从源头保证数据质量;
  • 特征层面:结合变量筛选算法,剔除无效波长点,精简模型输入;
  • 算法层面:复杂场景可尝试 CNN、LSTM 等深度学习模型,挖掘光谱深层特征。

八、总结

本文完整演示了机器学习在光谱分析中的全流程应用,涵盖光谱预处理、降维聚类、分类、回归四大核心模块,所有代码均可直接运行调试。

光谱智能分析讲究数据为本、算法为辅,优质的原始光谱数据是模型精准预测的前提。上海辰昶仪器设备有限公司深耕光谱领域多年,产品覆盖全波段光纤光谱仪、制冷型高灵敏度光谱仪等品类,配套分析软件集成预处理、机器学习建模等功能,一站式满足科研教学、产品研发、工业在线检测等各类使用需求,助力用户快速实现光谱数据分析与智能化落地。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/10 5:22:44

The wind is our friend,

The wind is our friend, Bed is my friend. the old man was sleeping again. He was still sleeping on his face and the boy was sitting by him watching him. The old man was dreaming about the lions.

作者头像 李华
网站建设 2026/6/8 22:43:00

MyBatis批量插入踩坑实录:从‘20分钟’优化到‘6秒’的性能调优实战

MyBatis批量插入性能跃迁&#xff1a;从20分钟到6秒的实战调优指南当数据量突破万级时&#xff0c;原本流畅的系统突然变得举步维艰——这是我们团队最近遭遇的真实生产事故。一张包含23列的表&#xff0c;单次插入1.2万条记录竟耗时超过20分钟&#xff0c;直接导致夜间批处理任…

作者头像 李华
网站建设 2026/6/8 22:42:15

为什么有些论文,答辩老师翻完目录就安心了?

论文稳不稳&#xff0c;目录其实已经暴露了一半很多同学以为&#xff0c;答辩老师一定要把正文全部看完&#xff0c;才会判断论文质量。其实不是。有些论文&#xff0c;老师刚翻完目录&#xff0c;心里就已经放松了。不是因为老师随便&#xff0c;而是目录已经传递出一个很重要…

作者头像 李华
网站建设 2026/6/10 3:22:10

加工组装行业管理难?易特进销存生产版,搞定工厂全流程管控

在五金、电子、小家电、机械设备等加工组装行业&#xff0c;绝大多数中小工厂都面临着同一个发展瓶颈&#xff1a;订单逐年增多&#xff0c;但内部管理愈发混乱。传统工厂长期依靠Excel记账、手写单据、人工统计数据&#xff0c;采购、生产、库存、销售、财务各环节数据相互割裂…

作者头像 李华