z99*_*991 2 python regression machine-learning scikit-learn
我正在尝试使用 scikit-learn 库进行特征选择。我的数据很简单。行是样本,列是特征。尽管原始类标签是 X 和 Y,但我将它们更改为数字以进行线性回归,将 X 更改为 0,将 Y 更改为 1。
G1 G2 G3 ... Gn Class
1.0 4.0 5.0 ... 1.0 0
4.0 5.0 9.0 ... 1.0 0
9.0 6.0 3.0 ... 2.0 1
...
Run Code Online (Sandbox Code Playgroud)
我使用了库 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。您可能想改用逻辑回归。
| 归档时间: |
|
| 查看次数: |
2031 次 |
| 最近记录: |