분류 전체보기

python 메모

[pandas] 항목별 개수(value_counts) 그래프 생성

pandas에서 항목별 개수를 세고 matplotlib없이 바로 histogram을 그릴 수 있다. 다음과 같은 데이터가 있다고 하자. data.shape >>> (610292,1) data >>> col 0 a 1 a 2 a 3 a 4 a 5 a 6 b 7 a 8 b 9 a 10 c 11 b 12 a ... 아래 코드로 항목별 개수 그래프를 생성할 수 있다. CountStatus = pd.value_counts(data['col'].values, sort=True) CountStatus.plot.bar() CountStatus.plot.bar(grid=True, figsize=(10,8), fontsize=15) # figsize, fontsize 조정

개발

[ubuntu] 사용자 추가 및 sudo 권한 부여

우분투에서 사용자를 추가하고 sudo 권한을 부여하는 방법은 아래와 같다 1) 사용자 추가 adduser [추가할 ID] 그 뒤로 사용자 정보 입력하는 라인들이 뜨는데 엔터 누르며 넘어가도 된다. 2) sudo 권한 부여 usermod -aG sudo [추가할 ID]

개발

[git] git clone시 아이디, 비밀번호 입력

git clone시 repository 주소와 함께 사용자 아이디를 함께 입력할 때가 있다. 1) 아이디만 입력 git clone https://username@github.com/username/repository.git 2) 아이디, 패스워드 입력 비밀번호가 노출되기 때문에 권고되는 방법은 아니다. git clone https://username:password@github.com/username/repository.git

알고리즘

[3. 검색트리] 이진트리 검색 (2)

0. Dynamic Set Dynamic Set은 여러 개의 키(key)를 저장하며 Insert(새로운 키 삽입), Search(키 탑색), Delete(키 삭제)와 같은 연산들을 지원하는 자료구조이다. 문제는 정렬되거나 정렬되지 않는 배열, 또는 연결 리스트를 사용할 때 insert, search, delete 중 적어도 하나는 $O(n)$의 시간복잡도를 피할 수 없게 된다. 때문에 이를 해결하고자 여러 방법들이 연구되었는데 그 해결방법들은 다음과 같다. 검색트리: 이진탐색트리(Binary Search Tree), 레드-블랙 트리, AVL-트리 등에 기반 해슁: 해쉬 테이블, Direct Address Table 등 1. 검색트리 Dynamic Set을 트리의 형태로 추상적으로 구현한 자료구조이다. 일..

알고리즘

[3. 검색트리] 이진트리 검색 (1)

0. 트리(Tree) 트리는 계층적인 구조를 표현하기 위한 자료구조(조직도, 파일시스템, 가계도 등)로, 노드(node)들과 노드들을 연결하는 링크(link)들로 구성된다. (1) 관련용어 부모, 자식 관계 형제관계: 루트노드를 제외한 트리의 모든 노드들은 유일한 부모 노드를 가지며, 부모가 동일한 노드들을 형제관계라고 부름 리프(leaf) 노드: 자식이 없는 노드들 조상-자손 관계 부트리(sub-tree): 트리에서 어떤 노드와 그 노드의 자손들로 이루어진 트리(원래 트리의 일부분) 레벨(level): 트리에서 각 계층을 의미 높이: 트리의 높이는 레벨의 수를 의미 (2) 트리의 기본적인 성질 노드가 N개인 트리는 항상 N-1개의 링크(link)를 가진다. 루트에서 어떤 노드로 가는 경로는 항상 유일하..

알고리즘

[2. 정렬] Heap Sort (1)

1. Heap이란? Heap은 heap property를 만족하는 complete binary tree이다. (1) complete binary tree binary tree는 자식 노드가 2개만 존재하며, 오른쪽 자식과 왼쪽 자식이 구분되는 tree이다. full binary tree: 모든 층(level)의 노드들이 꽉 차있는 형태 complete binary tree: 마지막 층(level)을 제외한 층의 노드들은 꽉 차 있으며, 마지막 층의 오른쪽부터 몇개의 노드가 비어있을 수 있음 (2) heap property 이 글에서는 max-heap property를 기준으로 다루고자 한다. max-heap property: 부모는 자식보다 크거나 같다 min-heap property: 부모는 자식보다 ..

pytorch, tensorflow

[tensorflow 2.0] model.save, model.save_weights 차이

tensorflow 2.0 버전부터 model, layer subclassing을 지원한다. 이때 custom model을 학습 후 저장할 때 model.save()를 사용하면 아래와 같은 에러 문구가 뜨는 경우가 발생하는 경우가 있다. >>> ValueError: Model cannot be saved because the input shapes have not been set. Usually, input shapes are automatically determined from calling .fit() or .predict(). To manually set the shapes, call model._set_inputs(inputs). 이 경우 model.save_weights()를 사용하면 해결이 된..

python 메모

[python] url로 json 데이터 받아오기

json 데이터를 url로 받아올 수 있다. 파일을 받아서 이를 서버에 올리고 import 하는 것 보다 훨씬 편하다. requests 라이브러리를 사용하면 가능하다. import requests url = 'https://korquad.github.io/dataset/KorQuAD_v1.0_dev.json' data = requests.get(url).json()

개발

[ubuntu] scp로 파일 복사, 전송

