近红外光谱建模之光谱预处理python实现(二) - Go语言中文社区

近红外光谱建模之光谱预处理python实现(二)


目录

4 多元散射矫正处理

5 标准正态变量变换处理

6 一阶差分处理

7 二阶差分处理


4 多元散射矫正处理

def msc(sdata):
    n = sdata.shape[0]  # 样本数量
    k = np.zeros(sdata.shape[0])
    b = np.zeros(sdata.shape[0])

    M = np.mean(sdata, axis=0)

    from sklearn.linear_model import LinearRegression
    for i in range(n):
        y = sdata[i, :]
        y = y.reshape(-1, 1)
        M = M.reshape(-1, 1)
        model = LinearRegression()
        model.fit(M, y)
        k[i] = model.coef_
        b[i] = model.intercept_

    spec_msc = np.zeros_like(sdata)
    for i in range(n):
        bb = np.repeat(b[i], sdata.shape[1])
        kk = np.repeat(k[i], sdata.shape[1])
        temp = (sdata[i, :] - bb)/kk
        spec_msc[i, :] = temp
    return spec_msc


x = msc(x)
pp = PlotSpectrum(x)
pp.show()

5 标准正态变量变换处理

def snv(sdata):
    """
    标准正态变量变换
    """
    temp1 = np.mean(sdata, axis=1)
    temp2 = np.tile(temp1, sdata.shape[1]).reshape((sdata.shape[0], sdata.shape[1]))
    temp3 = np.std(sdata, axis=1)
    temp4 = np.tile(temp3, sdata.shape[1]).reshape((sdata.shape[0], sdata.shape[1]))
    return (sdata - temp2)/temp4


x = snv(x)
pp = PlotSpectrum(x)
pp.show()

6 一阶差分处理

def D1(sdata):
    """
    一阶差分
    """
    temp1 = pd.DataFrame(sdata)
    temp2 = temp1.diff(axis=1)
    temp3 = temp2.values
    return np.delete(temp3, 0, axis=1)

x = D1(x)
pp = PlotSpectrum(x)
pp.show()

7 二阶差分处理

def D2(sdata):
    """
    二阶差分
    """
    temp2 = (pd.DataFrame(sdata)).diff(axis=1)  
    temp3 = np.delete(temp2.values, 0, axis=1)  
    temp4 = (pd.DataFrame(temp3)).diff(axis=1)  
    spec_D2 = np.delete(temp4.values, 0, axis=1)
    return spec_D2

x = D2(x)
pp = PlotSpectrum(x)
pp.show()

版权声明:本文来源CSDN,感谢博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
原文链接:https://blog.csdn.net/Joseph__Lagrange/article/details/95302953
站方申明:本站部分内容来自社区用户分享,若涉及侵权,请联系站方删除。
  • 发表于 2021-06-20 10:46:08
  • 阅读 ( 876 )
  • 分类:

0 条评论

请先 登录 后评论

官方社群

GO教程

猜你喜欢