予測モデルを使う時に、各変量の分散をみて、使える特徴量かを確認し、絞ることがあります。
sklearnには閾値を設定し、それ以下の分散の特徴量を削除する。VarianceThreshold
が存在します。
from sklearn.feature_selection import VarianceThreshold from sklearn.datasets import load_iris import pandas as pd # 閾値を設定 vt = VarianceThreshold(threshold=0.5) #fit_transformで削除した変数のみ残す after_vt = vt.fit_transform(load_iris().data) #分散を確認する vt.fit(load_iris().data).variances_ #確認するだけなら、pandasの方が楽 iris = pd.DataFrame(load_iris().data) iris.var() iris.std() iris.describe()
コードにも書いた通り、分散(と標準偏差)を確認するだけなら、Pandasを使った方が便利です。
やはり、ある程度自動で特徴量を抽出したりするパイプラインに組み込むなどの方法に用いた方が良さそうです。
また、分散は特徴量の値の基本的な大きさに依存するため、横比較は難しいのである程度中身がわかる、似たデータ通しで使うなどの工夫が必要です。
また、うっかりして先にStandardScaler
を使うと(当たり前ですが)ばらつきの差がなくなるので、注意が必要です。