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

我正在尝试使用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

L1-L2正则化的不同系数

我想对网络的权重同时应用L1和L2正则化。然而,我找不…

使用scikit-learn的无监督方法将列表分类成不同组别,有没有办法?

我有一系列实例,每个实例都有一份列表,代表它所遵循的不…

f1_score metric in lightgbm

我想使用自定义指标f1_score来训练一个lgb模型…

通过相关系数矩阵进行特征选择

我在测试不同的算法时,如逻辑回归、高斯朴素贝叶斯、随机…

可以将机器学习库用于流式输入和输出吗?

已关闭。此问题需要更加聚焦。目前不接受回答。 想要改进…

在TensorFlow中,queue.dequeue_up_to()方法的用途是什么?

我对这个方法感到非常困惑,特别是当我发现这个令人费解的…

发表回复

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