当特征不相关时,皮尔逊相关说明了什么?

问题描述 投票:0回答:1

我有一个数据集(包括类在内的31个特征)。这个数据集即将被用于分类问题。我想用Pearson correlation来检查特征之间的相关性,存在于 pandas. 当我把皮尔森的 threshold > 0.5,我得到以下结果。

import pandas as pd

data = pd.read_csv("../dataset.csv")
cor = data.corr(method='pearson')
cor_target = abs(cor['Class'])
result = cor_target[cor_target > 0.5]
print(result)

结果是:

Class    1.0
Name: Class, dtype: float64

原来,所有 30 特征完全不相关。这意味着什么?是不是特征独立就一定是好的指标?

谢谢您。

machine-learning data-science correlation feature-extraction feature-selection
1个回答
0
投票

你的假设有些错误。

以一个例子为例。

import pandas as pd

data = pd.DataFrame({'a': [1, 2, 3, 4, 5], 'b': [1, 2, 3, 4, 5], 'Class' : [0, 1, 1, 0, 1]})
cor = data.corr(method='pearson')
print(cor)
cor_target = abs(cor['Class'])
print(cor_target)
result = cor_target[cor_target > 0.5]
print(result)
              a         b     Class
a      1.000000  1.000000  0.288675
b      1.000000  1.000000  0.288675
Class  0.288675  0.288675  1.000000
a        0.288675
b        0.288675
Class    1.000000
Name: Class, dtype: float64
Class    1.0
Name: Class, dtype: float64

特征集 ab 是完全一样的,它们有1.0的相关性,但你仍然只能得到 1.

去掉类标签,只观察中间特征之间的相关性。

观察相关矩阵,选择相关性低的。

import pandas as pd

data = pd.DataFrame({'a': [1, 2, 3, 4, 5], 'b': [1, 2, 3, 4, 5], 'Class' : [0, 1, 1, 0, 1]})
cor = data[['a', 'b']].corr(method='pearson')
print(cor)
cor_target = abs(cor)

     a    b
a  1.0  1.0
b  1.0  1.0

如果你想使用标签,可以试试scikit-learn的特征重要性。https:/scikit-learn.orgstablemodulesfeature_selection.html。

© www.soinside.com 2019 - 2024. All rights reserved.