[Python]在普通最小二乘法中如何找到最优变量?

知道如何使用’statsmodels api’进行基本的普通最小二乘法(OLS)。

但是,我不知道如何从多个自变量中选择合适的自变量。

添加或移除一个自变量会导致P值发生较大变化。

通过移除最大P值来检查的方法效率低且不准确。

您知道如何通过P值选择最优的自变量吗?


回答:

Scikit-Learn和其他类似的API提供了自动选择特征的工具,例如boruta。示例:

# 假设是回归问题# 使用GenericUnivariateSelect保留50%的特征from sklearn.feature_selection import GenericUnivariateSelectfrom sklearn.feature_selection import mutual_info_regression# X = 自变量, y = 因变量X_mutual_information = mutual_info_regression(X, y)selector = GenericUnivariateSelect(score_func=mutual_info_regression, mode='k_best', param=50)X_trans = selector.fit_transform(X, y)print(f"{X.shape[1] - 1} 初始特征。{X_trans.shape[1]} 个被保留")# 使用决策树和SelectFromModelfrom sklearn.tree import DecisionTreeRegressorfrom sklearn.feature_selection import SelectFromModelregressor = DecisionTreeRegressor()selector = SelectFromModel(regressor, threshold='median')X_trans = selector.fit_transform(X, y)print(f"{X.shape[1] - 1} 初始特征。{X_trans.shape[1]} 个被保留")# 使用递归特征消除而不是SelectFromModelfrom sklearn.feature_selection import RFECVselector = RFECV(regressor)X_trans = selector.fit_transform(X, y)print(selector.get_support())

获取这些特征后,您可以尝试使用这些特征进行OLS,看看是否改进了您的算法。

另见boruta以获取更多策略

Related Posts

使用LSTM在Python中预测未来值

这段代码可以预测指定股票的当前日期之前的值,但不能预测…

如何在gensim的word2vec模型中查找双词组的相似性

我有一个word2vec模型,假设我使用的是googl…

dask_xgboost.predict 可以工作但无法显示 – 数据必须是一维的

我试图使用 XGBoost 创建模型。 看起来我成功地…

ML Tuning – Cross Validation in Spark

我在https://spark.apache.org/…

如何在React JS中使用fetch从REST API获取预测

我正在开发一个应用程序,其中Flask REST AP…

如何分析ML.NET中多类分类预测得分数组?

我在ML.NET中创建了一个多类分类项目。该项目可以对…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注