전체 글
-
[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..
-
Neo4j 제약조건 생성하기(CONSTRAINT: unique, Not Null)Data & ML & AI/GraphDB(Neo4j) 2022. 7. 7. 01:08
SQL에서 특정 칼럼에 unique, Not Null 등의 조건을 설정하듯, Neo4j에서도 제약을 생성할 수 있습니다. CONSTRAINT문을사용하면 가능합니다. 공식문서에 따르면 다음과 같은 제약이 가능하다고 합니다. Unique node property constraints Node property existence constraints Relationship property existence constraints Node key constraints 일반화 해서 제약조건을 생성하는 방법은 다음과 같습니다. CREATE CONSTRAINT [constraint_name] [IF NOT EXISTS] FOR (n:LabelName) REQUIRE n.propertyName IS UNIQUE [OPTI..
-
8. 판다스를 활용한 원핫인코딩(One hot encoding)Data & ML & AI/Pandas & Scikit-Learn 2022. 6. 10. 01:14
기본적으로 모델학습에 범주형 변수를 활용하기 위해서는 수치화 하는 과정이 필요합니다. 가장 쉬운 방법은 미국=1, ... 일본=81, 한국=82...와 같은 방식으로 코드를 부여하는 것입니다. 하지만 당연하게도 이 수치를 그대로 활용하면 문제가 발생할 수 밖에 없습니다. (미국 + 일본 = 한국)이 되어버리는건 너무나도 이상하죠. 이를 가장 손쉽게 해결하는 방법은 원핫인코딩(one-hot-encoding)입니다. 통계적인 관점에서는 더미변수(dummy variable)를 생성하는 것입니다. sklearn의 데이터셋인 house_prices 데이터셋의 일부를 활용해 실습해보겠습니다. import pandas as pd from sklearn.datasets import fetch_openml housing..
-
Neo4j Cypher 기본구문(Create, Match, Merge 절)Data & ML & AI/GraphDB(Neo4j) 2022. 6. 9. 21:06
Create a Node SQL에서는 테이블을 생성할 때 Create를 사용한다면 Cyper에서는 노드를 생성할 때 Create를 사용합니다. Create (p:Person {name: 'John Doe'}) RETURN p Create (p:Person {name: 'John Doe'}) // 이 경우 return이 없으므로 결과를 보여주지 않음 Finding Nodes Match를 통해 노드 및 관계를 찾으며, 이때 속성을 이용하거나 where을 활용해 조건을 설정할 수 있습니다. // 동일한 결과를 나타내는 두 쿼리 Match (p:Person {name: 'Tom Hanks'}) RETURN p MATCH (p:Person) where p.name = "Tom Hanks" RETURN p Merg..
-
Neo4j의 기본 구성요소(Elements of Neo4j; study with Movies Project Tutorial)Data & ML & AI/GraphDB(Neo4j) 2022. 6. 9. 19:55
Elements of Neo4j Neo4j의 기본 4가지 구성요소를 먼저 살펴보겠습니다. 노드(Nodes) 엔티티를 나타냅니다. 그래프 상에서는 동그란 원으로 나타납니다. Cypher쿼리로는 (p:Person)과 같이 표현합니다. 관계(Relationships) 두 노드 간의 연결관계를 의미합니다. 그래프 상에서는 선으로 나타내며, 연결에 대한 속성을 지칭할 수 있습니다. Cypher쿼리로는 [w:WORKS_FOR]과 같이 표현합니다. MATCH (p:Person)-[d:DIRECTED]-(m:Movie) where m.released > 2010 RETURN p,d,m 라벨(label) 각 노드나 관계에 대한 이름이나 식별명을 의미합니다(Person, Movie, DIRECTED 등). Cypher쿼리..
-
Neo4j와 Cypher 구문의 기본요소Data & ML & AI/GraphDB(Neo4j) 2022. 6. 8. 19:46
SQL이 SQL쿼리를 사용하듯, Neo4j는 Cypher쿼리를 사용합니다. Match (m:Movie) where m.released > 2000 RETURN m limit 5 Match (m:Movie) RETURN M 이런 방식으로 말이죠. SQL이 SELECT문을 사용하듯, Cypher는 Match를 사용합니다. 다만 차이점으로는 SQL이 SELECT만 활용하면 결과를 보여주지만, Cypher는 RETURN까지 있어야 결과를 확인할 수 있습니다. Cypher 구문 Cypher의 기본적인 구문은 다음과 같이 구성되어 있습니다. Clause Description MATCH 일치하는 패턴 찾기 OPTIONAL MATCH 패턴이 일치하지 않으면 NULL 값으로 대체되어 나옴 WHERE MATCH, OPTI..