近红外光谱数据分析--数据预处理(多元散射校正 MSC)

多元散射校正(multiplicative scatter correction,MSC )

多元散射校正可用来消除样本间的基线平移和漂移现象,增强光谱特异性。
多元散射校正算法步骤:

  1. 首先需要一个标准光谱,实际中使用平均光谱做为标准光谱。
    S ˉ = 1 n ∑ i = 1 n S i \bar{S} = \frac{1}{n} \sum_{i = 1} ^{n} S_i Sˉ=n1i=1nSi
  2. S ˉ \bar{S} Sˉ S i S_i Si做为 x x x y y y进行一元线性回归,得到截距 b i b_i bi和系数 k i k_i ki S i = k i S ˉ + b i S_i = k_i \bar{S} + b_i Si=kiSˉ+bi
  3. 对每个样本进行校正: S i ( M S C ) = S i − b i k i S_{i(MSC)} = \frac{S_i - b_i}{k_i} Si(MSC)=kiSibi
    其中, S S S为一个 n ∗ p n * p np的光谱数据矩阵, S i S_i Si表示 S S S的第 i i i行,即第 i i i个样本。代码如下:
def MSC(data_x):
    
    ## 计算平均光谱做为标准光谱
    mean = numpy.mean(data_x,axis = 0)
    
    n,p = data_x.shape
    msc_x = numpy.ones((n,p))

    for i in range(n):
        y = data_x[i,:]
        lin = LinearRegression()
        lin.fit(mean.reshape(-1,1),y.reshape(-1,1))
        k = lin.coef_
        b = lin.intercept_
        msc_x[i,:] = (y - b) / k
    return msc_x 

你可能感兴趣的:(python,数据分析,算法)