画像データを扱う時など、行列の中の数値をいっぺんに0or1に変換したい時があります。
そんなときはsklearnのBinarizer
を用いると便利です。
コード
from sklearn.preprocessing import Binarizer import numpy as np #3✖️3のサンプルデータ X = np.random.randint(low=0,high=100,size=(3,3)) # 他のpreprocessingと同じ biner = Binarizer(threshold=50).fit(X) res = biner.transform(X)
引数
pandasとの使い分け
pandasでも、applymap
とlambda
で同様の処理はかけます。
返るのがデータフレームなので、特にその必要がないなら(それこそ画像など)、Binarizerで良いと思います。
import pandas as pd pd.DataFrame(X).applymap(lambda x : 0 if x<= 50 else 1)
その他の使い分けとして、Binarizerは使い方が他のpreprocess
と同じなので、
処理を可変にしつつ、後ろは.transform
したい、などと言ったときに使うかもしれません。