使用线性回归进行特征选择

我正在尝试使用scikit-learn库进行特征选择。我的数据很简单。行是样本,列是特征。虽然原始类别标签是X和Y,但我为了线性回归将它们转换为数值,X变为0,Y变为1。

G1  G2  G3  ... Gn Class1.0 4.0 5.0 ... 1.0 04.0 5.0 9.0 ... 1.0 09.0 6.0 3.0 ... 2.0 1...

我使用了sklearn.linear_model.LinearRegression()库,效果很好。现在我正在使用coef_值进行特征选择。在这种情况下,我有两个问题。

使用特征的coef_值是否正确?还是在LinearRegression()中还有其他更好的参数用于特征选择?

此外,是否有某种规则来决定适当的阈值(例如,特征选择的coef_的最小值)?


回答:

仅仅根据系数值来决定是完全不合逻辑的。这是因为除非你的数据是标准化的,否则系数值并不能说明任何问题。

例如:假设一个特征的范围在(0,1)之间,其系数为0.5,而另一个特征的范围在(0,10000)之间,其系数也是0.5。显然,后一个特征由于范围更大,在生成最终输出时的权重更大。

因此,通常建议对特征进行标准化。即$x’ = \frac{x-mean(x)}{std(x)}$,然后根据系数值来决定。

注意:在进行预测时,记得要对特征进行转换。

这种方法可能并不总是有效,因为标准化可能会扭曲特征。还有其他启发式方法。你可以在其他地方阅读这些方法。

另一种方法是通过消除法,一次消除一个特征,看看它们有多重要。这可以通过检查回归中的p值或简单的拟合误差(平方和)来完成。

建议:看起来你正在使用线性回归来解决分类问题,这在原则上是错误的,因为线性回归假设输出y是连续的,而这里y是0或1。你可能应该使用逻辑回归来代替。

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中创建了一个多类分类项目。该项目可以对…

发表回复

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