标签: correlation

使用.corr获取两列之间的相关性

我有以下pandas数据帧Top15: 在此输入图像描述

我创建了一个列,用于估算每人可引用文档的数量:

Top15['PopEst'] = Top15['Energy Supply'] / Top15['Energy Supply per Capita']
Top15['Citable docs per Capita'] = Top15['Citable documents'] / Top15['PopEst']
Run Code Online (Sandbox Code Playgroud)

我想知道人均可引用文件数量与人均能源供应量之间的相关性.所以我使用.corr()方法(Pearson的相关性):

data = Top15[['Citable docs per Capita','Energy Supply per Capita']]
correlation = data.corr(method='pearson')
Run Code Online (Sandbox Code Playgroud)

我想返回一个数字,但结果是: 在此输入图像描述

python correlation pandas

101
推荐指数
5
解决办法
23万
查看次数

如何在R中创建相关矩阵?

我有92组相同类型的数据.

我想为任意两种组合制作相关矩阵.

即我想要一个92 x92的矩阵.

元素(ci,cj)应该是ci和cj之间的相关性.

我怎么做?

visualization r matrix correlation

84
推荐指数
4
解决办法
20万
查看次数

计算相关性 - cor() - 仅用于列的子集

我有一个数据框,想要计算相关性(使用Spearman,数据是分类和排名),但仅适用于列的子集.我尝试了所有,但R的cor()函数只接受数字数据(x必须是数字,表示错误信息),即使使用了Spearman.

一种粗暴的方法是从数据框中删除非数字列.这不是那么优雅,对于速度我仍然不想计算所有列之间的相关性.

我希望有一种方法可以简单地说"计算列x,y,z的相关性".列引用可以按编号或按名称进行.我想提供它们的灵活方式是通过矢量.

任何建议表示赞赏.

r correlation

45
推荐指数
2
解决办法
13万
查看次数

如何将相关矩阵可视化为Matlab中的模式球

我有42个变量,我在Matlab中为它们计算了相关矩阵.现在我想用一个模式球来形象化它.有没有人有任何建议/经验如何在Matlab中完成?以下图片将更好地解释我的观点:

SCHEMABALL

在此输入图像描述

在图片中,变量之间的每个抛物线将意味着它们之间的相关强度.线越粗,相关性越大.我比图2中的风格更喜欢图片1的风格,在那里我使用了不同的颜色来突出相关的强度.

matlab plot visualization correlation graph-visualization

42
推荐指数
3
解决办法
1万
查看次数

相关特征和分类准确性

我想问一下每个人关于相关特征(变量)如何影响机器学习算法的分类准确性的问题.相关特征我指的是它们之间的相关性而不是目标类别(即周长和几何图形的面积或教育水平和平均收入)之间的相关性.在我看来,相关特征会对分类算法的准确性产生负面影响,我会说,因为相关性使其中一个无用.它真的像这样吗?问题是否随分类算法类型的变化而变化?任何关于论文和讲座的建议都非常受欢迎!谢谢

classification machine-learning correlation feature-selection

36
推荐指数
2
解决办法
2万
查看次数

相关热图

我想用热图表示相关矩阵.R中有一个叫做correlogram的东西,但我不认为Python中有这样的东西.

我怎样才能做到这一点?值从-1到1,例如:

[[ 1.          0.00279981  0.95173379  0.02486161 -0.00324926 -0.00432099]
 [ 0.00279981  1.          0.17728303  0.64425774  0.30735071  0.37379443]
 [ 0.95173379  0.17728303  1.          0.27072266  0.02549031  0.03324756]
 [ 0.02486161  0.64425774  0.27072266  1.          0.18336236  0.18913512]
 [-0.00324926  0.30735071  0.02549031  0.18336236  1.          0.77678274]
 [-0.00432099  0.37379443  0.03324756  0.18913512  0.77678274  1.        ]]
Run Code Online (Sandbox Code Playgroud)

我能够根据另一个问题生成以下热图,但问题是我的值被'切'为0,所以我希望有一个从蓝色(-1)到红色(1)的地图,或者类似的东西,但这里低于0的值没有以适当的方式呈现.

在此输入图像描述

这是代码:

plt.imshow(correlation_matrix,cmap='hot',interpolation='nearest')
Run Code Online (Sandbox Code Playgroud)

python correlation

33
推荐指数
4
解决办法
8万
查看次数

cor只显示NA或1的相关性 - 为什么?

