绘制近红外光谱特征选择筛选出的变量分布图

绘制近红外光谱特征选择筛选出的变量分布图(特征波长图)

在近红外光谱数据分析建模过程中,特征选择是其中关键的一步。特征选择的原因是全部样本信息(全波长)中存在冗余信息,使得有些有效信息被抵消同时也无法突出有用的信息,这样建立的分析模型准确度和可靠性不高且计算量较大,特征选择就是最大限度的筛选出光谱数据中的有效信息,使得筛选出来的这些信息可以代表全部的样本信息,这样筛选出来的就是特征波长。写论文时需要画出筛选出来的特征波长图,去看特征波长落在哪个波段,从而查找相应作用的官能团。本文分别用python和matlab来实现两种不同的变量分布图。此处说明一下,特征波长和特征变量是同样的意思,只是叫法不一样。

用python绘制变量分布图

直接上代码:

import matplotlib.pyplot as plt
import pandas as pd

# 添加文件名即可,最多九个

name = ['full_wave.csv',
        'cor_wavelength.csv',
        'wave_noclass.csv',
        'wave_2class.csv',
        'wave_3class.csv']

new_name = ['全波长',
            '相关系数变量选择',
            '不分类',
            '分为2类',
            '分为3类']

# name = ['Full_NMir.csv',
#         'NMir_index.csv']
# new_name = ['近—中红外融合全波长',
#             '近—中红外融合UDPFS波长']

sign = ['+', 'x', '*', 'o', 'v', '^', '_', 'h', '.']  # 符号
gap = 5  # 间隔

plt.figure(figsize=(7.5,6
### 使用MATLAB进行近红外光谱数据处理 #### 数据预处理 为了有效利用近红外光谱(NIRS)数据,通常需要先对其进行一系列预处理操作。这些预处理步骤能够提高后续分析的质量和准确性。常见的预处理方法包括平滑(smoothing)、基线校正(baseline correction)、标准化(normalization)等。 对于NIRS数据而言,由于其特有的宽谱带和严重的峰重叠现象[^4],预处理显得尤为重要。MATLAB提供了多种内置函数和支持包用于执行上述预处理任务。例如: - **平滑**: 可以采用移动平均滤波器或者Savitzky-Golay滤波器实现。 ```matlab % Savitzky-Golay Filter Smoothing Example windowSize = 9; % Window size must be odd number and less than length of data vector. polyOrder = 2; smoothedData = sgolayfilt(rawData, polyOrder, windowSize); ``` - **基线校正**: 利用多项式拟合法去除背景噪声影响。 ```matlab p = polyfit(wavelengths, rawData, degree); % Fit a polynomial to the raw spectrum baseline = polyval(p, wavelengths); % Evaluate fitted polynomial at each wavelength point correctedData = rawData - baseline + mean(baseline); % Subtract background from original spectra while preserving overall intensity level ``` - **标准化/归一化**: 将所有样本调整至相同尺度范围内以便比较不同批次间的结果差异。 ```matlab normalizedData = zscore(correctedData); % Standardize by subtracting mean & dividing standard deviation across all points within single measurement set ``` 以上代码片段展示了如何运用MATLAB中的基础命令完成简单的预处理工作。然而,在实际应用场景中可能还需要考虑更多因素并结合具体需求定制相应的算法逻辑。 #### 结果可视化与初步探索性分析 经过适当的数据清洗之后,下一步就是对所得结果展开进一步的研究。这一步骤往往涉及到绘制图表辅助理解数据特性,并尝试发现潜在模式或趋势。下面给一段简单绘图的例子: ```matlab figure(); plot(wavelengths, normalizedData, 'b-', 'LineWidth', 1.5); xlabel('Wavelength (nm)'); ylabel('Absorbance'); title('Normalized NIR Spectrum After Preprocessing'); grid on; ``` 此段脚本会生成一张显示经规范化后的吸光度随波长变化曲线的图形窗口,有助于直观感受所获数据的整体形态及其分布情况。 #### 构建预测模型 最后阶段则是构建定量关系模型用来估计目标变量值。考虑到NIRS信号本身的复杂性和间接性特点,一般推荐选用多元统计回归技术如偏最小二乘法(Partial Least Squares Regression, PLSR)[^1] 或支持向量机(Support Vector Machine, SVM)来进行此类关联性的挖掘。 ```matlab % Assuming X is preprocessed spectral matrix with shape [n_samples, n_features], y contains corresponding reference values model = plsregress(X, y, numComponents); % Train PLS regression model using specified component count predictedY = predict(model, newX); % Predict new samples based on trained model ``` 通过这种方式即可建立起一套完整的从原始采集到最终输的过程链路,从而更好地服务于科学研究和技术开发活动之中。
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值