スペクトルの操作#

chemotools および scikit-learn で分光データを扱う場合、単一のスペクトルを期待されるデータ形状に合わせてリシェイプする必要が頻繁に生じます。このガイドでは、 scikit-learn および chemotools での前処理のために単一スペクトルをリシェイプする方法について説明します。

データ形状の理解#

chemotools および scikit-learn の前処理技術は、以下のような2次元配列(行列)を想定しています:

  • 各行が1つのサンプルを表します

  • 各列が1つの特徴量を表します

しかしながら、分光データはしばしば1次元配列(ベクトル)としての単一スペクトルとして提供されます。以下に単一スペクトルの例を示します:

array([0.484434, 0.485629, 0.488754, 0.491942, 0.489923, 0.492869,
       0.497285, 0.501567, 0.500027, 0.50265])

単一のスペクトルで chemotools および scikit-learn を使用するには、1次元配列を1行の2次元配列にリシェイプする必要があります。

前処理のためのリシェイプ#

1次元配列を単一行の2次元配列にリシェイプする方法は以下の通りです:

import numpy as np

spectra_2d = spectra_1d.reshape(1, -1)

reshape(1, -1) メソッドは、1次元配列 spectra_1d を単一行の2次元配列に変換します。結果 ( spectra_2d ) は以下のようになります:

array([[0.484434, 0.485629, 0.488754, 0.491942, 0.489923, 0.492869,
        0.497285, 0.501567, 0.500027, 0.50265]])

注釈

リシェイプされた出力は単一行の2次元配列であり、これは scikit-learn および chemotools の前処理技術で要求される形式です。

これで、リシェイプされた単一スペクトルを chemotools および scikit-learn の前処理技術で使用できるようになります:

import numpy as np
from chemotools.scatter import MultiplicativeScatterCorrection

msc = MultiplicativeScatterCorrection()
spectra_msc = msc.fit_transform(spectra_2d))