AutoML【TPOT】特有の関数「ZeroCount変換器」

AutoML【TPOT】特有の関数「ZeroCount変換器」

第9回「AutoML【TPOT】のパイプラインに使われる関数一覧」で、TPOTのパイプライン(特徴量生成・予測)で使われる関数の概要を説明しました。

その中には、TPOT独自の関数がいくつかありました。

分類問題・回帰問題ともに、とく利用されるTPOT独自の変換器は次の3つです。

  1. tpot.builtins.ZeroCount
  2. tpot.builtins.OneHotEncoder
  3. tpot.builtins.StackingEstimator

Scikit-Learn(sklearn)などにも似たようなことのできるものはありますが、独自の工夫がなされています。

今回は、その中で「ZeroCount変換器」について説明します。

ZeroCount変換器とは?

ZeroCount特徴量生成に使われる関数です。

2次元配列を入力として、行ごとにゼロと、ゼロでない値の数を数えて、その数をもとの特徴量に付け加えて新しい特徴量とします。

それでは実際にZeroCountを使ってみましょう。

ZeroCountの挙動を確かめてみよう!

サンプルデータをnumpyで作り、ZeroCountの挙動を確かめます。

先ず、必要なライブラリーを読み込みます。

以下、コードです。

from tpot.builtins import ZeroCount
import numpy as np

 

次に、NumPyでサンプルデータ(2次元配列)を作ります。

例えば、次のようなサンプルデータ(2次元配列)を作ったとします。

X = np.array(
    [[0, 10, 2.2],
     [0, 0,  5 ],
     [0, 0,  0 ]])

print(X)

 

以下、実行結果です。

 

ZeroCountの中のfit_transform関数新しい特徴量を生成します。

以下、コードです。

ZeroCount().fit_transform(X)

 

以下、実行結果です。

 

右側3列元の特徴量配列です。

左から1列目ゼロの数を行ごとに数えた列です。1行目はゼロが1個、2行目はゼロが2個、3行目はゼロが3個です。一番左の列を見るとその通りになっています。

左から2列目ゼロでない値を行ごとに数えた列です。1行目が2個、2行目が1個、3行目が0個で、そのとおりになっています。

ZeroCountの説明で使ったコード全体

from tpot.builtins import ZeroCount
import numpy as np

X = np.array(
    [[0, 10, 2.2],
     [0, 0,  5 ],
     [0, 0,  0 ]])

print(X)

ZeroCount().fit_transform(X)

次回

次回は、とく利用されるTPOT独自の変換器の1つである「OneHotEncoder」について説明します。