【问题标题】:Feature selection using eigenvalues and eigenvectors in Python在 Python 中使用特征值和特征向量进行特征选择
【发布时间】:2020-07-31 06:08:10
【问题描述】:

我有 5 个表示数字向量的列表。我想确定与第一个向量相关性最高的向量。

我也有它们的特征值和特征向量。使用它们,我如何确定哪些向量与a1 高度相关?

我的数据:

a1 = [1, 23, 4, 51, 62, 7, 8, 43, 1, 29]
a2 = [5, 45, 32, 51, 60, 7, 8, 35, 10, 31]
a3 = [13, 3, 64, 35, 36, 37, 48, 3, 31, 1]
a4 = [5, 53, 34, 51, 61, 73, 81, 413, 1, 33]
a5 = [3, 3, 1, 5, 6, 3, 8, 3, 1, 3]

list1 = [a1, a2, a3, a4, a5]

这是我用来查找相关性的代码:

for i in range(5):
    cov_mat = np.cov([a1, list1[i]])
    val, vec = np.linalg.eig(cov_mat)
    print(val)
    print(vec)

    print("\n")

【问题讨论】:

    标签: python numpy statistics correlation


    【解决方案1】:

    您正在寻找与a1 相关性最高的向量。在您的示例中,您正在计算所有向量之间的协方差,而您实际上需要相关性:

    np.corrcoef(list1)
    # array([[ 1.        ,  0.86675825, -0.23602677,  0.37897762,  0.41113663],
    #        [ 0.86675825,  1.        , -0.10780546,  0.16422644,  0.17282495],
    #        [-0.23602677, -0.10780546,  1.        , -0.32809557,  0.15695428],
    #        [ 0.37897762,  0.16422644, -0.32809557,  1.        ,  0.05856583],
    #        [ 0.41113663,  0.17282495,  0.15695428,  0.05856583,  1.        ]]) 
    

    这为您提供了所有 5 个向量之间的所有成对相关性,但您只对与 a1 的相关性感兴趣:

    np.corrcoef(list1)[0]
    # array([ 1.        ,  0.86675825, -0.23602677,  0.37897762,  0.41113663])
    

    注意第一个相关性是1,这是因为a1a1之间的相关性是1,因为它们是相同的。

    还要注意a2a1 的相关性最强


    关于变量之间的关系,以及协方差和相关性如何相似但不同 - towardsdatascience post

    简单来说,这两个术语都衡量关系和 两个变量之间的依赖关系。 “协方差”表示方向 变量之间的线性关系。上的“相关性” 另一方面测量线性的强度和方向 两个变量之间的关系

    【讨论】:

    • 这是皮尔逊。反正我不是在找它,谢谢
    • 我不明白,你在寻找两个向量之间的相关性。如果您不是在寻找 Pearson 相关性,那么您在寻找什么相关性?
    • 有些理论说我们可以使用 eigenvalue 和 eigenvector 找到两个度量的方差。我们可以用它来分析数据,比如哪些是依赖的,哪些不是。
    猜你喜欢
    • 2014-05-11
    • 1970-01-01
    • 1970-01-01
    • 2019-04-16
    • 2012-04-20
    • 2018-12-30
    • 1970-01-01
    • 2012-12-05
    • 1970-01-01
    相关资源
    最近更新 更多