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

我在测试不同的算法时,如逻辑回归、高斯朴素贝叶斯、随机森林和多层感知器,通过简单地减去均值并除以标准差来对原始数据进行标准化。虽然并不是所有算法都需要这样做,但我只是为了保持一致性。然而,特征的相关系数矩阵在标准化前后会发生变化。在决定选择哪些特征以避免输入数据的冗余时,应该考虑标准化前的相关系数矩阵,还是仅考虑标准化后的相关系数矩阵,因为这是直接输入到机器学习方法中的数据?


回答:

我认为在“正确”的标准化后,相关系数矩阵应该保持不变。

演示:

In [107]: df = pd.DataFrame(np.random.rand(6,6)) * 100

让我们保存标准化的皮尔逊相关系数矩阵

In [108]: corr1 = df.corr()

使用 sklearn.preprocessing.StandardScaler 进行标准化:

In [109]: from sklearn.preprocessing import StandardScalerIn [110]: scale = StandardScaler()In [111]: r = scale.fit_transform(df)

保存标准化的皮尔逊相关系数矩阵

In [112]: corr2 = pd.DataFrame(r).corr()

比较保存的相关系数矩阵:

In [114]: np.allclose(corr1, corr2)Out[114]: True

Related Posts

L1-L2正则化的不同系数

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

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

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

f1_score metric in lightgbm

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

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

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

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

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

如何预测不平衡数据的类别?

在机器学习的二元分类问题中,当类别不平衡时,哪个类别被…

发表回复

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