전체 글
-
[Neo4j + Python] Python에서 Neo4j DB 접속하고 쿼리하기Data & ML & AI/GraphDB(Neo4j) 2022. 8. 28. 21:37
프로젝트 진행을 간소화 하기 위해 Neo4j DB의 노드와 엣지를 만드는걸 자동화 하고싶습니다. 하지만 1) csv파일을 다운받아서 2) Neo4j desktop을 통해 csv를 import해주고, 3) csv를 죄다 로드한 뒤, 4) 그 중 필요한 것들끼리만 관계를 설정해 주고.... 매우 번거로워 보입니다. Neo4j csv파일 열기(LOAD CSV) 많은 수의 원본데이터, raw데이터는 csv, 엑셀과 같은 테이블 형식의 데이터입니다. 처음부터 그래프DB로 시작하는 극히 드문 경우가 아니라면 테이블 형식의 데이터를 그래프DB로 옮겨와야 한다 brain-nim.tistory.com 물론 저것만으로 충분히 할 수 있는 것은 많겠지만, 차라리 다른 프로그래밍 언어를 통해서 제어하는 것이 나아보입니다. 파..
-
9. Scikit Learn을 활용한 train-test 데이터셋 나누기 (cross validation, K-fold)Data & ML & AI/Pandas & Scikit-Learn 2022. 8. 11. 01:08
모델학습의 정확도, 과적합 여부를 확인하기 위해 데이터셋을 훈련용(train), 테스트용(test) 데이터셋으로 나누곤 합니다. 더 나아가서는 검증용(valid) 데이터셋으로 구분하기도 하죠. 앞서 6.scikit-learn을 활용한 간단한 분류모델, 7.회귀모델에서도 잠깐 다루긴 했었지만, 아주 조금만 더 자세히 살펴볼까 합니다. 1. 데이터 가져오기 sklearn의 toy data 중 와인데이터를 사용해보겠습니다. import pandas as pd from sklearn.datasets import load_wine wine = load_wine() X = wine['data'] Y = wine['target'] feature_names = wine['feature_names'] df = pd.Da..
-
[NetworkX] 멀티그래프, Multigraph (파이썬 네트워크 분석 4)Data & ML & AI/NetworkX 2022. 8. 2. 22:11
멀티 그래프(Multi Graph) 생성하고 그리기 노드와 노드는 단 하나의 관계만으로 정의되지 않는 경우가 많습니다. 친구이면서도 직장동료일 수도 있고, 학교 선후배이면서도 커플일 수도 있습니다. 한 쌍의 노드가 여러개의 관계, 엣지를 동시에 가질 수 있는 그래프를 멀티그래프(Multigraphs)라고 부릅니다. 그래프 생성하기 import networkx as nx # %matplotlib notebook G = nx.MultiGraph() family = [('G','F'),('D','E')] friend = [('A','B'),('C','F'),('C','E'),('E','J')] coworker = [('B','C'),('C','F'),('I','J'),('E','H'),('G','F'),('E..
-
[NetworkX] 부호그래프, 기타 속성 부여하기 (파이썬 네트워크 분석 3)Data & ML & AI/NetworkX 2022. 8. 1. 20:20
부호 그래프(Signed Graph) 생성하고 그리기 어떤 약물은 혈압을 올리고, 또 어떤 약물은 혈압을 낮추는 것 처럼, 실제 세계에서는 양적/음적 관계가 존재합니다. 때문에 네트워크 그래프는 양적관계, 음적관계를 표현할 수 있어야 합니다. 이런 양적/음적 관계를 표현하는 그래프를 부호그래프(Signed Graph, Signed Network)라고 부릅니다. import networkx as nx G = nx.Graph() G.add_edge('B','A',sign='+') G.add_edges_from([('B','C',{'sign':'-'}),('C','F',{'sign':'-'}),('C','E',{'sign':'-'}), ('E','D',{'sign':'+'}),('G','F',{'sign':'..
-
[NetworkX] 가중그래프, Weighted Graph (파이썬 네트워크 분석 2)Data & ML & AI/NetworkX 2022. 7. 31. 11:32
가중 그래프 생성하고 그리기 가중 그래프는 노드와 노드 사이의 관계가 가중치를 가지는 그래프를 의미합니다. 아래의 그래프 예시에서는 '같이 점심을 먹은 횟수'입니다. 이외에도 장소A와 장소B 간의 거리나 이동시간 등을 가중치로 메겨볼 수도 있습니다. 1) 그래프 생성하기 import networkx as nx %matplotlib notebook G = nx.Graph() G.add_edge('B','A',weight=6) G.add_weighted_edges_from([('B','C',13),('C','F',21),('C','E',25), ('E','D',2),('G','F',9),('H','E',9), ('E','I',10),('E','J',15),('I','J',3)]) 비가중그래프(이전 포스트에서..
-
[NetworkX] 무방향, 방향 그래프 생성하기 (파이썬 네트워크 분석 1)Data & ML & AI/NetworkX 2022. 7. 30. 22:40
네트워크(그래프)는 item들 간의 연결성을 포함, 표현하는 방식입니다. 그리고 파이썬을 이용해 네트워크 구조, 데이터셋을 쉽게 다룰 수 있습니다. NetworkX라는 라이브러리를 이용하면 쉽게 진행할 수 있습니다. (공식링크) # 기본 라이브러리는 아니기 때문에, 따로 설치해줘야 합니다. $ pip install networkx 1. 무방향 그래프(가장 기본적인 그래프) 생성하고 그리기 import networkx as nx %matplotlib notebook G = nx.Graph() G.add_edge('A','B') G.add_edges_from([('B','C'),('C','F'),('C','E'),('E','D'),('F','G')]) nx.draw_networkx(G) NetworkX의 장..
-
Jupyter Notebook kernel error (ImportError: DLL load failed: 지정된 모듈을 찾을 수 없습니다.)Programing/기타 오류 해결 2022. 7. 29. 19:21
윈도우 환경을 주로 사용하는 저는, jupyter notebook을 사용할 때 주로 파일탐색기의 주소창을 이용해 cmd로 들어간 이후 > jupyter notebook 명령으로 주피터를 이용합니다. 윈도우 시작버튼에서 jupyter notebook 아이콘을 선택해도 되지만, 노트북 콘솔에서 파일디렉토리를 찾아가는 것 보다는 파일탐색기에서 찾는게 개인적으로는 더 쉽고 빠르기 때문입니다. 그리고 C드라이브가 아닌 D드라이브나 다른 드라이브로 들어가기엔 매우 편합니다. jupyter notebook 아이콘을 선택해서 시작드라이브를 바꾸려면 셋팅을 바꿔줘야 하니까요. 하지만 회사 컴퓨터를 백업한 뒤에 모종의 이유로 cmd를 통해서 주피터 노트북에 들어가면 아래와 같은 에러가 발생했습니다. 에러양상 그리고 cmd..
-
Neo4j csv파일 열기(LOAD CSV)Data & ML & AI/GraphDB(Neo4j) 2022. 7. 11. 00:43
많은 수의 원본데이터, raw데이터는 csv, 엑셀과 같은 테이블 형식의 데이터입니다. 처음부터 그래프DB로 시작하는 극히 드문 경우가 아니라면 테이블 형식의 데이터를 그래프DB로 옮겨와야 한다는 뜻입니다. Neo4j에서 csv파일을 열고 데이터를 가져와 봅시다. 출처: http://data.neo4j.com/northwind/products.csv 그 전에 주의사항 데이터를 import 함에 있어 제약조건이 좀 있습니다. 1) CSV파일만 load 가능하다. xlsx등의 기타 포맷은 지원하지 않습니다. (neo4j 밖에서 특정한 처리를 통해 csv로 변경해줘야 합니다.) csv파일 외에 API, RDBMS에서 가져오는 방법도 있지만 일단 여기서는 생략합니다. 로컬에 저장된 데이터 읽어오기 Neo4j D..