1. 단어-빈도 행렬 만들기 2. 단어 동시 출현 행렬 만들기 3. UCINET CONCOR 분석 [UCINET] CONCOR 분석 하기 일반적으로 네트워크 분석 시각화를 하면 네트워크가 약간 자의적으로 보이고 너무 복잡해보여서 의미를 뽑아내기 어려운 것이 사실이다. 그래서 사용할 수 있는 것이 복잡한 연결망에서 블럭 gahwan.com 와.. 진짜 여기까지 한 거면 다했다.. ㅠㅠ... 일 년 조금 넘는 기간동안 정말 수고했으야 ㅠㅠ... Skip to content
일반적으로 네트워크 분석 시각화를 하면 네트워크가 약간 자의적으로 보이고 너무 복잡해보여서 의미를 뽑아내기 어려운 것이 사실이다. 그래서 사용할 수 있는 것이 복잡한 연결망에서 블럭을 찾아주는 CONCOR 분석이다(김용학 외, 2003). R로도 할 수 있지만, UCINET으로 쉽게 할 수 있다. STEP 1 : UCINET 파일 만들기 우선 CONCOR 분석을 하기 위해서는 동시출현빈도 matrix 파일을 UCINET 파일로 확장자를 바꿔야 한다.
CONCOR 분석은 기본적으로 ‘구조적 등위성’을 바탕으로 한다. 구조적 등위성이란 두 행위자 사이에 관계 여부와 관계 없이, 각 행위자가 다른 사람들과 맺는 관계의 유형이다(김용학 외, 2003). 구조적 등위성 분석은 아래에서 Profile을 클릭해주면 결과값을 얻을 수 있다. Dendrogram은 집락분석 결과를 그림으로 보여주는 것이다. CONCOR 분석을 클릭하고, 아래와 같은 설정값들을 조정해주어야 한다.
Ok를 누르면 덴드로그램을 산출해낸다. 이 그림을 저장해두는 것이 좋다. 덴드로그램을 통해 구조적 등위성의 존재 여부에 대해서 판단할 수 있으며, 아래의 경우 8개의 집단으로 분리된다는 것을 알 수 있다.
이제 Netdraw로 간다. 우선 바탕으로 matrix 데이터 h파일을 로드한 다음에, Concor 분석 결과 part 파일을 불러온다. CONCOR 분석을 하면 output 파일이 세개로 나오는데, 그중에서 Part가 써있는 걸 사용하면 된다. Categorical attribute를 클릭한다. (집단 분류는 범주형이기 때문에 당연하다) 여기서 아까 집단 depth를 3개로 분류했기 때문에 3, 2, 1을 선택할 수 있다. 2를 누르면 4개의 클러스터를, 3을 누르면 8개의 클러스터를 만든다. 그리고 Scrunch factor는 클러스터 구성노드의 분산배치 정도 설정으로 시각화 결과에 따라서 적당히 설정하면 되는데, 4나 8이 일반적이라고 한다. Go를 누르면 클러스터링 결과에 따라서 알아서 퍼진다. 여기에다가 클러스터별로 색상을 다르게 지정해주면 훨씬 예쁜데, 아래 명령어를 참고하면 된다. 이것저것 기록코린이/실무를 위한 코딩 기록 [python] NetworkX를 사용해서 데이터분석 및 시각화 해보기anweh 2020. 11. 2. 15:03 NetworkX는 파이썬 기반의 모듈로, 다양한 그래포 알고리즘을 제공한다. 우연히 알게된 라이브러리인데 생각보다 적용할 수 있는 영역이 다양하고, 무엇보다 그래프라는 툴을 사용하면 데이터 간의 상관관계나 연결성 등 분석할 수 있는 카테고리가 상당히 많아진다. 처음엔 데이터에 그래프라는 개념을 접목시킨다는 점이 다소 생소해서 해당 라이브러리에 익숙해지기까지 꽤나 시간이 걸렸지만... 일단 익숙해지고 나니까 그래프의 파워(?)를 느끼고 매우 신기했었다 ㅋㅋ 어쨌든~~ 오늘 사용할 데이터는 바로 이 데이터다. Pokemon.csv 0.04MB 어디서 얻었는지 기억이 안나는 포켓몬 데이터다. 총 12개의 열이 있고, 행은 포켓몬 종류를 나타낸다. 총 800종이 있다. 포켓몬 종류가 이렇게 많은지 처음 알았음...;; 1. 필요한 라이브러리 불러오기
일단 필요한 라이브러리부터 불러오기~~ networkx는 nx로 줄여쓰는 것이 일반적이다. numpy를 np로 줄여쓰는 것과 똑같음. 2. 데이터 불러오기
pd.read_csv를 사용하면 엑셀 시트를 불러올 수 있다. data라는 변수에 할당. data.head()와 data.tail()은 상위/하위 다섯개 (조정 가능)의 데이터를 확인해주는 코드인데, 엑셀 시트안에 데이터가 어떻게 들어가 있는지 대충 확인할 때 사용하기 좋다. 엑셀 데이터로 분석을 시작하기 전엔 항상 null값이 있는지 확인을 해줘야한다. print(len(data.isnull().any())로 null값의 갯수를 확인하고, null값이 들어가있는 컬럼을 찾아서 0으로 일괄 입력 해주었다. print("Number of pokemon are: " + str(data['Name'].nunique())) 로 포켓몬 종류가 총 몇 개인지 확인해줬다. 그리고 포켓몬의 종류 이름들을 'name'이라는 리스트에 저장해줬다. 컬럼명은 'Pokemon'. name 리스트npoke_total에는 포켓몬의 종류 이름과 각각의 종류가 몇 마리씩 있는지 (엑셀 시트의 'Total'컬럼) 정보를 넣어주었다. npoke_total 리스트3. 분석 및 시각화3.1 포켓몬 종류 별 몇 마리? 포켓몬 종류 별 개체수 상위 30에 대한 시각화 결과이다. 개체수 상위 30 종류3.2 종류 별 연관 그래프 데이터의 Type1 컬럼을 보면 다른 종류임에도 동일한 Type1 정보를 가지고 있는 케이스가 잇다. 포켓몬을 본지가 너무 오래돼서... Type1이 정확히 뭘 의미하는지는 모르겠지만 (아마도 속성일 것이라 추정) 포켓몬 종류별로 Type1에 대한 연관성 그래프를 시각화 했다. (드디어 NetworkX 라이브러리 사용!) 출력 결과시각화 결과3.3 Type1 별 비율 시각화 결과, 물속성의 포켓몬의 개체수가 가장 많고, 요정속성?의 포켓몬 개체수가 가장 적은 것을 확인할 수 있었다. 파이팅 속성은 도대체 뭐지... 공격형 포켓몬이라는 건가?
3.4 전설의 포켓몬 vs. 비전설의 포켓몬
3.5 1세대 포켓몬 대상으로 Type1 연결성 분석 |