我正在使用所有数值运行cor(),data.frame我得到这个结果:

       price exprice...
price      1      NA
exprice   NA       1
...
Run Code Online (Sandbox Code Playgroud)

所以它是1或者NA为结果表中的每个值.为什么NAs出现而不是有效的相关性?

r correlation

32
推荐指数
5
解决办法
8万
查看次数

处理相关性计算的缺失值

我有一个巨大的矩阵,有很多缺失值.我想获得变量之间的相关性.

1.解决方案

cor(na.omit(matrix))
Run Code Online (Sandbox Code Playgroud)

比下面好吗?

cor(matrix, use = "pairwise.complete.obs")
Run Code Online (Sandbox Code Playgroud)

我已经选择了只有超过20%缺失值的变量.

2.哪种方法最有意义?

r missing-data correlation na

30
推荐指数
3
解决办法
7万
查看次数

删除高度相关的变量

我有一个巨大的数据帧5600 X 6592,我想删除被彼此相关的变量比0.99更我不知道该怎么做这很长的路,一步步也就是形成一个相关矩阵,取整数值,除去类似那些并使用索引来再次获得我的"减少"数据.

cor(mydata)
mydata <- round(mydata,2)
mydata <- mydata[,!duplicated (mydata)]
## then do the indexing...
Run Code Online (Sandbox Code Playgroud)

我想知道这是否可以在短命令或一些高级功能中完成.我正在学习如何使用R语言中的强大工具,这避免了这么长时间不必要的命令

我在想类似的东西

mydata <- mydata[, which(apply(mydata, 2, function(x) !duplicated(round(cor(x),2))))]
Run Code Online (Sandbox Code Playgroud)

对不起,我知道上面的命令不起作用,但我希望我能做到这一点.

适用于该问题的播放数据:

mydata <- structure(list(V1 = c(1L, 2L, 5L, 4L, 366L, 65L, 43L, 456L, 876L, 
78L, 687L, 378L, 378L, 34L, 53L, 43L), V2 = c(2L, 2L, 5L, 4L, 
366L, 65L, 43L, 456L, 876L, 78L, 687L, 378L, 378L, 34L, 53L, 
41L), V3 = c(10L, 20L, 10L, 20L, 10L, 20L, 1L, 0L, 1L, 2010L, 
20L, 10L, 10L, …
Run Code Online (Sandbox Code Playgroud)

r function subset correlation

30
推荐指数
3
解决办法
4万
查看次数

与熊猫的互相关(时滞相关)?

我有各种各样的时间序列,我想要相互关联 - 或者更确切地说,相互关联 - 以找出相关因子最大的时滞.

我找到了各种 问题和答案/链接,讨论如何用numpy来做,但那些意味着我必须把我的数据帧变成numpy数组.由于我的时间序列经常涵盖不同的时期,我担心我会陷入混乱.

编辑

我遇到的所有numpy/scipy方法的问题是,他们似乎缺乏对数据时间序列性质的认识.当我将1940年开始的时间序列与1970年开始的时间序列相关联时,熊猫corr知道这一点,而np.correlate只产生1020个条目(长序列的长度),这个数组充满了nan.

关于这个主题的各种Q表明应该有一种方法来解决不同长度的问题,但到目前为止,我没有看到如何在特定时间段内使用它的迹象.我只需要以1为增量移动12个月,以便在一年内查看最大相关时间.

EDIT2

一些最小样本数据:

import pandas as pd
import numpy as np
dfdates1 = pd.date_range('01/01/1980', '01/01/2000', freq = 'MS')
dfdata1 = (np.random.random_integers(-30,30,(len(dfdates1)))/10.0) #My real data is from measurements, but random between -3 and 3 is fitting
df1 = pd.DataFrame(dfdata1, index = dfdates1)
dfdates2 = pd.date_range('03/01/1990', '02/01/2013', freq = 'MS')
dfdata2 = (np.random.random_integers(-30,30,(len(dfdates2)))/10.0)
df2 = pd.DataFrame(dfdata2, index = dfdates2)
Run Code Online (Sandbox Code Playgroud)

由于各种处理步骤,这些dfs最终变为df,从1940年到2015年被索引.这应该重现:

bigdates = pd.date_range('01/01/1940', '01/01/2015', freq = 'MS') …
Run Code Online (Sandbox Code Playgroud)

python numpy correlation pandas cross-correlation

30
推荐指数
3
解决办法
3万
查看次数