본문 바로가기
딥러닝

[금융]corr matrix을 이용한 계층적 클러스터링을 이용해보기

by 달죽 2020. 11. 10.
반응형

 

sns.clustermap을 이용하면 공분산 행렬의 히트 맵 표현을 플로팅하고 비지도 군집화인 hierarchical clustering algorithm을 실행하여 군집의 개수를 자동적으로 묶어주면서 가장 밀접하게 관련된 feature를 선별할수 있습니다. 

 

corr_matrix = df.corr()
correlations_array = np.asarray(corr_matrix)

linkage = hierarchy.linkage(distance.pdist(correlations_array), \
                            method='average')

g = sns.clustermap(corr_matrix,row_linkage=linkage,col_linkage=linkage,\
                   row_cluster=True,col_cluster=True,figsize=(10,10),cmap='Greens')
plt.setp(g.ax_heatmap.yaxis.get_majorticklabels(), rotation=0)
plt.show()

label_order = corr_matrix.iloc[:,g.dendrogram_row.reordered_ind].columns

correlated_features  =  corr [ corr > 0.1 ] . index . tolist () 
corr_matrix  =  df [ correlated_features ] . corr () 
correlations_array  =  np . asarray ( corr_matrix )

연결  =  계층 . linkage ( distance . pdist ( correlations_array ), \
                             method = 'average' )

g  =  sns . clustermap ( corr_matrix , row_linkage = linkage , col_linkage = linkage , \
                    row_cluster = True , col_cluster = True , figsize = ( 6 , 6 ), cmap = 'Greens' ) 
plt . setp ( g . ax_heatmap . yaxis . get_majorticklabels (),  회전= 0 ) 
plt . 표시 ()

label_order  =  corr_matrix . iloc [:, g . dendrogram_row . reorder_ind ] . 열 
print ( "상관 강도 :" ) 
print ( corr [ corr > 0.1 ] . sort_values ( 오름차순 = False ))

 

 

 

1 단계 : 가장 강력한 상관 관계가있는 feature 을 선택합니다. 

2 단계 : 두 번째 상관관계의 feature를 가져 와서 이미 선택한 기능과 밀접하게 연관되어 있는지 (클러스터 맵에서 인접) 확인합니다.

3 단계 : (1) 목표 피처 수에 도달하거나 (2) 상관 관계가 높은 피처를 모두 사용할 때까지이 프로세스를 반복합니다.

 

 

참고 -

mycarta.wordpress.com/2019/04/10/data-exploration-in-python-distance-correlation-and-variable-clustering/

https://alphascientist.com/feature_selection

반응형

댓글