То, что вы пытаетесь сделать, называется "Eliminatio рекурсивного свойства", для краткости RFE
.
Пример из sklearn.feature_selection.RFE
:
from sklearn.datasets import make_friedman1
from sklearn.feature_selection import RFE
from sklearn.svm import SVR
X, y = make_friedman1(n_samples=50, n_features=10, random_state=0)
estimator = SVR(kernel="linear")
selector = RFE(estimator, 5, step=1)
selector = selector.fit(X, y)
Это устранит функции, использующие SVR
одну за другой, пока не останется только 5
самое важное. Вы можете использовать любой алгоритм, который обеспечивает feature_importances_
член объекта.
Когда дело доходит до p-values
, вы можете исключить все значения, превышающие пороговое значение (при условии, что нулевая гипотеза о том, что этот коэффициент не имеет значения, например, равен нулю), но см. ниже.
Просто помните, что веса коэффициентов обычно меняются при удалении некоторых из них (как здесь или в RFE), так что это всего лишь приближение, зависящее от многих факторов. Вы можете выполнить другую предварительную обработку, например, удалить связанные функции или использовать OLS с штрафом L1, который выберет только самые информативные факторы.