不正确的相关结果

数据挖掘 机器学习 熊猫 相关性
2022-02-15 12:37:48

我正在研究一个输出为 -1 或 1 的有限结果的预测系统,具体取决于 10 个传感器检测到的值。

       class_label     sensor0     sensor1     sensor2     sensor3     sensor4     sensor5     sensor6     sensor7     sensor8     sensor9
count   400.000000  400.000000  400.000000  400.000000  400.000000  400.000000  400.000000  400.000000  400.000000  400.000000  400.000000
mean      0.000000    0.523661    0.509223    0.481238    0.509752    0.497875    0.501065    0.490480    0.482372    0.482822    0.541933
std       1.001252    0.268194    0.276878    0.287584    0.297712    0.288208    0.287634    0.289954    0.282714    0.296180    0.272490
min      -1.000000    0.007775    0.003865    0.004473    0.001466    0.000250    0.000425    0.000173    0.003322    0.003165    0.000452
25%      -1.000000    0.299792    0.283004    0.235544    0.262697    0.249369    0.269430    0.226687    0.242848    0.213626    0.321264
50%       0.000000    0.534906    0.507583    0.460241    0.510066    0.497842    0.497108    0.477341    0.463438    0.462251    0.578389
75%       1.000000    0.751887    0.727843    0.734937    0.768975    0.743401    0.738854    0.735304    0.732483    0.740542    0.768990
max       1.000000    0.999476    0.998680    0.992963    0.995119    0.999412    0.997367    0.997141    0.998230    0.996098    0.999465

作为我工作的一部分,我尝试使用相关矩阵(在pandas.DataFrame.corr的帮助下)对这些传感器的重要性进行排名: 在此处输入图像描述

这个矩阵中的问题是它显示结果和传感器6之间没有相关性,这是不正确的,正如您在下面的散点图中看到的那样,使用传感器6,我们可以轻松预测结果(这也使用决策树支持, knn 等) 在此处输入图像描述

问题:

  • 为什么相关矩阵是错误的?它对其他传感器仍然可靠吗?
  • 使用哪些替代方法来对传感器的重要性进行排名?

编辑:

对于数据类型参考pandas.DataFrame.info()

RangeIndex: 400 entries, 0 to 399
Data columns (total 11 columns):
class_label    400 non-null float64
sensor0        400 non-null float64
sensor1        400 non-null float64
sensor2        400 non-null float64
sensor3        400 non-null float64
sensor4        400 non-null float64
sensor5        400 non-null float64
sensor6        400 non-null float64
sensor7        400 non-null float64
sensor8        400 non-null float64
sensor9        400 non-null float64
dtypes: float64(11)
memory usage: 34.5 KB

对于数据内容,pandas.DataFrame.head()pandas.DataFrame.tail()返回:

data.head()
Out[5]: 
   class_label   sensor0   sensor1   sensor2   sensor3   sensor4   sensor5   sensor6   sensor7   sensor8   sensor9
0          1.0  0.834251  0.726081  0.535904  0.214896  0.873788  0.767605  0.111308  0.557526  0.599650  0.665569
1          1.0  0.804059  0.253135  0.869867  0.334285  0.604075  0.494045  0.833575  0.194190  0.014966  0.802918
2          1.0  0.694404  0.595777  0.581294  0.799003  0.762857  0.651393  0.075905  0.007186  0.659633  0.831009
3          1.0  0.783690  0.038780  0.285043  0.627305  0.800620  0.486340  0.827723  0.339807  0.731343  0.892359
4          1.0  0.788835  0.174433  0.348770  0.938244  0.692065  0.377620  0.183760  0.616805  0.492899  0.930969

data.tail()
Out[6]: 
     class_label   sensor0   sensor1   sensor2   sensor3   sensor4   sensor5   sensor6   sensor7   sensor8   sensor9
395         -1.0  0.433150  0.816109  0.452945  0.065469  0.237093  0.719321  0.577969  0.085598  0.357115  0.070060
396         -1.0  0.339346  0.914610  0.097827  0.077522  0.484140  0.690568  0.420054  0.482845  0.395148  0.438641
397         -1.0  0.320118  0.444951  0.401896  0.970993  0.960264  0.138345  0.354927  0.230749  0.204612  0.558889
398         -1.0  0.059132  0.337426  0.772847  0.099038  0.966042  0.975086  0.532891  0.035839  0.258723  0.709958
399         -1.0  0.379778  0.460256  0.229257  0.768975  0.321882  0.118572  0.448964  0.546324  0.363127  0.176632
1个回答

Pearson Correlation 是一种用于研究两个定​​量连续变量(例如年龄和血压)之间关系的技术。皮尔逊相关系数 (r) 是衡量两个变量之间关联强度的一个数字,介于 -1 和 1 之间。[参考资料]

SPSS教程中的以下散点图直观地解释了不同的皮尔逊相关性:

在此处输入图像描述

但是,从您的散点图来看,传感器 6 与类标签之间似乎没有线性相关性。我不知道您为什么期望相关性??!这就是为什么pandas.DataFrame.corr默认情况下基于 Pearson 相关性的 using 原则上应该导致接近零的相关性。但令我印象深刻的是,这如何为您提供一些感官数据(即传感器 0、传感器 4 和传感器 8)的高度相关性!也许发布您的实际数据集的一部分,而不仅仅是统计数据。我很好奇为什么我们会看到这些相关性。

两个问题:

  • class_label 和 sensory 数据列的数据类型是什么?错误的数据类型可能会导致 pandas 中的相关值错误。看到这个帖子
  • 您不应该查看连续值与分类变量之间的相关性吗?看到这篇文章作为一个很好的参考。

在此处输入图像描述