scp는 ubuntu에서 제공하는 기본 커멘드로 Scurity Copy의 약자이다. Security인 이유는 ssh와 같이 SSL기반의 세션 보안 프로토콜을 사용하기 때문에 FTP보다 보안적으로 좋다. scp 명령어 기본 사용법은 다음과 같다. $scp @: scp로 파일 전송은 아래 두 가지 방식이 모두 가능하다. 1) 전송지에 접속해 수신지로 보내기 2) 수신지에 접속해 전송지에서 가져오기 scp 파일 전송 시 port 지정은 대문자 -P로 한다. ssh 접속시에는 소문자 -p를 사용하기 때문에 헷갈리기 쉽다. scp 폴더의 모든 파일을 보낼 때는 -r 옵션을 준다. 1. 전송지에서 접속해 수신지로 보내기 scp [전송할 파일] [수신지 사용자 이름]@[수신지 ip]:[저장할 디렉토리] scp -r ..

python 메모

[tqdm] tqdm에서 새로운 라인 없이 한 라인으로 출력하기

tqdm을 그냥 쓸 때 종종 실행시간에 따라 계속 새로운 라인으로 출력되는 경우가 발생한다. tqdm을 쓰는 이유가 loop 진행정도를 한줄로 출력해서 보기 위함인데 이를 위해서는 leave=True를 넣어주면 된다. tqdm으로 loop progress 한 줄로 출력하기 from tqdm import tqdm for i in tqdm(range(100), leave=True): print(i) 실행시간이 오래걸리는 loop이더라도 한 라인에서 진행사항이 뜨는 것을 확인할 수 있다

개발

[ubuntu] 프로세스 확인 명령어 PS

1. ubuntu 프로세스 확인 1) ps -ef 실행중인 프로세스 전체 목록 출력(PID, time 등 확인 가능) ps -ef 2) ps -ef | grep 프로세스 이름 특정 언어(ex. python)로 실행되고 있는 프로세스 정보 출력 ps -ef | grep python 2. ubuntu 프로세스 종료 kill -9 프로세스 id kill -9 (PID 숫자) 3. ps 명령어 옵션들 ps: 현재 실행중인 프로세스의 목록을 볼 수 있는 명령어 -e: 현재 실행중인 모든 프로세스의 정보 출력 -f: 프로세스에 대한 자세한 정보 출력(PPID 등) -u [사용자이름]: 특정 사용자에 대한 모든 프로세스의 정보를 출력 -p pid: 특정 pid에 대한 정보를 출력 u: 프로세스 소유자의 이름, CPU..

pytorch, tensorflow

[pytorch] torch에서 parameter 접근하기

nn.Linear()등으로 정의한 파라미터 접근은 parameters(), named_parameterss()으로 가능하다. 정확히는 layer가 모두 nn.Module()을 상속받으므로 Module에 정의되어 있는 parameter 접근 방법을 사용하면 된다. 1. torch.nn.Module.parameters() parameters()는 layer 이름을 제외한 parameter값에 대한 iterator를 준다. layer = torch.nn.Linear(10,3) layer >> Linear(in_features=10, out_features=3, bias=True) for p in layer.parameters(): print(p) >> Parameter containing: tensor([[-..

python 메모

[numpy] stack 결과

1) np.vstack & np.stack t = [[1, 2, 3], [4, 5, 6]] np.vstack(t) >> array([[1, 2, 3], [4, 5, 6]]) np.stack(t, axis=0) >> array([[1, 2, 3], [4, 5, 6]]) 2) np.hstack & np.stack t = [[1, 2, 3], [4, 5, 6]] np.hstack(t) >> array([1, 2, 3, 4, 5, 6]) np.stack(t, axis=1) >> array([[1, 4], [2, 5], [3, 6]])

python 메모

[pandas] 배열에 포함된 row만 남기기

pandas를 통해 특정 조건에 만족하는 값들을 남기는 경우 apply, lambda를 사용할 수도 있지만, 다른 방법도 있어서 정리하고자 한다. isin()을 활용한 배열에 포함된 row만 남기기 다음과 같은 데이터가 있다고 하자 data = pd.DataFrame( {'a':['A','A','B','B','B','C'], 'b':[1,2,5,5,4,6], 'c':[-1,3,-3,2,5,6] }) a b c 0 A 1 -1 1 A 2 3 2 B 5 -3 3 B 5 2 4 B 4 5 5 C 6 6 이때 항목 $a$의 값이 배열 $['B','C']$에 포함된 row만 남기고 싶다고 할때, isin()을 활용하면 된다. data['a'].isin(['B', 'C']) 0 False 1 False 2 True..

논문 및 개념 정리

[2018] Universal Language Model Fine-tuning for Text Classification(ULMfiT)

2018년도에 자연어 처리와 관련해서 중요한 개념을 소개한 논문이 여러개 발표되었다. 그 중 하나인 ULMfiT에 대해 간단히 정리하고자 한다. 논문은 여기서 확인할 수 있다. 핵심 정리: general transfer learning을 위한 pre-training + fine-tuning 방법론 제안 1. Introduction NLP에서도 transfer learning이 연구되고 있다. 이 중 inductive transfer의 경우 pre-trained된 word ebmedding을 모델의 첫 layer에 고정시켜두는 경우가 많다(e.g. Word2Vec). 하지만 대부분의 Language Model은 작은 데이터셋에 overfit하며, classifer를 붙여서 fine-tuning이 일어나는 ..

Fine애플
'분류 전체보기' 카테고리의 글 목록 (9 Page)