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

目录

1 原始光谱

2 中心化处理

3 标准化处理


1 原始光谱

import numpy as np
import matplotlib.pyplot as plt
import scipy.io as sio


def PlotSpectrum(spec):
    """
    :param spec: shape (n_samples, n_features)
    :return: plt
    """

    plt.figure(figsize=(5.2, 3.1), dpi=300)
    x = np.arange(400, 400 + 2 * spec.shape[1], 2)
    for i in range(spec.shape[0]):
        plt.plot(x, spec[i, :], linewidth=0.6)

    fonts = 8
    plt.xlim(350, 2550)
    # plt.ylim(0, 1)
    plt.xlabel('Wavelength (nm)', fontsize=fonts)
    plt.ylabel('absorbance (AU)', fontsize=fonts)
    plt.yticks(fontsize=fonts)
    plt.xticks(fontsize=fonts)
    plt.tight_layout(pad=0.3)
    plt.grid(True)
    return plt


mat = sio.loadmat('ndfndf.mat')
data = mat['ndfndf']
x, y = data[:, :1050], data[:, 1050]
print(x.shape, y.shape)
pp = PlotSpectrum(x)
pp.show()

近红外光谱建模之光谱预处理python实现(一)_第1张图片

2 中心化处理

def mean_centralization(sdata):
    """
    均值中心化
    """
    temp1 = np.mean(sdata, axis=0)
    temp2 = np.tile(temp1, sdata.shape[0]).reshape((sdata.shape[0], sdata.shape[1]))
    return sdata - temp2


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

近红外光谱建模之光谱预处理python实现(一)_第2张图片

3 标准化处理

def standardlize(sdata):
    """
    标准化
    """
    from sklearn import preprocessing
    return preprocessing.scale(sdata)


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

近红外光谱建模之光谱预处理python实现(一)_第3张图片

 

你可能感兴趣的:(近红外光谱)