분류 전체보기 264

[D3.js] 막대 추가해보기

이전시간에 막대 그래프와 산포도에 동적인 변화를 주었다. 이번에는 막대 그래프에서 클릭 시, 새로운 문서요소가 추가되어 막대가 생성되는 시각화를 본다. - 코드 - 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 10..

D3_js 2019.09.18

[Compiler] EBNF_Extended Backus-Naur Form

본 내용은 아래의 출처에서 본것이고 허락을 맡고 포스트한다. 출처 : https://talkingaboutme.tistory.com/category/About%20Study/Compiler 저번 시간에 Context Free Grammar를 보았다. CFG는 Regular Expression으로 표현하기 힘든 문법들을 표현하기 위한 대체 방안으로 Syntax Tree를 그렸었다. 여기서 Left Recursive 문제가 발생하여 이를 위해 Left Factoring, 터미널을 오른쪽으로 배치해서 해결할 수 있다. 이제 아래 내용을 살펴보자. 위의 그림은 Notational Convention 이라고 한다. 이것이 정의되어 있어야 어떤 부분을 Terminal로 할지 또는 NonTerminal로 할지를 정할..

[Python]리스트 기본, split, 슬라이싱, 부분집합(Powerset) 구하기

List 기본 1 2 3 4 5 6 7 8 9 10 11 12 13 list = [1,2,3,4] list.index(3) list.append(10) list.insert(3,11) print(list) list.sort() print(list) [1, 2, 3, 11, 4, 10] [1, 2, 3, 4, 10, 11] index(번호) : 해당 인덱스의 값을 나탠다. append(값) : 리스트에 해당 값을 뒤에서부터 추가한다. insert(위치, 값) : 리스트에 해당 인덱스에 값을 추가한다. sort() : 리스트를 정렬한다. 단, 리스트내의 타입이 모두 같아야한다. 이외에도 extend 등이 있다. extend는 '+'로도 사용할 수 있다. Split, Join Split()은 정말 자주 사용된..

python 2019.09.10

[NLP] Word2Vec : CBOW, Skip-gram

Word2Vec 워드투백터 라는 개념이 나온다. 이 백터화 라는 개념이 나오기 전에 이전에는 'one-hot encoding' 방식을 사용했다. 이것은 쉽게 말해 단어 n개짜리 사전이 있다고 생각할 때, 길이 n짜리 벡터를 하나 만들고 그 단어가 해당되는 자리에 1을 넣고 나머지에는 0으로 채우는 방식이다. 예를들어 사전이 [서울, 부산, 대전, 인천] 이라면 서울은 [1, 0, 0, 0] 으로 표현이된다. 이 방식은 단어가 본질적으로 다른 단어와 어떤 차이점을 가지는지 이해할 수 없다는 단점이 있다. 이를 해결하기 위해, 단어 자체가 가지는 의미를 다차원 공간에서 '벡터화' 하는 방식이 나타났다. 단어들이 벡터공간에 흩어져있다고 생각하여 각 단어들 사이이 유사도를 측정할 수 있다는 것이다. 예를들어 '..

[D3.js] 산포도 갱신, 트랜지션

이번에는 막대그래프가 아닌 산포도를 갱신해보자. 변경사항은 1 - 클릭이벤트에 따라 새로운 데이터를 랜덤한 값으로 생성한다. 2 - 데이터 갱신이 일어나면 트랜지션이 발생한다. 3 - delay는 없고 1초안에 한번에 트랜지션이 일어나며 갱신 후 새로운 트랜지션이 발생한다. 4 - X, Y 축도 갱신한다. 5 - 산포도의 반지름을 모두 같게 한다. 전체코드를 보자. 주석으로도 내용을 표시하였다. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 6..

D3_js 2019.08.28

[D3.js] 막대 그래프 갱신, 트랜지션(trasition)

