Python中大型数据集的向后消除

问题描述 投票:0回答:1

我参加了在线课程,讲师使用数据集(50,5)解释了向后消除,您可以通过查看列的p值来手动消除列。

 import statsmodels.api as sm
 X = np.append(arr = np.ones((2938, 1)).astype(int), values = X, axis = 1)
 X_opt = X[:, [0,1,2,3,4,5]]
 regressor_OLS = sm.OLS(endog = y, exog = X_opt).fit()
 regressor_OLS.summary()

 # Second Step
 X_opt = X[:, [0,1,,3,4,5]]
 regressor_OLS = sm.OLS(endog = y, exog = X_opt).fit()
 regressor_OLS.summary() 
 # and so on

现在在处理诸如(2938,214)这样的大型数据集时,我是否必须自己消除所有列?因为那是很多工作,或者有某种算法或方法可以做到。

这可能是一个愚蠢的问题,但是我是机器学习的初学者,所以请您多多帮助。谢谢

python machine-learning linear-regression
1个回答
0
投票

您要尝试做的事情称为“递归特征消除”,简称RFE

sklearn.feature_selection.RGE中的示例:

sklearn.feature_selection.RGE

这将消除使用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_,您可以消除所有大于阈值的情况(假设零假设是该系数没有意义,例如为零),但请参见下文。

[请记住,通常系数权重会随着其中一些权重的去除而发生变化(如此处或在RFE中),因此,这只是一个近似值,取决于许多因素。您可以进行其他预处理,例如删除相关特征或使用带有L1罚分的OLS,这只会选择最有用的因素。

© www.soinside.com 2019 - 2024. All rights reserved.