我试图在"Server“字段上使用python循环来找出Pearson相关性。
逻辑如下--第一个循环将对每个主机迭代,第二个循环将对该主机中的每个信号进行迭代,并将该信号与所有其他主机的相同信号关联(第三个循环),如果相关性> 0.6,则需要将这些主机(第一个循环中的主机和第三个循环中的主机)的关系增加1b/w。
我的data.csv文件如下所示
Server Signal1 Signal2
Host1 83.73 56.87
Host1 55.32 74.24
Host1 76.52 85.20
Host2 7.02 10.25
Host2 52.52 74.25
Host2 44.52 15.20
Host3 45.26 12.85
Host3 25.65 74.20
Host3 49.36 89.20
import pandas as pd
df=pd.read_csv("data.csv")
Server = df['Server'].tolist()
Signal1= df['Signal1'].tolist()
Signal2= df['Signal2'].tolist()
for device in Device:
for signal in Signal1:
if Device in Signal1:
corr, _ = pearsonr(device,signal)
print('Pearsons correlation: %.3f' % corr)
我试着构建逻辑,但是该代码不能工作,因为我无法在for循环中计算Pearson相关性并验证">0.6“的条件。
发布于 2021-12-26 08:08:27
correlations={}
hosts={'hostname':{'signal1':[values], 'signal2':[values]},....}
arr=hosts.keys()
for i in arr:
correlations[i]={}
for i in range(len(arr)):
for j in range(i+1, len(arr)):
x = arr[i]
y = arr[j]
corr = calculate_correlation(hosts[x]['signal1'],hosts[y]['signal1'])
##put extra conditions here..for now just saving the result in correlations dict..same can be done for signal2
correlations[x][y] = corr
correlations[y][x] = corr
另外,如果您想避免自己编写它,请使用numpy提供了计算PCC的方法。
https://stackoverflow.com/questions/70484827
复制相似问题