지금까지 정적인 테이터를 가지고 시각화를 하였다. 이제는 시각화에 변화를 통해 모션을 통해 트랜지션을 사용하여 시간에 따른 처리를 해보자 먼저 막대차트에 척도를 적용해보자. 1 2 3 4 5 var xScale = d3.scaleBand() .domain(d3.range(dataset.length)) .rangeRound([0, w]) .paddingInner(0.05); //rangeRoundd[0,w]는 0에서 시작해서 w로 끝나는 대역들을 계산해서 그 조각들을 치역으로 지정 D3의 서열척도는 시각 요소를 같은 간격의 특정 순서로 위치시키려 할때에도 사용하여 그 코드는 .domain(d3.range(dataset.length) 이다. range()를 통해 순서대로 값을 빠르게 생성할 수 있다. 파이썬..

D3_js 2019.08.28

[python] 람다식(lambda) map

람다식(lambda) 람다 함수는 일반적으로 우리가 사용하는 함수와 비슷한데 람다 함수는 함수명이 없다. 그래서 이를 익명함수라고도 한다. 자바스크립트나 다른 언어에서 들어봤을 수 있다. 예제를 통해 한번 보자 사용하는 방법은 lambda (매개 변수) : [return 값] 의 형태이다. 1 2 3 4 5 6 7 8 9 10 11 12 def f(): print("python") def ff(a,b): return a*b F = lambda : print("python") FF = lambda a,b : a*b if __name__ == "__main__": print(ff(3,4)) print(f()) print(F()) print(FF(3,4)) 함수와 람다 함수가 있다. 위 코드는 모두 같은 결과..

python 2019.08.26

[python] 파이썬 클래스 실습 및 정규식예제

모듈 만들기 3개의 모듈을 만들어 보자. 여기서는 정규식을 이용해서 이메일과 비밀번호를 체크하는 간단한 프로그램을 만들어 볼것이다. user_pwd.py 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 import re #정규식을 사용하기 def password_val_chk(pwd): pass #아무 일도 하지 않는 구문, if len(pwd) 12: print(pwd, '의 길이가 이상합니다.') return False #for c in pwd: #if not c.isnumeric() and not c.isalpha():..

python 2019.08.26

[python] 파이썬 모듈_Module

모듈 이해 모듈은 재사용을 하고자 하는 변수나 함수의 정의문들을 파일로 저장하여 특정 파이썬 파일리아 파이썬 쉘 환견에서 호출하여 사용할 수 있는 방법을 제시한다. 이러한 모듈들을 특정 기준에 따라 모아 놓은 단위를 패키지지라 한다. 모듈 impoirt 시 from 모듈명 import 이름 : 함수명만으로도 함수를 호출할 수 있다. import 모듈명 as 약어 : 약어로 해당 모듈을 사용할 수 있다. import 모듈명 2개의 파일을 살펴보자. main.py 1 2 3 4 5 6 import math import fib print(math.pi) print(fib.f2(6)) print(fib.f(6)) 메인 파일이다. math 모듈을 사용할 수 있으며 여기서 제공하는 pi를 사용하여 원주율의 값을 사..

python 2019.08.26

[NLP]의사 결정 트리

의사결정트리란 트리를 내려가면서 질문을 하고 그 질문의 응답에 따라 어떤 분류에 속하는지를 결정하는 것이다. 분류결과를 사람이 쉽게 이해하기 위해 노드들을 가장 효율적으로 선정하고 배치하기 위해 정보 획득량과 엔트로피라는 개념이 필요하다. 다음과 같은 그림을 보자. 일반화 하면 이와 같다. 컴공이라면 이진 트리와 비슷한 느낌을 받을 수 있다. 시작 지점은 Root node이고 분기가 거듭될 수록 그에 해당하는 데이터의 수가 줄어들며 각 Terminal node에 속하는 데이터의 개수를 합하면 Root node의 데이터수와 일치한다. 이 의사결정트리는 분류와 회귀 모두 가능하다. 범주나 연속형 수치 모두 예측할 수 있다. 분류 과정은 새로운 데이터가 특정 Terminal node에 속한다는 정보를 확인한 ..