【发布时间】:2016-10-01 11:26:19
【问题描述】:
我有一个典型结构的相关矩阵,其大小为 288x288,定义为:
from sklearn.cluster import AgglomerativeClustering
df = read_returns()
correl_matrix = df.corr()
其中 read_returns 给了我一个带有日期索引的数据框,以及资产回报的列。
现在 - 我想对这些相关性进行聚类以减少人口规模。
通过阅读和实验,我发现了 AgglomerativeClustering - 乍一看,它似乎是解决我的问题的合适方法。
我将距离度量定义为((.5*(1-correl_matrix))**.5) 并具有:
cluster = AgglomerativeClustering(n_clusters=40, linkage='average')
cluster.fit(((.5*(1-correl_matrix))**.5).values)
label_groups = cluster.labels_
为了观察一些数据并交叉检查我的工作,我选择了集群 1 并观察成对相关性,并在我的数据集中找到与该组的两个项目之间的最小相关性:
single_cluster = []
for i in range(0,correl_matrix.shape[0]):
if label_groups[i]==1:
single_cluster.append(correl_matrix.index[i])
min_correl = 1.0
for x in single_cluster:
for y in single_cluster:
if x<>y:
if correl_matrix[x][y]<min_correl:
min_correl = correl_matrix[x][y]
print min_correl
并获得 0.20 的最小成对相关性
在我看来,这似乎相当低 - 但“低基于什么?”是一个我没有答案的公平问题。
我想预测/强制集群的每个成对相关性 >=.7 或类似的东西。
这在 AgglomerativeClustering 中可行吗?
我是不是不小心走错了路?
【问题讨论】:
标签: python scikit-learn cluster-analysis hierarchical-clustering