def remove_lv_features(model, X):
r"""Remove low-variance features.
Parameters
----------
model : alphapy.Model
Model specifications for removing features.
X : numpy array
The feature matrix.
Returns
-------
X_reduced : numpy array
The reduced feature matrix.
References
----------
You can find more information on low-variance feature selection here [LV]_.
.. [LV] http://scikit-learn.org/stable/modules/feature_selection.html#variance-threshold
"""
logger.info("Removing Low-Variance Features")
# Extract model parameters
lv_remove = model.specs['lv_remove']
lv_threshold = model.specs['lv_threshold']
predict_mode = model.specs['predict_mode']
# Remove low-variance features
if lv_remove:
logger.info("Low-Variance Threshold : %.2f", lv_threshold)
logger.info("Original Feature Count : %d", X.shape[1])
if not predict_mode:
selector = VarianceThreshold(threshold=lv_threshold)
selector.fit(X)
support = selector.get_support()
model.feature_map['lv_support'] = support
else:
support = model.feature_map['lv_support']
X_reduced = X[:, support]
logger.info("Reduced Feature Count : %d", X_reduced.shape[1])
else:
X_reduced = X
logger.info("Skipping Low-Variance Features")
return X_reduced
评论列表
文章目录