データ数が少ないにもかかわらず、特徴量が多い時や、単純に特徴の重要度を確認したいことがあります。
決定木系であれば、feature_importances_
でみつつ、増減できますが、回帰の場合、回帰係数は取得できても、重要度は取得できません。
一応、statsmodelsなどで、p値などをみながら消すことができますが、それ以外にsklearnにも実装されているlassoで回避する方法もあります。
from sklearn.linear_model import Lasso from sklearn.preprocessing import StandardScaler #Lassoには標準化が必須 ss = StandardScaler() ss_X = ss.fit_transform(X) #罰則の強さ/より減らしたい時は大きくする reg_l2 = Lasso(alpha=3.0) reg_l2.fit(X,y) #重要度の確認 reg_l2.coef_ #モデルは普通にpredictなどもできる
Ridgeやその組み合わせのElasticNetもありますが、上記目的のため、Lassoが楽かな、、、という感じです。
なお、クロスバリデーションも同時にやってくれるLassoCV
というのもあります。