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の挙動を確かめます。

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

以下、コードです。

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
from tpot.builtins import ZeroCount
import numpy as np
from tpot.builtins import ZeroCount import numpy as np
from tpot.builtins import ZeroCount
import numpy as np

 

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

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

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
X = np.array(
[[0, 10, 2.2],
[0, 0, 5 ],
[0, 0, 0 ]])
print(X)
X = np.array( [[0, 10, 2.2], [0, 0, 5 ], [0, 0, 0 ]]) print(X)
X = np.array(
    [[0, 10, 2.2],
     [0, 0,  5 ],
     [0, 0,  0 ]])

print(X)

 

以下、実行結果です。

 

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

以下、コードです。

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
ZeroCount().fit_transform(X)
ZeroCount().fit_transform(X)
ZeroCount().fit_transform(X)

 

以下、実行結果です。

 

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

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

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

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

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
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)
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)
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」について説明します。