Scikit learn 关于标准化和缩放的问题
我正在尝试生成一个模型,该模型使用一个分子的几个物理化学性质(包括原子数、环数、体积等)来预测数值Y。我想使用PLS回归,我知道标准化在这里非常重要。我正在用Python编程,使用scikit学习。功能的类型和范围各不相同。一些是int64,而另一些是浮动的。某些特征通常具有较小的值(正值或负值),而其他特征的值非常大。我尝试过使用各种定标器(例如标准定标器、规格化、最小-最大定标器等)。然而,R2/Q2仍然很低。我有几个问题:Scikit learn 关于标准化和缩放的问题,scikit-learn,regression,scaling,sklearn-pandas,Scikit Learn,Regression,Scaling,Sklearn Pandas,我正在尝试生成一个模型,该模型使用一个分子的几个物理化学性质(包括原子数、环数、体积等)来预测数值Y。我想使用PLS回归,我知道标准化在这里非常重要。我正在用Python编程,使用scikit学习。功能的类型和范围各不相同。一些是int64,而另一些是浮动的。某些特征通常具有较小的值(正值或负值),而其他特征的值非常大。我尝试过使用各种定标器(例如标准定标器、规格化、最小-最大定标器等)。然而,R2/Q2仍然很低。我有几个问题: 是否有可能通过缩放,一些非常重要的特征失去其重要性,从而对解释响应
缩放的整体思想是使模型对特征空间的分析更具鲁棒性。例如,如果您有
2
特征,如5 Kg
和5000 gm
,我们知道这两个特征是相同的,但对于某些算法,它们对度量空间敏感,如KNN
,PCA
等,它们将更倾向于第二个特征,因此必须对这些算法进行缩放
现在来问你的问题
缩放不会影响特征的重要性。如上所述,它有助于更好地分析数据
不,你不应该这样做,原因如上所述
如果希望在模型中包含领域知识,可以将其用作先验信息。简而言之,对于线性模型,这与正则化相同。它有很好的特点。如果您认为,您有许多无用的特征
,您可以使用L1
正则化,它在特征空间上创建稀疏
效果,这只不过是为无用的特征分配0
权重。这是你的链接
还有一点,基于树的方法不需要缩放,最后,它主要取决于您选择的模型。感谢您的回答和建议。我听说过块缩放(见3),但我真的对这个想法感到困惑。除此之外,我还使用了scikit learn,它提供了一个PLSRegression类。该类实现了NIPALS算法,每个对象都提供了一个定标器。因此,基本上,您可以在内部进行扩展。我还没有弄清楚这里使用的确切的缩放类型。我的问题是,在我已经使用自定义标准化器对外缩放数据之后,启用训练集的内部缩放是否有意义?一些算法更喜欢不同的缩放方法,让它完成它的工作。对于exp,您使用了std_scaler,现在数据的平均值为0
,var为1
。所以它也是带有负值的高斯分布。但有些算法更喜欢min-max,它的数据范围是(0,1)
,它将以所需的形式对其进行缩放。最后,它不会影响数据。谢谢。我明白这一点。我在一些例子中比较了R2/Q2,启用这两种缩放操作并不一定有帮助。谢谢你的回答。