슬랙에 학생식당 메뉴 알려주는 봇 만들기
intro 과거에 매일 학생 식당 메뉴를 확인하는 것이 귀찮아서 슬랙에 봇을 만들었던 적이 있습니다. 그 내용을 정리해서 업로드합니다. motivation 주로 학생식당이나 교직원식당에 밥 먹으러 가는데, 메뉴가 뭐 나오는지 매번 찾는 것이 귀찮...
Python Core Architecture & Performance
단순 문법 학습을 넘어 파이썬 런타임의 동작 원리와 고급 테크닉을 다룹니다. 이터레이터/제너레이터 프로토콜, 데코레이터, GIL과 동시성 모델, NumPy 벡터 연산 최적화를 학습합니다.
intro 과거에 매일 학생 식당 메뉴를 확인하는 것이 귀찮아서 슬랙에 봇을 만들었던 적이 있습니다. 그 내용을 정리해서 업로드합니다. motivation 주로 학생식당이나 교직원식당에 밥 먹으러 가는데, 메뉴가 뭐 나오는지 매번 찾는 것이 귀찮...
intro 은 기업의 정보시스템에 축적되는 데이터들(일반적으로 이 분야에서는 이벤트 로그라는 이름으로 많이 부릅니다)로부터 회사의 업무 간의 흐름을 도출해 내고, bottleneck 등을 발견하는 기술을 의미합니다. 몇 년 전부터는 단지 프로세스...
intro 저희 연구실에서는 네트워크 분석을 연구실 과제로 많이 진행했습니다. 보통 논문의 서지정보(author keywords, authors, affiliation etc)을 가지고 서로 어떤 관계를 맺고 있는지에 대한 네트워크 분석을 수행합...
Problem size 의 배열이 있을 때, 해당 배열로부터는 크기 의 연속된 배열을 개 만들 수 있다. 만들 수 있는 배열 중에서 가장 큰 합은 무엇인가? solution slower, but pythonic way 사실 아래 방법이 보통 파이...
Problem 문자열 s 로부터 만들 수 있는 가장 짧은 Palindrome을 만들어주는 함수입니다. s가 이미 Palindrome라면, 해당 문자열을 그대로 리턴하면 되고, 아닐 경우에는 해당 문자열을 이용해 새로 만들어줘야겠죠. solutio...
Problem n n matrix를 입력받아, 해당 매트릭스에서 스도쿠의 요건이 성립하는지를 체크하는 함수 - 모든 row에 1 - 9 까지의 모든 값이 있을 것 - 모든 column에 1 - 9 까지의 모든 값이 있을 것 - 3칸 씩 잘라서 만...
Problem 특정한 수 가 들어왔을 때, 의 인수 들을 조합해 만들 수 있는 가장 작은 수를 찾는 함수입니다. 이 문제는 약간 이해가 어려울 수 있어서, 예를 중심으로 설명합니다. examples 1. digitsProduct(2) ==> 2 ...
Problem 은 나선형 이라는 뜻인데, 달팽이집처럼 뺑뺑 돌아나가는 것을 의미하고 spiralNumbers(n)은 음...예시를 보는 게 더 빠를 것 같다. examples 1부터 입력받은 정수까지를 nn matrix에 시계방향으로 배치하고 해...
intro 코딩할 때 빈번하게 하는 일 중 하나가 바로 "특정 자료 구조에 특정한 값이 있는지 확인"하는 것이죠. 이를 전문적인 말로 member testing 이라고 합니다. 매우 사소하지만, 이걸 list에 대해서 하는 경우와, set에 대해...
Problem tree 가 주어졌을 때, leaf로부터 root까지의 합이 s인 path가 존재하는지를 찾는 함수를 만듭니다. example Define Tree(binary) linked list 말고도 Tree 형태의 자료구조도 있습니다. 여...
Problem linked list 이 Palindrome인가? 를 확인하는 함수 ReversedLinkedList(head) Palindrome인지를 확인하기 위해서는 Reverse하는 것이 중요하고, 이를 따로 함수로 정의하였습니다. - 간단...
Problem 두 non-increasing linked list가 들어왔을 때, 이 둘을 합친 non-increasing linked list를 만드는 함수 example mergeTwoLinkedList([0, 1, 5], [3,3,3,7])...
Problem linked list 에 가 포함되어 있을 경우, 모든 를 삭제하고 삭제된 linked list를 리턴하는 함수를 만듭니다. example removeKFromList([3,1,2,3], 3) ==> [1,2] solution
Problem linked list를 k 개만큼씩 끊고 각자 reversing하여 다시 연결해주는 함수를 말한다. example reverseNodesInKGroups([1,2,3,4], 2) ==> [2,1,4,3] reverseNodesInK...
Problem 매트릭스를 회전하는 함수를 만들어 봅니다. - Transpose 는 diagonal line을 축으로 회전해주는 것이고, 여기서 만들려고 하는 것은 matrix의 중심에서 회전시키는 것을 말합니다. - 역시 예제로 설명하는 것이 좋...
intro 대학교에 입학해서 처음 C로 코딩을 할때, "array 우왕 좋아" 하면서 쓰다가, 처음 를 만났을 때 매우 당황했던 기억이 있습니다. 특히, C로 배워서 처음 포인터를 만났을때 그 당혹감이 매우 컸었는데 계속 포인터를 써야 하니까 그...
Intro 을 알기 전에는 공부하다가 공유하면 좋을 것이라고 생각되는 자료들을 ppt로 만드는 일이 많았습니다. 그래서 slideshare를 이용하곤 했는데, 그때 올리던 자료 중에서 유독, 조회수가 높은 자료가 있었는데 파이썬에서 엑셀 파일을 ...
intro dynamic programming은 음...일단은 'recursion'이라고 생각해도 상관없다. 이전에 계산한 값을 가지고, 이후의 값을 계산할 수 있는 것을 의미하는데, 쉽게는 fibonacci가 이 경우에 포함된다. - knaps...
Problem 간단한 코드로 쓰자면 다음과같다. 다만, 현재는 계산속도가 느려서 개선하고 있는 상황. - nums: int list - ex: [1,2,3,4,5,6] - queries: list of (position pair) - ex: [[...
Problem n 4 의 직사각형을 2 1 혹은 1 2의 직사각형으로 채워야 할때, 채울 수 있는 방법의 수는 총 몇 가지 인지를 리턴하는 함수입니다. - if n==1: 1 4 인 직사각형은 2 1을 가로로 두 번 채우는 것 밖에 방법이 없음 ...
Problem https://codefights.com/interview-practice/task/mkobsYSSQo3JpvYNN/ 0, 1로 구성된 2 dimensional binary matrix(직사각형) 내부에 있는 가장 큰 정사각형의 넓...
Problem 순서대로 배치된 집을 색칠하려고 한다. - 방법은 총 3가지 - 집마다 색칠할 때의 가격은 다르며, i 번째 집을 j 색으로 칠할 때의 가격은 - 연속된 집은 같은 색으로 칠하면 안된다. 모든 집을 칠할 수 있는 가장 적은 가격을 ...
Problem https://codefights.com/interview-practice/task/Sx8ndFtwEyCRRqF7q/ string s가 regular expression 으로 정의된 pattern p를 따르는지를 체크하는 함수를 만...
Problem 는 2 dimensional array로, 가 1이면, node 가 연결되어 있음을 의미한다(o/w 0) connections를 이용하여 네트워크를 그릴 수 있으며, 입력받은 connections의 경우 모든 노드가 연결되어 있다....
Problem binary tree t가 symmetric한지를 검사하는 함수입니다. define binary tree value, left, right를 가지는 아주 간단한 객체. shallow copy를 조심하기 위해서, copy functi...
Problem palindrome이 무엇인지는 이미 다들 알고 계신것 같아용, 앞뒤로 읽어도 똑같은 스트링을 말합니당(1577 1577말고 1577 7751 이용) 다만, kpalindrome의 경우는 해당 문자열에서 k개 이하의 문자를 삭제했을...
Problem Given , find the longest IncreasingSubsequence. - 정확히는 길이만 계산해주면 되는 함수 example consecutive가 아니고, integer position 상에서 앞과 뒤의 관계만 지...
Problem string 를 입력받고, 존재하는 파일 중 string size가 가장 긴 path 를 찾아서 리턴해주는 함수를 만든다. 를 프린트하면 다음과 같다. - picture와 documents의 경우, user의 하위폴더이며, phot...
intro - datetime 라이브러리 대한 설명 에서 바로 datetime을 처리하는 것이 더 편할 때도 있지만, 저는 datetime을 쓰는 편이 더 좋아서, 이쪽을 선호합니다. 단순히 말하자면, datetime 이라는 object는 날짜만...
intro python 에서 유용하게 쓰이는 functools의 주요 함수들을 정리하였습니다. 모든 함수들을 정리한 것은 아니고, 제가 주로 쓰는 함수들을 중심으로 정리해봤습니다. functools.cmptokey 는 두 요소간의 '순서상 우위'...
Intro - decorator는 무엇인가? OOP(Object-Oriented Programming)을 들어본 사람이라면, '상속'이라는 개념을 이미 알고 있을 겁니다. 엄밀히 따지면, 다르지만, 제가 볼 때는 비슷한데, 상황에 따라서, fun...
intro 더 진행하기 전에, 현재로서는 실패한 상황입니다. 'programmer.co.kr'에서 다른 분께서 해결했다는 것 같아서, 이를 다시 해보기 위해서 시도했지만, 여전히 실패했습니다. - 만약 이후에 konlpy가 필요하다면, 부트캠프로...
remind 대략 1년전에 만들었던 자료를 다시 올립니다. 과거에는 가 좋은 라이브러리라고 생각했었는데, 이제는 그냥 필요할때, generator로 직접 정의해서 쓰는 게 더 편해서, 거의 쓰지 않습니다. 다만, 이나, 의 경우는 빨라서 쓰는 경...
intro - 아주 간단한 numpy 활용법 NumPy is the fundamental package for scientific computing with Python. It contains among other things numpy없이 간단...
intro 간단하게 파이썬에서 json 파일을 읽는 방법을 설명합니당 json 파일은 파이썬에서 딕셔너리처럼 key-value pair로 구성되어 있어서, 간단하게 변환할 수 있을 것 같은데, 간단하게 변환해주지는 않습니당. solution 아래...
intro 다음 내용을 (아주 간단히) 소개할 계획 - basic - inheritance - method overriding - class method - static method basic object = 관련있는 데이터와 메소드의 합 met...
intro 예전에는 python의 다양하 자료구조를 잘 아는 것이 중요하다고 생각해서, 정리해두었는데, 한참 쓰다보니, 다 필요없고. 결국 back to basic인데, 기본인, list, dictionary, 그리고 pd.DataFrame이 가...
intro 'python에서 xml을 어떻게 읽고 어떻게 처리하는가'를 정리해보려고 합니다. 보통 csv, excel의 자료를 많이 처리하시는데, 웹에서 데이터를 가져오거나, 아니면 ERP와 같은 정보시스템에서 데이터를 가져와야 할때는 html,...
intro wordnet은 프린스턴 대학교에서 과거에 영어단어들에 대해서 구축한 일종의 온톨로지로, 단어간에 어떤 관계를 가지고 있는지를 정리한 온톨로지다. 사전처럼 단어별로 개별적인 의미를 정리하는 것보다, 이렇게 단어간의 관계를 중심으로 정리...
intro. https://programmers.co.kr/learn/courses/21/lessons/950 를 보고 제가 해본 자료입니다. matplotlib을 활용해서 그림을 그릴 때 legend, label을 성의 없이 할 때가 많긴 합니...
intro 파이썬으로 공부한 것들을 정리할 때, 보통 을 활용합니다. 블로그에 포스트를 하려면 으로 변환해야 하는데, 에서 마크다운으로 다운 받으면 해당 디렉토리에 바로 다운 되는 것이 아니라, 다운로드 폴더에 다운이 되고 이를 다시 옮겨야 하는...
intro 보통 python에서 그림을 그릴 때는 을 사용해서 그리는 일이 많기는 합니다만, 네트워크를 그릴때는 생각만큼 예쁘게 나오지 않는 일들이 많습니다. 그래서 찾아보니 를 이용하면 좀 예쁘게 르리 수 있다는 것 같아서 이를 어떻게 사용할 ...
Intro 파이썬을 활용하다보면 객체의 타입을 활용해서 조건을 걸어주는 일들이 생긴다. 객체의 타입에 따라서 제어해주고 싶을 때 다음 코드를 쓰면 유용할 수 있다. Code 코드의 실행 결과는 다음과 같다. 해당 instance가 해당 class...
what is organizational mining 은 보통 크게 두가지로 구분된다(고 생각합니다). - Process model mining and performance analysis: Process model을 구축하고 해당 프로세스 모델...
string을 코드로 바로 돌릴 수 있을까요? 원래는 파일을 파이썬에서 바로 import할 수 없을까? 고민하다가 궁금해진 부분이긴 한데요. 외부에서 만든 코드를 로 가져오는 경우에는 로 하면 그대로 되니까 문제가 없습니다만, 으로 가져와야 하는...
does it possible to import .ipynb 일반적으로는 파일을 다른 파일에서 하는 것은 매우 쉽고 간단하다. 그냥 파일 내부에서 경로만 제대로 하여 해주면 끝임. 만약 사람들이 대부분 파일을 만든다면 아무 문제가 없으나, 여기서...
read json string as a dictionary 이전에는 를 활용하여 파일을 딕셔너리의 형태로 변환하였는데, lib을 이용하여 변환한다. 이 편이 더 편한 것 같기도 하다. 특히 파일들의 경우는 내부에 ""으로 스트링이 표현되어 있고 ...
keras가 뭔가요? "Keras is a high-level neural networks API, written in Python and capable of running on top of TensorFlow, CNTK, or Theano." ...
웹에서 이미지를 읽어봅시다 개발을 하다보면 웹에서 이미지를 가져와야 할 때가 있습니다. 저는 바보라서 그냥 로 해도 되지 않을까? 라는 바보같은 생각을 한 적도 있습니다ㅠㅠ당연히 안되죠. 일반 텍스트는 보통 을 사용해서 비교적 쉽게 크롤링할 수 ...
비슷한가 안 비슷한가! 데이터 분석을 하거나 해야할 때, 많이 쓰이는 measure 중 하나는 similarity(distance)라고 할 수 있습니다. 이 아이들은 비슷한가? 비슷하면 얼마나 비슷한가? 는 항상 직관적으로 궁금해지는 부분입니다....
wordcloud가 뭘까여 보통 이런걸 워드클라우드라고들 하지요. 파이썬에서 워드클라우드를 만들수 있다고 해서 정리해보았습니다. 일단 해당 라이브러리를 일단 설치를 합시다. simple example 텍스트를 객체에 넣어주고, 다음을 실행하면 실...
데이터 차원을 왜 줄여야 하나요? 우선 쓸모가 없으니까요. 사람들이 빅데이터라는 말을 하기 시작한 이후부터는(물론 저 단어는 정말 쓸모없습니다만), 가령 엑셀같은 데이터에 그냥 칼럼이 엄청 많아도 너무너무 좋다고 생각할 지도 모릅니다. "우리에게...
centrality는 무엇인가요? 한국말로 하면 '중심도'가 되겠네요. 네트워크가 구성되었을 때, 우리가 궁금한 것은 네트워크에서 어떤 노드가 중요한 놈인가? 라는 것입니다. 란 네트워크 상에서 중요한 노드를 찾기 위한 일종의 metric이라고 ...
왜 이런짓을 하죠? 저는 보통 대부분의 작업을 맥에서 하는데요(윈도우 마우스 쓰기 싫어요 손목 아파여). 맥에서도 물론 마소 오피스를 쓸 수 있지만, 썩 마음에 들게 워킹하지 않아요. 반드시 마우스를 써야 하는 것도 그렇고. 엑셀의 경우는 그래도...
scopus 데이터를 이용한 저자 키워드 데이터 자동화하기 물론 '텍스트'를 다루는 대부분의 분석의 경우는 자동화가 어렵습니다. 다양한 이유가 있겠으나, 제가 아는 범주에서의 문제는 '예외처리'죠. 텍스트는 예외가 많습니다. 특히, 키워드 분석을...
백업용으로 일단 업로드 해두었습니다. 아래 내용은 graphviz를 이용해 그림을 그려보았으나, 생각보다 예쁘게 나오지 않았씁니다. 원인은 다음들이라고 생각됩니다. - dot language를 잘 모르고 주먹구구식으로 함 - 체계적으로 코딩한 것...
maplotlib를 사용하는 이유. 이전 포스트에서는 를 사용하겠다고 했었습니다. 물론 이 것의 장점이 있기는 한데, 약간 범용적인 측면에서 생각해보면 결국 matplotlib로 돌아가게 됩니다(물론 process model을 표현하는데는 gra...
간단히 말해서, 네트워크 또한 데이터 구조다. '어떤 노드가 어떤 노드와 연결되어 있는가?', '또한 그 노드들은 어떠한 특성을 가지고 연결되어 있는가?', '그 노드와 직접 연결된 노드들은 무엇이 있는가?' 등 네트워크를 분석하다보면 관련된 분...
사실 해보니까 매우 간단하네요. 예전에도 이걸 정리를 해뒀던 것 같은데, 매번 여기저기 둬서 없어졌습니다. 괜히 node size, edge width를 weight에 따라서 알아서 조절하려고 하지 말고, 그냥 cmap을 이용해서 간단하게 하는 ...
python으로 작업할 때 warning을 무시하자 python으로 작업하다보면(특히 ) 이런저런 warning이 뜹니다. 물론 버그의 원인이 되므로 매우 중요하지만, 이걸 하나하나 다 고치다보면 진짜 복창이 터지거든요. 그래서 저는 종종 무시할...
훨씬 깔끔하게 만든 rnd knowlege map code 아 이제 뭘 좀 고치거나 확장하거나 하는게 좋겠네요(물론 이전과의 비교지, 지금도 문제는 많습니다만)) 앞으로도 이 내용은 계속 수정하면서 올릴 것 같습니다. 기존의 문제점 일단 제대로 ...
bipartite graph를 다뤄 봅시다. author keyword 와 index keywords 는 서로 다른 의미를 가집니다. 하나의 논문에는 author keyword와 index keyword가 둘 다 있는데, 이 edge를 중심으로 ...
작업일지 제가 궁극적으로 하려는 것은 '저자 키워드'를 필터링 하려는 것입니다. 'small and medium enterprise' 와 'sme'는 같은 의미를 가집니다. 그렇다면 이 두 가지가 모두 표현될 필요는 없겠죠. 따라서 이를 변환하고...
word embedding이 뭔가요. 도 많이 들어 봤고, 도 많이 들어봤습니다. 어떻게 '되는 것인지'는 모르지만, 어떻게 쓸 수 있는 줄은 알고 있습니다. 아주 간단하게 말하면, 를 벡터로 표현한다는 것이겠죠. 기존에도 워드를 벡터화 하려는 ...
일반적으로 쓰는 networkx 의 function들은 centrality, draw, add/remove node and edges 가 다인데, 이 외에도 꽤나 유용한 함수들이 많이 있습니다. 이것들을 좀 정리해두는 것이 필요하다고 생각됨. n...
네트워크 상에서 비슷한 역할을 하는 노드를 찾아봅시다! structural equivalence, '구조적 등위성'으로 표현할 수 있을텐데, 네트워크 상에서의 연결성을 확인해보면, 두 노드가 '의미적으로 비슷하다'는 것을 의미하는 성질입니다. 대...
how to cluster 키워드 분석 중. 키워드를 활용해서 키워드 네트워크를 만들었고, 따라서 여기서 adjancency matrix or bi-adjancency matrix를 만들 수 있다. 여기까지는 됐고, 이 말은 다시 말하면, 개별 ...
후 키워드 네트워크부터 다시 합시다. 데이터 전처리부분은 거의 다 한 것 같아요. 맨 끝에 설명하겠습니다. 이제는 정말 단일한 데이터 집단을 모은게 아닐까 싶습니다. 키워드 네트워크를 구성했을 때, 만든 네트워크에서 잘못된 노드 들이 있는 경우가...
text에 간단한 전처리를 하기 위해 textblob, nltk를 사용합시다. 사실 nlp에서 가장 중요한 것은 데이터 전처리입니다. 텍스트는 너무 중구난방이라서, 깔끔하게 정리해주는 게 굉장히 중요하고 또 필요합니다. 따라서 여기서는 비교적 단...
one-hot encoding to word embedding 요즘 아무래도 포스팅이 중복되는 느낌들이 있습니다. 제가 이 블로그를 공부하면서 그 과정을 계속 쓰기 때문에 이 포스트 또한 지난 번에 쓴 내용들과 겹치는 부분들이 있을 것 같습니다....
word-embedding을 하고 그 결과를 뿌려주는 과정에서, 학습을 많이 할수록, '의미적으로 유사한 단어들이 모인다'는 것을 보여주려고 하는데, 매번 똑같은 그림을 여러번 보여주는 것보다는 하나의 figure안에 으로 넣어주는 것이 훨씬 예...
matplolib로 그림 그릴 때, text 표시하기. 을 통해 만든 결과를 를 통해 2차원 공간에 표시하고 있는데, 이 때 각 위치에 text를 표시해주는 것이 좋아서 표시해주는 방법을 정리하기로 합니다. 말고도 도 있는데, 의 경우는 폰트의 ...
boxplot을 예쁘게 그립시다. 지금 값들에 outlier가 있는가 없는가를 확인하려면 boxplot을 그리는 게 좋습니당. 아웃라이어가 얼마나 많은지, 어느 정도에서 다른 값들을 모두 버리는게 좋은지 등등은 boxplot으로 확인하는게 좋다고...
subplot의 사이즈는 어떻게 조절할 수 있을까요? 전체 figure에서 한번에 조절할 수있는 방법이 있는건가 싶었는데(아마도 있긴 있겠지만), grid로 한번에 넘겨주는 게 더 깔끔한 것 같아요. 네 여기서는 gridspec이라는 것을 사용해...
document clustering 뭐, 지금까지 간단하게 자연어 전처리 해주는 것들(영어에 대해서만)과 워드임베딩 등을 했습니다. 대략 어떤 메소드들이 있는지에 대해서 아주 간단하게 발을 담궈 보았고, 이제는 이것들을 어떻게 활용할지에 대한 고...
클러스터링을 다시 공부합니다. unsupervised learning인 클러스터링은 쉽게 생각하면, 비슷한 놈들끼리 묶어 준다는 이야기가 됩니다. 우선, '비슷한'을 정의해야 하는데, 개별 instance가 numerical vector로 표현된...
tsne는 얼마나 느린가요. 보통 차원이 너무 큰 데이터를 다루다 보니, 차원축소를 해야 할 때가 많은데, 그때 를 써야하나, 를 써야 하나 고민하게 됩니다. pca가 훨씬 빠르기는 한데, 굴곡이 진 부분, 즉 구부러진 부분을 무시하게 된다는 단...
scaling is most important thing ever. 엑셀을 열어보면 늘 칼럼의 데이터는 엉망진창입니다. missing data는 기본이고, 값이 있어도 지나치게 큰 데이터들(outlier)이 있거나, 칼럼 별로 range가 다르거...
일반적인 clustering 클러스터링을 하기 위해서는 개체 간의 거리를 재는 것이 중요합니다. 이 때, 이 개체 간의 거리를 무엇으로 재는가? 가 중요한데, 데이터가 이라면, 는 개체의 이름, 은 개체가 가진 특성의 이름이 되겠죠. - 예를 들...
axis는 늘 헷갈립니다. 왜 헷갈리는지 모르겠지만, 늘 헷갈려요(저는 알아요, 저만 그런것이 아닐것이라는 사실을 하하핫). 그래서 입력한 다음에도 제대로 되었는지를 늘 확인해야 합니다 새드. 그래서 여기에 적어두고 헷갈릴 때마다 보려고 합니다 ...
boolean vector 다루기 pandas를 쓸때는 boolean vector를 많이 다루게 됩니다. 예를 들어서, 특정 칼럼 Age를 20대 이상으로 필터링하고 싶다면, 로 표현을 합니다. 여기서 은 boolean vector가 됩니다. 하...
마코브체인이란 무엇인가? 학부 시절(까마득한...어라 10년 전이네...) 그러니까 2008년에 확률시스템분석 이라는 과목에서 마코브 체인을 처음 배웠습니다. 왠지 지금 다시 돌아가면 잘할 수 있을 것 같다는 쓸모없는 용기가 샘솟는 것을 보면 역...
입력받는 텍스트는 어떤 언어인가? 입력받는 텍스트가 모두 '한글'이거나 '영어'라면 좋겠지만, 그렇지 않습니다. 또, 한글과 영어가 섞여 있는 경우도 아주 많죠. 기술분야의 전문적인 용어의 경우는 더욱 영어일 가능성이 높아서, 명사는 영어로 작성...
Intro - 왜 몬테카를로는 쉽게 잊어버리는 걸까요 네, 사실 저도 알고 있습니다. 한 번 배울 때, 제대로 배우지 않고, 주먹구구식으로 배우니까, 이모양인 것이죠...그래서 이번에는 제 블로그에 꼭 써놓고 다음에 읽어보도록 하겠습니돠. Mon...
Decision Boundary가 뭔가요? 예를 들어봅시다. classification 문제를 해결하기 위해 데이터를 이용해 학습을 시켰습니다. 간단히, score를 보니까 꽤 높은 편이고, 딱히 오버피팅인 것 같지도 않긴 합니다만, 2차원에 뿌...
등고선이란 말입니다 그냥 contour라고 말하면 헷갈리는데, 지도에서 등고선이랑 같은 개념이라고 보시면 됩니다. 대충 아래 그림처럼, 비슷한 높이에 있는 놈들기리 묶어줍니다. 이런걸 contour라고 하죠. 사실 원래는 를 정리하려고 했던 것이...
python에서 string format 조절하기 python에서 string을 출력할 때, 그냥 값만 출력하는 것이 아니라, 왼쪽/오른쪽/중간 정렬을 사용하거나, 과 같이 앞에 0을 padding하여 출력하는 것 등 다양한 기능등리 포함되어 있...
왜 나는 늘 복습만 하는가? 텐서플로우는 예전부터 조금씩 공부를 하긴 했는데, 자료가 다 여기저기 흩어져 있어서ㅠㅠㅠ여기에 다시 정리해두기로 했습니다. 사실, 솔직한 고민은 좀 있습니다. 가 있는데 굳이 tensorflow를 써야 하나? 필요할까...
머신러닝은 단순하게, '모델(hypothesis)'을 세우고, 이 모델이 맞는지/아닌지 평가하는 cost function을 통해 변수를 조절하는 것을 말합니다. classification의 경우도, '잘 예측할 만한 모델'을 세우고, 이 모델을 ...
classifier의 성능을 어떻게 평가할까요? , 가 각각 있습니다. 이를 활용해서 현재 분류된 결과의 성능을 어떻게 잘 평가할 수 있을까요? 보통 classification을 평가하는 metric들은 binary classification을 ...
multi-class clasification 이전에 배웠던 에서는 True/False 만 판별합니다. 그러나, 이런 binary classification보다는 multi-class classification이 훨씬, 유용하죠. 이를 위해서 를...
association rule? 학부때 통계 수업때 association rule mining을 배웠던 기억이 (어렴풋하게) 있습니다. 어떻게 풀었는지는 기억이 잘 안나지만, 어떤 상황에 적용하는 것이었는지는 대략 기억나요. "사람들이 쇼핑해 간...
color map에서 색깔을 뽑아냅시다. 급하면 'blue', 'red' 이렇게 색깔을 일일이 입력하기도 하지만, 에는 integer list를 넣어주고 보통은 에 있는 칼라맵을 함께 넘겨줍니다. 예쁜 색 조합들이 이미 많이 있거든요. 예를 들면...
legend를 잘 넣어야 글을 덜 적을 수 있습니다. 로 그림을 열심히 그리고 나서, "이 색깔의 모양 저것은 무엇이고..." 하는 식으로 설명을 덧붙이면 매우 피곤해집니다. 이런 짓을 좀 덜 하려면 legend만 잘 넣어도 됩니다. 포스트로 쓸...
seaborn을 이용해봅시다. 일반적으로 python에서 그림을 그릴 때, 를 많이 이용합니다만, 도 괜찮다고 합니다. 특히, 똑같은 그림을 그린다고 해도, 단순히 이 앞에 만 덧붙여줘도 그림이 훨씬 예쁜게 나온다는 장점이 있습니다. 제가 그 차...
missing value를 다뤄봅시다. kaggle에서 데이터를 예측하다 보면, 에러가 아주 많이 발생합니다. 그 이유는, kaggle에서 제공되는 데이터들에 빈 공간이 너무 많기 때문이죠. 그냥 알아서! 빈 공간은 다 제외하고 주면 안됩니까! ...
skewed data를 어떻게 해결할까요. 예측 문제라는 것은 결국 "A로부터 B를 추론하는 것"인데, A의 분포와 B의 분포가 다를 수 있습니다. 아니, 다르게 표현하면, A의 어떤 부분이 B를 매우 예측하는데, 그것이 A라는 변수 혹은 데이터...
data preprocessing 을 잘해보려고 합니다. skewness 해결, MinMaxScaler, robustScaler 등을 처리합니다. missing value도 다루어야 하는데, missing value의 경우는 상황에 따라 달라지는...
continous한 값을 예측하고 잘했는지 어떻게 평가할까요. 그러니까, 내가 예측하려는 것이 집의 가격, 주식의 가격 등 같은 값들이라고 하면, classification과는 다른 식으로 평가해야 합니다. 아주 간단하게는, 내가 예측한 값()과...
classification시에 neural network이 좋다는 것은 너무 당연하고도 명백한 사실인데, neural network는 쓸만한건지 사실 잘 모르겠습니다. regression을 할때, 한번씩 를 사용하는데, 이게 정확도가 지나치게 떨...
kaggle) 집 가격을 잘 예측해봅시다. 이 문제는 간단히 말하면, regression 문제네요. 이전에 풀어본 mnist, titanic의 경우는 classification의 문제에 속했는데, 이 문제는 regression 문제입니다. 다 좋...
간단한, classification을 풉니다. kaggle에 있는 초보자를 위한 컴페티션 중에 이 아이를 골랐습니다. 물론, 이미 끝난 컴페티션이어서, 큰 의미는 없지만, 얼마나 할 수 있는지 보려고 합니다. 아쉽게도, 그래서 kernel이 없습...
mnist 이미지 분류기 만들기 mnist는 이제 너무너무도 유명한 데이터이긴 하지만 아무튼. mnist는 사람이 손으로 0-9까지 쓴 hand-written number digit 데이터입니다. 공개로 풀려 있기 때문에, 많은 머신러닝 초보자들...
movie review분석하기!!! 요즘은 kaggle에 할만한 컴페티션을 찾아 다닙니다. 찾다가, movie review가 있고, 어떻게 해야 하는지에 대해서도 매우 자세하게 나와 있는 것 같아서, 한번 해보려고 해요!! 뭔가 계속 kaggle...
kaggle) bike sharing demand를 맞춰봅시다! 아주 행복하게도, missing value가 없습니다 개좋음!! Linear model로 했을때보다, randomforest를 넣었을때 훨씬 좋게 나옵니다. 사실 너무 당연한 거죠....
python numpy에 다양한 random 함수들이 있는데, 이를 어떻게 이용할 수 있을지를 정리합니다. just do it. 뭐 쓰고 보니 쓸게 많을줄 알았는데 매우 간단하군요. reference
custom score 만들기 에 이미 좋은 Metric들이 많기는 합니다만, 경우에 따라서 제가 직접 scoring을 하고 싶을때가 있습니다. 뿐만 아니라, 제가 직접 만든 metric을 이용해서, model을 선택하고 싶을때가 있습니다. 에서...
말로 하기는 좀 귀찮으니까, 그림을 봅시다 허허. 아래 그림을 보시면, stationary time series와 non-stationary time series가 나타나 있습니다. 간단히 말하면, stationary의 경우는 시간이 변해도, 일...
3d로 플로팅합시다. 예전에 matlab를 쓸 때, 로 뭔가 화려한 surface를 그려낸 기억이 나네요. 비슷하게 여기서도 할 수 있을 것 같아서 찾아보니, 너무 당연하지만 있습니다 하하하핫. 정리하고 보니 매우 간단하기는 하네요 하하핫 wra...
random walk 일반적으로 random walk는 현재의 상태가 이전의 상태에 영향을 받으며 랜덤하게 움직이는 경우를 말합니다. 만약 10 step의 random walk라면, 각각의 값이 따로 있는 것이 아니라, sequential하게 이...
최근에 kaggle에서 뭘 좀 하다가, time series 데이터를 분석할 일이 있었습니다. 생각해보니, 예전에도 datacamp에서 사용했던 적이 있었는데, 아무튼 기본적인 time series 활용법을 정리해두려고 합니당. 우선 제가 참고한...
gradient decent method and plotting with matplotlib datascience school의 자료를 보다가 최적화라는 포스트를 보고, 정리를 해야 할것 같았습니당. 계속 이어지는 자료이긴 한데, 여기서는 gra...
sympy를 사용해봅시다. 고등학교 때 많이 풀었던 최소값/최대값 문제가 생각나시는지 모르겠네요. 그때는 수학 정말 잘했는데 지금은 거의 수포자간지라....아무튼. 그때 극한값을 구하려면 미분을 했었어야 했습니다. 파이썬에서도 방정식을 세우고, ...
inequality 를 matplotlib에 표현하기 요즘 다시 python으로 LP 푸는 법을 다시 정리해보고 있는데, 그리다보니 부등식을 2차원에 그려보는 일이 필요한 것 같아요. 손으로 그리는게 훨씬 빠른데...아무튼. 가능하면 좀 gene...
다시 최적화시간이 생각납니다 하하핫. LP는 Linear Programming의 약자인데, 간단히 말하면 연립방정식의 해를 찾는 것라고 해도 아무 문제가 없습니다. LP의 기본적인 형태는 대략 다음과 같습니다. 목적식이 있고, 이 목적식을 만족하...
constraint가 있을 경우에 optimization 방법 이전에는 constraint가 없는 상황에서, 비교적 간단하게 최적화를 했습니다. constraint가 없는 경우에는 그냥 그려진 objective function만을 미분하여 gra...
scipy를 이용한 optimization. 제가 공부한 포스트에서는 로 importing한 다음 를 이용하는데, 요즘에는 이게 막혀 있는 것 같아요. 묘하게도 반드시 와 같은 방식으로 사용해야 합니다. 아무튼, 이전에 포스팅한 sympy에 비해...
그림에 주석을 달아 봅시다. histogram, scatter plot 등에서 파워포인트처럼 설명을 달아보고 싶을 때가 있습니다. : 그냥 텍스트를 좌표 상에 올리는 식인데, - argument를 함께 넘겨서, 글상자를 만들어줄 수도 있고 : 텍...
quiver plot으로 gradient vector 표현하기 찾다보니, quiver plot이라는 것이 matplotlib에 있더군요. quiver의 뜻은 '화살통'...'진동 등이 떨리는 것'이라고 나와 있는데...무슨 말인지는 잘 모르겠고,...
plt로 그림을 그리는 중에 marker를 사용하다보니 조금 더 예쁘게, 정확하게는 상황에 맞게 그려보고 싶다는 생각을 했습니다. 현재는 아주 간단하게, 커피를 얼마나 먹었는지 패턴을 정리했는데, marker를 커피 icon으로 할 수는 없을까?...
x-axis는 공유하지만, y-axis는 공유하지 않도록 그림을 그리고 싶을때가 있습니다. 이 때 를 통해 이를 가능하게 해줄 수 있습니다. 매우 간단하지만, 저는 자주 까먹기 때문에 제가 찾아보려고 정리해두었습니다 하하하핫. do it 중요한 ...
solving fat-tail with student-t 예측 문제들에서는 사실 이 아이들이 student-t를 따르든지, normal dist를 따르든지 큰 상관이 없을 것 같습니다만(exp등을 따르면 예측률에 약간 차이가 발생할 수는 있지만)...
데이터를 분석하기 전에 개별 데이터 칼럼들에 대해서 데이터 정리를 해줍니다. skewness가 있는지, qqplot상 normality를 가지는지를 체크해보죠. 그런데, 이건 어느 정도 그냥 그림으로 때려 보는 거고, 엄밀하게 'normality...
현재 데이터 분포가 가우시안분포를 따르는가? 다양한 확률분포가 있는데, 그중에서, 수치들을 '가우시안 분포'를 따른다고 가정하고 모델링할 때가 많습니다. 그런데, 이건 가정이잖아요. 편하기는 한데, 정말 해당 데이터가 "가우시안 분포"를 정말 따...
그냥 .std() 같은걸로 하면 안되요? 네, 됩니다. 으로 평균을 구해도 상관없어요. 요런 방법을 유식하게 method of moment라고 한다고들 합니다. 그런데, 여기서는 다른 방법으로 할 거에요. 무엇이냐면, 대략, 가장 그럴법한 놈 찾...
위쪽 오른쪽 등 일부분의 axis만 없애고 싶을때는? axis때문에 그림이 별로 예쁘지 않게 보일 때가 있어요. 삭제해야 괜찮을 때가 있는데, 전부다 삭제하는 건 싫을 때도 있구요. 간단하게 를 해버리면, 까지 모두 없어지는 경우가 있어서, 부분...
3개월동안 마신 커피 데이터를 분석합니다 3월 초부터 6월 19일까지 저는 잠시 대학원을 떠나 집에서 머물고 있었습니다. 저는 집에서는 공부를 못해서 늘 집앞에서 커피를 먹으면서 공부를 했습니다. 문득 카드 사용 내역을 보는데, 이걸 활용해서 뭔...
뉴럴넷이 복잡해서 지금 제대로 그리고 있는지 모르겠을때. 그럴 때, neural network를 그려보면 좋겠다는 생각을 합니다. 에 가 있는데, 이건 좀 다르고, 그냥 간단하게 어떤 node에서 어떤 node로 흘러가는가? 만 보고 싶다는 생각...
확률모형을 이용하여 그럴법한 문장을 만들어봅시다 이 포스트를 참고하여 코드와 내용을 아주 조금 수정하였습니다. 저는 보통 말을 할때, 전체 문장을 다 만든 다음에 말을 하지 않아요. 약간 말을 하면서 뱉어진 단어가, 새로운 단어를 끌고 온다는 느...
간단한 rnn을 그려 봅시다. 이 포스트의 내용을 참고하여, 정리하였습니다. 여러번 포스트에서 반복적으로 얘기하는 것 같기는 하지만, 데이터 예측, 데이터 분석, 머신러닝 아무튼 이런 모든 말들을 축약하면, "A를 활용해서 B를 예측하는 것" 입...
GAN이 뭡니까. 이 포스트는 이 포스트를 참고하여 작성되었음을 명확하게 밝힙니다. GAN은 Generative Adversarial Network의 약자인데, 이를 한국말로 말하면, "생성적 적대적 네트워크"라고 할 수 있는데, 그냥 영어로 G...
sequence classificattion?? 우선, 이 내용은 이 포스트를 아주 많이 참고하여 작성되었음을 명확하게 밝힙니다. RNN으로 만들 수 있는 다양한 모델이 있습니다. 일반적으로는 RNN은 sequence to sequence(기계 ...
model class가 뭔가요. 저는 지금까지 keras를 이용해서, neural network를 설계할 때, 을 사용했습니다. 어차피 제가 만드는 뉴럴넷 모델들은 그저 선형적으로 쭉 이어져 내려올 뿐이었거든요(mnist를 이용한 image cl...
keras로 코딩을 하다가, 와 의 차이가 궁금해서 찾아보고 있었습니다. 그런데 제가 참고한 포스트에서 다음을 언급하더군요. Keras의 Model 클래스 객체와 레이어(Tensor) 객체는 callable 객체. 이게 무슨 말인가? 싶어서 간단...
최근에 Generative Adversarial Network를 공부했습니다. 슥 만들고 보니까, 예전에 한 번 슬쩍 봤던, Auto encoder/decoder와 유사하다는 생각이 들었습니다. - 제가 이전에 했던 것은 GAN을 이용해서 MNI...
원래는 matrix decomposition을 해서, 이후에 또 어디에 쓰일 수 있다, 뭐 이런 부분까지 쓰려고 했는데, 정작 정리하고 나니, 그부분을 쓰는게 모호해지더라구요. 그냥, 필요에 따라서 행렬방정시에서 계산을 좀 효율적으로 하거나 하는...
오늘 또 파이썬을 갈아엎었습니다 사실 python은 매우 많은 종류의 라이브러리들을 쓸 수 있다는 측면에서 매우 강력하지만, 그만큼 라이브러리들의 버전관리, 충돌 문제들이 효과적으로 핸들링되지 못하여, 번거로운 일들이 많습니다. 오늘은 "jupy...
나는 갑자기 왜 jupyter notebook 설정을 바꾸었나 최근에 뭘 코딩하다 보니까, 아나콘다를 새롭게 업데이트해야 되더라구요. 몇 가지 라이브러리만 하나씩 업데이트하면 좋았을 것을, 저는 개념없이, 통째로 코딩해버렸습니다....하하하 그 ...
turtle로 그림을 그립시다 turtle로 gif를 만들 수 있다고 해서 한번 사용해보려고 합니다. 아주 예전에 코세라에서 turtle을 사용한 적이 있는데, 그 이후로는 처음이군요. reinforcement를 요즘 공부하고 있는데, 간단한 그...
reinforcement learning - stochastic world: FrozenLake-v0 이제, stochastic world에서 학습해봅시다. 얼음판에서는 미끄러지기 때문에, 제가 가라는 대로 잘 가지 않아요. 그래서, 이전에는 일...
최근에 jupyter notebook에서 jupyter lab으로 변경했습니다. 그리고 jupyter lab의 까만 화면으로 변경했는데, 바꾸고 보니까, 에서 그림을 그릴 때, tick이 잘 안보이는 문제가 있어요. 기본적으로 는 그림이 하얀색 ...
갑자기 jupyter notebook이 아니라 lab이 실행되었어요. 이유는 모르겠지만, localhost:8888에 접속했는데, 갑자기 jupyter notebook이 아니라, jupyter lab에 접속되었습니다. 흠. 아마도 - 제가 어제 ...
강화학습이란 무엇인가. 우선, 이 포스트는 김성훈 교수님의 강의 중 lecture 1-4까지를 공부하고 정리한 내용입니다. 강화학습은 간단히 말해서, 바둑, 오목, 미로 찾기 등에서 가장 효율적인 action 순서를 찾는 트레이닝 방법이라고 말할...
진짜 게임들에 적용하려면. 우리는 좀전까지 Frozen world를 대상으로 강화학습을 수행했습니다. 그리고 Q(quality) table을 만들어서, 매 스텝이 reward에 얼마나 기여하는지를 측정했죠. 이것이 가능했던 것은, 는 4이고, 는...
매우 간단합니다. 로 그림을 그리다 보면, 가끔 figure를 로 변환하고 싶을 때가 있습니다. PIL이나 다른 라이브러리를 이용해서 이미지에 현재 figure에 손을 좀 보고 싶은데, 그러려면 로 변환해야 하거든요. 아무튼 그럴때 다음 코드로 ...
우선, SVG가 뭔가요. 저는 파이썬으로 코딩하고, 그 결과를 마크다운으로 작성해서 블로그에 올립니다. 보통 파이썬으로 코딩한 결과는 로 저장하는데, 그때 확장자를 매번, 로 합니다. 왜냐면, 이렇게 해야 화질이 항상 높거든요 로 저장하는 것이 ...
두 이미지를 섞어보려고 합니다. cv2, pillow에서 이미지를 섞을 때, 특별한 함수를 쓰던데, 사실 둘다 np.array라는걸 가정하고 보면 이게 뭐가 어렵나 싶어요. 그냥 적당한 weight로 곱하면 되지 안 그렇습니까? 아래처럼 적절하게...
왜 갑자기 image인가요 음...저는 약간 뭘 하다가 늘 삼천포로 빠지는 스타일입니다. 지금도 원래는 을 이용해서 강화학습을 하다가 넘어왔어요. 이게 왜 그런거냐면, 을 이용해서 학습을 할때, 현재 어떻게 되고 있는 상황을 렌더링하는 것이 필요...
plt.figure()의 파라미터 조정하기. 를 사용할 때 사실 보통 만을 쓰기는 하는데, 내부에 보면 다양한 파라미터들이 있어요. 이걸 건드리면 그림을 조금 더 마음에 들게 뽑을 수 있습니다. 사실 매번 그림을 로 처리하는 경우에는, plt.f...
binary string을 string으로 바꿉시다 python에서 직접 bash command를 사용할 일이 있습니다. 저는 module을 사용해서 직접 커맨드를 치곤 합니다. 그런데, 이 때 결과물을 보면, 이 아니라 format으로 들어오는...
그림을 저장할 때, 공백등을 모두 없애서 저장합시다. 차트 같은 것을 그릴 때는 별 문제가 없는데, 차트가 아니라, 말 그대로 이미지, 를 통해서 보여진 이미지를 변형해서 다시 이미지 파일로 넣어줄 때는 좀 문제가 있습니다. margin, pad...
파이썬에서 이미지들을 비디오로 변환하기 파이썬으로 그림을 그리다보면, 비디오를 만들고 싶을때가 있습니다. 예를 들면, scatter 그림을 여러 개 찍어서 일종의 애니메이션처럼 만들고 싶을 때도 있고, 데이터가 추가되면서, optimum이 어디로...
이미지 파일을 gif로 변형합니다. 그동안, 나름대로 를 그대로 비디오로 만들어주는 형식으로 활용을 했는데, 이게 잘 안되는 것 같아요. 그래서, 그냥 이미지 파일들을 죽 만든 다음에, 그 이미지들을 읽어서 비디오로 만들어주는 형식이 훨씬 효율적...
그래프의 변화를 video로 보려고 합니다. 저는 네트워크를 분석하는 일을 연구실에서 많이 수행했습니다. 예전에는 netminer를 이용했는데, 요즘에는 를 많이 이용합니다. 아무튼, 네트워크가 어떻게 변하는지는 그림보다는 연속된 그림을 통해서 ...
python - os lib 사용하기 코딩하다 보면, 로컬에 있는 파일을 지우고, 만들고 싶을 때가 있습니다. 저의 경우는, 비디오나 gif를 만드려고 이미지를 여러 개 만들 때가 있는데, 이럴 때 이미지들은 다 임시로 만들어진 파일들이니까요, ...
binary data는 무엇인가? 엄밀하게 따지면, 모든 data 혹은 파일은 binary data입니다. - 모든 텍스트파일은 binary file, - 그러나, 모든 binary file이 텍스트 파일인 것은 아님 아무튼, 그냥 binary로...
intro http와 https 간의 차이점을 정리하고 있었는데, https는 공개키 암호화방식을 사용하여 데이터를 암호화한다고 하더라고요. 그래서, 여기서 '공개키 암호화방식'이 무엇인지 정리해보려고 합니다. 뿐만 아니라, 간단하게 python...
Hash function 우선 HASH라는 것은 "어떤 특정한 input에 대해서 어떤 output을 만들어내는 함수"를 말합니다. 여기서 중요한 것은 가급적 input에 따라서 output이 달라지게 표현될 수록(서로 다른 input에 대해서 ...
intro 예전에 작성해둔 파이썬 코드를 가져오고 싶을 때가 있습니다. 이걸 어떻게 할 수 있는지 정리했습니다. import code 일단 해당 코드 파일이 현재 코드파일과 같은 경로에 있어야 합니다. 코드 파일명을 그대로 import 하면 됩니...
intro - main function python 코드파일을 특히, 라이브러리의 python 팡리들을 보면 다음 코드를 종봉 보실 수 있습니다. C로 코딩을 해보신 분들은 이를 보면 바로 과 같은 코드가 떠오를 수 있죠. 이 아이는 정확하게 무...
간단하게 지도에 내 위치를 표시해봅시다. 간단하게, 지도에 위치를 표시해보려고 합니다. 이라는 라이브러리는 Open Street Map을 이용해서 지도를 활용할 수 있게 해줍니다. - 그냥 오픈소스로 된 지도라고 생각해도 상관없습니다. 단 결과를...
intro 지난 번에는 아주 간단한 Flask 사용법을 알아보았는데, 이번에는 좀 더 복잡한 것을 알아보려고 합니다. 이 포스트의 내용을 많이 참고했습니다. html 상속하기 참고한 포스트에서는 html을 상속하는 형태로 html을 만들었습니다....
intro 연구실 과제로 간단하게 분석 도구를 만들어야 하는데, PyQT로 만들수도 있겠지만 별로 모양이 예쁘지 않은 것 같고요. 가능하면 웹으로 구현을 해보는 게 저한테도 도움이 될 것 같다는 생각이 들었습니다. 그래서 처음에는 django를 ...
flask로 공부한 내용을 마크다운으로 작성하고, 지킬로 렌더링을 하려는데. 자꾸 안되는 겁니다. 발생하는 에러는 대략 다음과 같아요. 를 표시하려고 하면 자꾸 에러가 발생하는 것이죠. liquid liquid는 지킬에서 페이지를 렌더링할 때 이...
matplotlib와 flask를 연결해보려고 합니다. 처음에는 매우 간단하게 다음의 순서로 진행하면 된다고 생각했는데, 잘 안되는 것 같아요. - call url - 를 이용해서 이미지 저장 - 을 사용하여 html 리턴 sendfile 브라우...
flask 서버에 multi-threading 세팅하기 flask를 서버로 사용하면서, html 페이지에 여러 개의 matplotlib의 figure를 embed하고 싶었습니다. 다음과 같은 html template가 있을 경우 mean, var...
flask가 텍스트 파일을 읽고 웹페이지에 표시하게 해줍시다. 저는 이후에 excel을 읽어서 데이터 처리를 한 다음 웹페이지로 표시해주는 프로그램을 만들어보려고 합니다. 그러려면 아주 간단하게 flask 내부에서 파일을 읽고 보여줄 수 있는지를...
flask와 pd.DataFrame 연동하기 저는 데이터는 일단 엑셀 파일로 들어온다고 가정합니다. 따라서 를 이용해서 엑셀을 dataframe로 변환해서 처리하는 것이 반드시 필요하죠. flask에서 dataframe를 연동하는 것에 문제가 없...
intro 와 같은 방식으로 url에 값을 넘겨서 그 값에 따라서 동적인 페이지를 만들어서 진행할 수도 있지만, 웹페이지 에서 직접 값을 입력받는 형태로 만들어보고 싶었습니다. 예를 들면 다음과 같은 방식으로 처리하고 싶은 것이죠. 우선 GET와...
callback 함수란 무엇인가? callback 함수가 무엇인지 모르겠어서 정리해보기로 했습니다. 여전히, higher-order function과의 차이점을 잘 모르겠는데 혹시 아시면 알려주시면 감사하겠습니다. 한글 위키피디아 한글 위키피디아...
파이썬에서 시뮬레이션해보기 원래는 페트리넷을 이용해서 시뮬레이션을 돌려보려고 했습니다만, 별로 쓸만한 것이 없는 것 같아요. SNAKES 라는 라이브러리가 있기는 한데, commit이 안된지 1년이 넘었기도 하고, 약간 python2 기반인 것 ...
intro 네트워크 분석을 하는데, 사람 이름이 많이 나와서 이를 코드화 하려고 해요. 그냥 뭐 이렇게도 할 수 있겠지만, 이보다는 사람 이니셜로 변경하면 좋을 것 같더라고요. 그래서 한글을 영어 이니셜로 변경(이승훈 ==> LSH) 하려는데 그...
어떤 분포로 시뮬레이션을 해야 하나 저는 business process를 연구합니다. 요즘에는 business process에서도 simulation쪽에 관심이 있는데, 개별 단위의 activity를 어떤 분포로 모델링해야 하는지를 고민하고 있습...
intro 연구하다가 간단하게 시뮬레이션을 돌릴 필요성이 있어서, 시뮬레이션을 파이썬에서 어떻게 지원하는지를 알아보았습니다. simpy라는 라이브러리가 있구요. 일단 이걸 설치합니다. simpy SimPy is a process-based dis...
intro multiple processes want to use a resource of limited capacity. 복수의 프로세스는 제한된 용량을 가진 리소스를 서로 사용하려고 합니다. 아주 많은 경우가 이에 포함되는데, 은행 창구, 주...
process interaction 이전에는 프로세스 간의 상호작용에 대해서는 고려하지 않았습니다만, 사실 하나의 프로세스가 수행되고 있을때, 다른 프로세스와의 상호작용이 있을 수도 있습니다. 간단하게, 하나의 프로세스 수행 중에, subproc...
np.random을 사용합시당. 라는 코드를 발견했습니다. exponential 분포를 표현해주는 코드인 것 같은데, 에 비슷한 코드가 이미 있지 않을까? 하는 생각이 들었습니다. 다음 아래 코드는 동일합니다. - random에서는 를 사용하고,...
example을 풀어봅시다. 정확히는 푸는 것은 아니고, simpy - example를 보면 다양한 예제가 있습니다. documentation을 읽어보는 것도 좋지만, 제 기준으로는 예제를 몇 번 풀어보면 더 잘 이해할 수 있을 것 같아요. 또 ...
간단한거긴 한데.. 여기에 비슷한 코드가 있습니다. 차가 랜덤하게 세차장에 오고, 세차장에서 세차하고 차를 내보내는 형태의 아주 쉬운 시뮬레이션입니다. 단, resource를 class로 만들어서, 좀 편하게 사용할 수 있게 만들었다는 것이 차이...
args, kwargs 를 정리해봅시다. 사실 decorator를 쓸 때가 아니면, 아직까지는 반드시 , 가 반드시 필요하다고 느낀 적이 없기는 한데, 다른 라이브러리들을 보다보면, , 를 사용하는 일들이 좀 있어요. 그래서 이참에 좀 다시 정리...
중복없이 n개의 값을 뽑는 방법 바구니에 n개의 서로 다른 공이 들어 있습니다. 이 공에서 3개의 공을 뽑고싶은데 어떻게 코딩해야 하나요? 처음에는 약간 어렵게 다음처럼 해야 한다고 생각했는데요. 간단하게 그냥 있는 함수를 쓰면 됩니다 하하핫.
covers 여기서는 resource 중에서 container를 활용해봅니다. simpy.container? Resource for sharing homogeneous matter between processes, either continuous...
우선순위에 따라 업무 처리하기 모든 업무에는 우선순위가 있습니다. priority가 2인 일을 하는 중에 priority가 1인 일이 들어오면, 1인 일을 우선 처리하고 다시 2로 돌아가야 하죠. simpy에서도 이를 지원하며, 이를 어떻게 활용...
intro 영화관에서 티켓을 파는 프로세스를 모델링하려고 합니다. 이전에 모델링한 예시들과 차이점이 있다면, 이 예시에서는 shared event를 이용합니다. 즉, 간단하게 이벤트를 일종의 전역변수로 두고, 이벤트가 succeed가 되면 다른 ...
앞서 말씀드린 바와 같이 에서는 Resource, Container, Store 라는 세 가지 종류의 리소스가 있습니다. - > Resources that can be used by a limited number of processes at a ...
dictionary 보다 인덱싱이 편한 그것 솔직히 가 매우 유용한 자료구조이기는 한데, 매우 불편한 것이 값을 indexing할 때죠. 매번 과 같이 인덱싱해야 하는데, 이거 너무 귀찮아요. 따옴표 치는 것만 없어도 생산성이 죽 올라간다고!! ...
intro python에서 변수들을 출력할 때 다양한 형태로 출력하는 방법을 배워봅니다. older formatting 과거 python버전에서는 을 이용해서 다음과 같은 형태로 출력했습니다. 다만, PEP3101에 의하면, 이는 이후에 없어질 ...
intro simpy의 를 파보겠습니다. 어떤 일을 수행할 때, 모든 일에는 우선순위가 있습니다. 마찬가지로 에서 값을 빼낼 때도, 우선순위에 맞춰서 빼낼 수 있으면 좋을 것 같습니다. 는 에서 할 때, 내부 item의 우선순위에 따라서 빼내는 ...
example illustration 다수의 프로세스가 동시에 수행되고 있을 때를 생각해봅시다. - Process A는 수행 중에 message1를 Process B에 보냅니다. - Process B는 알아서 수행하고 있다가, Process A가...
arrow의 특성 제어하기 로 그림을 그린 다음에, 설명을 추가할 때 종종 를 사용해서 화살표를 그려줍니다. 그런데, 이때 화살표 특성을 추가하는 것이 낯설어서 기록해두려고 작성했습니다. 이렇게 변경할 수 있습니다. 하하핫 wrap-up 찾아보니...
why read google sheet 분석해야 하는 데이터가 구글 시트에 있습니다. 물론 구글 시트에 있는 데이터를 csv로 다운받아서 분석해도 되기는 하는데, 그보다는 가능하다면, 구글에서 바로 긁어와서 처리하고 싶었습니다. 사실, 이게 더 ...
dataframe을 function으로 그룹바이하기 을 사용하다보면 필요에 따라서 groupby를 사용할 일들이 있습니다. category로 구분된 칼럼이 존재한다면, 문제가 없지만 category로 된 칼럼이 없을때, 또 굳이 새로운 칼럼을 만...
그림에 tick 표시하기 에서 그림을 그릴 때, tick을 몇 개나, 또 어떤 label로 표현할지를 조절하고 싶을때 를 사용합니다. 간단하게 다음 코드를 보면 tick을 표시할 값, 그리고 해당 위치에 어떤 label을 작성할지 함께 넘겨줍니다...
파워포인트에서 '맨 앞으로 옮기기'같은 거요. 파워포인트에서 폴리곤을 여러 개 그리고 뭐가 제일 앞에 나오는지, 뭐가 제일 뒤에 나오는지를 정하는 일이 있잖아요. 그럴때 파워포인트에서는 단순하게 '맨 앞으로 옮기기'뭐 이런걸로 했는데, matpl...
plt.bar 의 경우는 값 덩어리를 넘겨주면 알아서 bins으로 구분하여 그려주는 반면 의 경우는 x, y가 각각 존재하는 값을 넘겨준다고 생각하면 됩니다. 역시나 말로 설명하면 이상하군요. 아무튼 아래처럼 그려주고 변경할 수 있습니다.
plt.hist 히스토그램은 아주 간단하게, 값이 들어있는 list를 input으로 받아서, 제가 입력한 bin의 개수만큼 바구니로 구분하여 bar 차트로 그려주는 것을 말합니다. 뭐 더 말할 것이 없긴 한데... 다음을 합니다. - plt.hi...
파이 차트를 그립시다. 전체 중에서 % 비율이 어떻게 되는지 보고싶을 때는 pie chart를 그려 보는 것이 시각적으로 좋습니다. 그래서 간단하게 pie chart를 그리고, 특성을 어떻게 조절할 수 있는지 그렸습니다. 다음을 구현했어요 - 파...
pylint aka 시어머니. c, java 등을 코딩하다가 파이썬으로 코딩하기 시작하면, 갑자기 신세계에 당도한 기분이죠. 변수에 타입을 지정할 필요도 없고, 알아서 잘 처리해주니까요. 이 문제는 짧게 짧게 코딩할 때는 별 문제가 없지만, 길게...
네트워크를 다양한 레이아웃에 따라서 2차원에 그리기. 에서 , 등으로 그림을 그릴 때는 이미 axis에서 어떤 좌표에 그림을 그리면 될지가 명확하게 나와 있습니다만, network에서는 개별 node에 좌표값이 없기 때문에 어디에 그려야 하는지 ...
대부분의 plt 구성요소에서는 그냥 다음과 같이 진행합니다. 당연히 에서도 로 넘겨주면 된다고 생각했는데, 생각처럼 되지 않습니다. stackoverflow에도 약간 대답이 부실하더라구요. 처음 만들 때 값을 설정해서 한번에 넘겨주는 방식이 아니...
파이썬으로 코딩할 때 코딩을 깔끔하게 해주는 것은 매우 중요합니다. 단 두 줄, 세 줄을 쓴다고 하더라도 개별 두줄이 어떤 의미를 가지는지 구분해서 작성해주면 가독성이 훨씬 높아집니다. 특히, 코딩을 할때 많이 해주는 부분이 바로 , 구문입니다....
아주 간단합니다. 사실 너무 간단해서 굳이 이걸 포스팅할 필요가 있는가 라는 생각도 들긴 하는데..... 다음처럼 해당 node의 정보값(정확히는 attr dictionary)에 그대로 넣어주면 됩니다. 단 edge는 tuple이 key값으로 들어감
네트워크에서 community 찾기 일단 이건 일종의 clustering이라고 생각하셔도 상관없습니다. 일단 점과 선으로 된 네트워크를 구성했을 때, 비슷한 집단끼리 묶어보고싶잖아요. 전체 네트워크만 보는 건 큰 의미가 없으니까 이걸 좀 비슷한 ...
리스트 내부 값을 섞읍시다. 간단하게 말 그대로, 리스트의 값들을 죽 섞는 것을 말합니다. 가끔 이런게 필요하죠. 를 이용하면 되긴 하는데, 아쉬운 것이, 값을 리턴해주는 형식이 아닙니다. 즉, 전달받은 array를 셔플해서 원래 메모리에 그대로...
bipartite graph bipartie graph는 set A와 set B 간에는 연결되는데, A의 node a들 끼리 연결되거나, B의 node b들 끼리 연결되는 일이 없는 경우를 말합니다. 예를 들면, set A는 사람이고, set B...
havelhakimigraph networkx에 라는 랜덤한 bipartite 그래프 생성기가 있습니다. 만약 bipartite set가 각각 5개, 3개 라면, 그 크기의 각 node의 deg sequence를 넘겨주면 그 deg들에 맞는 gr...
노드를 바꿔주기 networkx에는 꽤 괜찮은 random graph generator들이 많이 있습니다. 단 만들 때부터 node set를 정하고 만들기는 조금 어려워요. 그렇다면 일단 만든 다음에 바꿔주면 됩니다 하하핫 쉽죠. 바꿔주는 방법이...
정수를 여러 그룹으로 쪼개죠 이미 스택오버플로우에 잘 정리되어 있습니다. 제가 지금 정수를 다른 수들로 쪼개는 일이 필요해서 이용했는데, 그 참에 정리를 하려고 썼습니다. 참 신기하게, 코딩을 제대로 하려고 하다보면, 수학적인 개념들이 좀 들어가...
DiGraph DiGraph는 방향성이 있는 네트워크를 말합니다. 일반적인 graph라면 edge를 그냥 그리면 되는데, 방향성이 있는 graph는 화살표를 잘 그려줘야 합니다. arrow style은 여기에 볼 수 있는데, 각각 어떻게 나오는지...
random tree 만들기 random tree를 만들거에요. tree라는 것은 parent, children를 가지는 스트럭쳐죠. 저는 parent, children로 node를 접근하는 건 만들지 않았습니다만, random 하게 tree를 ...
title 위치 바꾸기 다른 일에는 별 문제가 없는데, heatmap을 그릴때는 종종 문제가 됩니다. 특히 xtick을 위쪽으로 두면 다음 그림에서처럼 xtick과 title이 겹쳐서 보기 흉해져요. 그림을 보면, title과 xtick이 겹쳐 ...
mode를 찾읍시다. 대상 데이터의 분포가 normal, exp, poisson 등 의 분포인 것을 확실하게 알 수 있으면 좋겠지만, business 환경에서는 이것을 아는게 좀 어려워요. 일단 데이터의 수도 적으니까요. 그래서 보통 triang...
svg를 png로 바꾸고 있습니다. graphviz를 사용할 때, svg, png, pdf 로 모두 저장할 수 있지만, png로 저장할 때 dpi가 매우 낮게 설정되는 일들이 발생합니다. 어떤 글에서는 를 사용해서 dpi를 graph의 attri...
runtimerror 예전에도 맥에서 graphviz를 잘 실행했는데 오늘은 뭐가 잘 안되더군요. 에러는 다음과 같았습니다. 잘 모를 때는 그냥 검색을 해보면 되는데, 검색해보면 스택오버플로우에서 아주 잘 정리된 답변이 있습니다. 아래를 순서대로...
인간관계를 분석합니다. 이번에 파이콘 한국 2018에서 발표하게 되어 발표자료를 준비하고 있습니다. 일단 여기에는 그림은 들어가지 않을 예정이고, 코드만 정리해서 보여줄 예정입니다. 발표자료는 여기서 보실 수 있습니다. 아무래도 필요한 부분들을 ...
파이콘 너무 좋아요 쿠쿠 작년에 이어 올해도 파이콘에 다녀 왔습니다. 작년에는 참가자였는데 올해는 어쩌다보니 발표도 하게 되었습니다. ‘어쩌다보니’라는 말이 약간 수동적이고 방어적으로 표현된 것 같은데, 정확하게는 작년에 파이콘을 다녀온 다음에 ...
tree에 적합한 layout을 찾습니다. networkx에는 다양한 layout이 있습니다만, tree 구조에 적합한 레이아웃은 없어요(정확히는 없다고 생각했습니다). 그런데 사실 없다는게, 제 입장에서는 말이 안되서 한참 찾았는데, 찾다보니 ...
random하게 tree를 만듭니다. 예전에 제가 직접 random하게 tree를 만들어주는 코드를 만들었습니다. random하게 각 level별 node의 수를 정하고 children의 수도 랜덤하게 정해서 진행했는데, 생각보다 만드는데 시간이...
rescaling layout networkx로 네트워크를 시각화할 때 다양한 layout을 씁니다. 보통 쓰는 spring, spectral, shell 등의 레이아웃에는 문제가 없는데, 아래와 같은 layout을 사용할때는 0.0과 1.0사이...
tree에서 Root 찾기 networkx의 를 사용해서 tree를 만들고 관리하는데, 그때 적절한 root를 찾는 것이 중요해요. 또 해당 root를 중심으로 다른 node들이 얼마나 멀리 떨어져 있는지를 파악하는 것도 중요하구요. 그래서 아래...
jupyter notebook에 그림을 넣고 싶어요. graphviz로 그림을 만드는 함수를 다음처럼 정의했습니다. 그런데, 저는 경우에 따라서 한 셀 내에서 여러 그림을 동시에 보여주려고 하고 있거든요. 따라서 다른 방법을 모색했습니다. usi...
인트로 저는 jupyter notebook에서 코딩을 합니다. 경우에 따라서, jupyter notebook이 불편하다고 느끼는 사람들도 있어요. 전통적인 IDE들과는 다르게, 브라우저에서 돌아가는 것도 그렇고, cell별로 코딩을 하는데, ce...
간단합니다. 보통 때는 상관이 없는데, tree 구조를 그릴 때는 graphviz의 레이아웃이 그림이 더 이쁘거든요. 그래서 간단하게 변경하는 코드를 추가합니다. 두잇 간단합니다. 밑에 주석처리한 코드는 그림을 원하는 곳에 저장하고 싶을 때 씁니...
edit-distance "abc", "abcd"는 얼마나 비슷할까요? 혹은 정량적으로 어떻게 비슷한 정도를 측정할 수 있을까요? 간단하게 두 스트링을 비교해보면 캐릭터 하나만 추가되어있는 것을 알 수 있습니다. 즉, '하나만 지우면 같아질 것 ...
set가 빠릅니다 만약 해당 데이터 set이 unique하고 세트에 있는지 없는지 찾아야 하는 일이 많다면, 무조건 set로 처리하시는 것이 좋습니다. 아무튼, python3에서 지원하는 set operation을 한번 정리하는 게 좋을 것 같아...
serialization 간단하게 말하자면, 보통 데이터 구조, 함수, 객체 등을 다른 곳으로 전송해야 할 때(네트워크 통신으로 보내거나 혹은 다른 컴퓨터에 저장하는 것이든 무엇이든), 이를 일관적으로 유지하기 위해서 데이터를 특정한 포맷으로 변...
성능을 체크합시다. 저는 jupyter notebook에서 대부분의 코드를 작성합니다. 남들처럼 vs code를 쓰거나 atom을 쓰거나 하지 않고 jupyter notebook을 고집하는 이유는, 결과를 바로바로 확인하면서 코딩하기 편해서겠죠....
두 함수의 성능 비교하기. 코딩을 하다가 성능을 테스트할 일들이 종종 있잖아요. 예를 들어서 이 부분이 좀 느린 것 같은데 정말 그런가? 뭐 그렇게 테스트 할 일들이 있습니다. 그냥 귀찮아서 보통은 다음으로 간단하게 처리할 때도 많죠 그런데 이건...
assert: 강하게 주장하기 는 한국말로 "강하게 주장한다" 정도로 번역될 수 있습니다. 코드에서 도 비슷합니다. 어떤 조건이 부합되지 않을 경우 강하게 문제가 발생했다는 것을 전달하는 명령어를 말합니다. 간단하게, 아래와 같이 사용하죠. 아래...
concurrency vs. parallelism 우선 늘 헷갈리는 정보부터 정리하고 가겠습니다. 예전에 안다고 생각했는데 뒤돌아서면 또 잊어버려요. Concurrency(동시성)과 parallelism(병렬성)은 다른 개념입니다. 그림으로 이해...
f-string in python python3.6에서 PEP498이 추가되었습니다. 간단히 말하면 스트링 포매팅에 새로운 방법이 하나 추가되었습니다. 기존의 방식은 원래 다음과 같았죠. 저는 첫번째 방식보다는 두번째 방식을 주로 썼습니다. 첫번...
python에서 c 코드를 읽어옵시다. 여기에 있는 내용을 참고했습니다. 새로운 부분은 없다고 봐도 됩니다. 영어를 한글로 바뀌었다는 것 정도? 아주 사소하죠. 흔히들 말합니다. 일단 크게는 파이썬으로 다 만들고 그 다음에 계산이 오래 걸리는 특...
이상한 짓을 합니다. 저만 그러는지는 모르겠는데, 저는 숫자 4개로 구성된 차 번호판을 보면 사칙연산을 해보는 버릇이 있습니다. 제가 공대에 속해 있어서 그런지는 모르겠는데, 제 주위에도 이런 친구들이 몇몇 있습니다. 아무튼, 하다보면 대부분 되...
토끼와 거북이 누가 더 빠를까요. python과 julia중에서. how to compute pi - spigot alogirithm pi를 계산합니다. 원주율을 말합니다. 빅파이 먹고 싶네요 아무튼, 딴생각을 하다가 pi는 어떻게 계산하는지가 ...
요즘 julia를 써보고 있습니다. '왜 써야 되냐?'라고 물으면 음, 그냥 취미생활에 가까운 것 같아요. 아무튼 julia를 써보니, 다른 라이브러리를 쓰지 않았을때 pure python과 pure julia는 속도의 차이가 약 100배 정도 ...
pipeline?? R이나 julia를 써보신 적이 있으신 분들은 아시겠지만, 이 두 언어에는 pipeline이라는 개념이 있습니다. julia의 경우 대략 다음처럼 사용됩니다. - 값 |> 함수1에 적용 |> 함수2에 적용 |> 함수3에 적용 ...
self-modifying code self-modifying code라는 개념이 프로그래밍에 있습니다. 간단히 요약하면, 프로그램 중에 프로그램 소스 코드를 바꿔서 프로그램을 변경하는 것을 말하는 것이죠. 예를 들어 기존에 가 정의되어 있었는데...
serialization합시다 Data Serialization은 구조화되어 있는 데이터(리스트, 딕셔너리, 객체 등)를 특정 포맷으로 밀어 넣는 것을 말합니다. 여기서 특정 포맷이란 XML, json, yml 등이 포함되구요. 특히 서로 다른 ...
what is pyspark pyspark는 apache spark를 python에서 실행하기 위한 api입니다. 위키피디다에는 다음과 같이 소개되어 있습니다. Apache Spark has as its architectural foundatio...
introduction Go로 구현하는 블록체인을 참고하여 정리했습니다. 만약 제 포스트가 유용하다면, 이는 제가 참고한 블로그 덕분임을 미리 밝힙니다. 또한 해당 블로그는 블록체인에서의 몇 가지 개념을 다음과 같이 매우 명쾌하게 설명하고 있습니...
intro 최근에 networkx github에 이슈를 하나 날렸습니다. networkx의 모든 layout(spring, shell 등)은 딕셔너리(key: node label, value: (x, y))로 리턴이 되는데, 이라는 함수는 np....
python에서 숫자를 정확하게 다룹시다 pyconkr2017에서 발표되었던 보다 정확한 숫자 계산이라는 발표의 내용을 정리해 봤습니다. 특히 해당 발표의 발표자분은 8퍼센트의 CTO이십니다. 숫자를 잘 다루어야 하는, 특히 소수점 단위까지 매우...
intro 지난번에 아주 간단한 블록체인을 만들었습니다. 물론 1) 블록의 생성주기도 컨트롤되지 않고 2) http등을 통해서 다른 서버들에게 블록이 나누어져 저장되고 있지도 않으면서, 과연 이것을 블록체인이라고 부를 수 있나? 싶지만 뭐 그래도...
너는 왜 또 갑자기 curl을 정리했느냐. 왜 갑자기 cURL인가요? 라고 물으실 것 같습니다. blockchain을 좀 파고 있었는데, 중간에서 블록체인을 만들고, mining하고 할 때 http프로토콜을 이용하거든요. 그런데 이때, 터미널에서...
decorator?? 우선 decorator가 무엇인지 모르는 분들에게 decorator가 무엇인지 알려줍니다. 장식해주는 놈 입니다. 하하하하핫. 우리가 함수를 간단하게 짜고 그냥 앞에 만 붙여주면 알아서 더 좋은 놈으로 만들어주는 종류의 아이...
what is id function?? 저도 잘 사용하지는 않는데, 파이썬에 라는 built-in 함수가 있습니다. 해당 펑션에 object를 넣어주면, 해당 object가 위치한 메모리 주소를 리턴해줍니다. C++에서 포인터를 출력하면, 메모리...
깊게 복사했나요 얕게 복사했나요 파이썬에서 가장 많이 쓰이는 컨테이너는 당연히 와 입니다. 리스트와 딕셔너리죠. 자주 쓰이는 만큼, 사실 아무렇게나 쓰이는 것일지 몰라요. 제 이름은 '이승훈'입니다. 또 제 아이디는 'frhyme'이죠. 이승훈도...
우선 본 포스트는 전적으로 Learn Blockchains by Building One을 참고하여 진행됩니다. 이 포스트에 아주 작은 도움이라도 받았다면 그 모든 고마움은 제가 참고한 포스트에서 모든 것을 가지고 있음을 다시 말합니다. - 또한 ...
url을 parsing합시다. urllib이라는 라이브러리가 있습니다. 저는 웹에서 데이터를 긁어오는 짓을 많이 하지는 않고, 해도 를 사용할때가 더 많기는 한데, 아무튼. 기본적으로는 해당 url의 데이터를 가져오기 위해서 을 많이 사용합니다....
start and fail. 원래는 selenium을 이용해서 직접 scopus에서 데이터를 일일이 가져오는 식으로 처리하려고 했습니다만, 혹시나 해서 찾아보니, 이미 scopus를 편하게 쓸 수 있는 라이브러리가 만들어져있었습니다. 일단 설치합...
automate your work 데이터를 웹에서 긁어오고 싶은데, 너무 번거롭다는 생각이 들었습니다. 저는 좀더 게을러지고 싶고, 그러기 위해서는 저보다 컴퓨터에 일을 많이 시키는 것이 더 필요하다고 생각됩니다. pycon2017에서 [[Dan...
intro 웹에서 데이터를 가져오고 있습니다. 찾아보니 html문서를 파싱하는데는 가 매우 유용한다는 이야기가 있어서, 이 이아이를 간단하게라도 사용해보려고 합니다. beautifulsoup4 Beautiful Soup is a Python li...
compose network with weight 모든 네트워크를 합쳐서 관리하는 것이 아니라, 분리해서 관리하다가, 필요할때만, 네트워크를 합쳐서 관리하는 것이 더 효율적일 때가 있습니다. 예를 들어서, 연도별로 네트워크를 따로 보는 것이 필요...
intro 저는 지금 텍스트 분석을 하고 있습니다. 이 과정에서 주어진 문장들에서 (subject, verb, object)의 형식으로 요소를 추출해내는 방법을 찾고 있습니다. 물론 를 써도 되는데, 사실 얘는 약간, 너무 덩치가 크고, 무거워요...
intro Genetic algorithm에 대해서 예전에 수업때 사용해본적도 있고 했지만, 다시 한번 공부해보기로 했습니다. 또 예전에 C++로 코딩할 때와 다르게 python으로 코딩하면서 부터는, 알고리즘을 구현하는 것이 상대적으로 쉬워서,...
intro 왠지, 또 이상한 걸 하게 된것 같은데요. 파이썬으로 코딩할때, 수를 출력할 때면, 다음처럼 출력됩니다. 이게 너무 길기도 하고, 끊어읽을 수가 없어서 어느 정도로 큰지 가늠하기가 좀 어려웠습니다. 그래서, 수를 입력받고 해당 값을 한...
intro 사실, 저는 를 사용해서 코딩하는 것보다는, list를 사용하는 것이 훨씬 익숙합니다. , , 를 이용하면 제가 원하는 형태의 코딩을 꽤 빠르게 할 수 있거든요. 그래서 를 활용해서 좀 더 복잡한 계산들을 빠르게 끝낼 수 있어요. 아마...
intro 최근에 최적의 tree구조를 찾아내는 연구를 수행하고 있습니다. 그 과정에서 처음에는 genetic algorithm을 활용하여 최적화로 풀어보려고 했는데, 이 방법 외에도 강화학습을 쓸 수 있지 않을까? 라고 막연하게 생각이 되었어요...
intro monte-carlo tree search를 공부해보던 중에 tree구조를 사용해볼 필요성이 생겼습니다. 물론 를 이용해서도 비슷하게 만들 수 있지만, 이때는 find parent, find children 등에서 약간 불편함이 발생하...
intro 요즘 json, xml 등을 사용하는데, 그냥 python의 기본 print로는 예쁘게 출력되지 않는 것 같아요. 그래서 몇 가지를 사용해서 좀 예쁘게, 정확히는 사람이 인지하기 쉽게 출력해보는 것을 목적으로 합니다. pprint pp...
intro 저는 파이썬으로 코딩할 때, class를 잘 만들지 않습니다. 여러 가지 이유가 있을 수 있겠지만, 기존에 잘 구성된(남이 만든) class를 가능하면 쓰려고 하고, 또 제가 쓰는 라이브러리들은 대부분 데이터 분석에 가까운 것들이라서,...
intro recursive하게 그래프를 만드는 코딩을 하고 있습니다. 처음에는 a -> b -> c -> 로 시작하는데, 각 노드가 확장이 가능할 경우, 해당 노드는 확장됩니다. 이 과정에서, 각 node에 이름을 붙여야 하는데, recursi...
intro 다들 IDE를 뭘 쓰시는지 모르겠습니다만, 저는 jupyter notebook을 사용하고 있습니다. 다양한 장점이 있지만 테스트를 하면서, 코딩을 하는데 최적화되어 있다고 생각해요. 또한 마크다운과 코드를 함께 쓸 수 있기 때문에 협업...
intro 를 이용해서, 일정 확률을 이용해서 random하게 sampling할 때가 있습니다. 코드로 표현하면 다음처럼 되겠죠. 어, 근데 결과가 이상합니다. c가 터무니 없이 많이 나오네요. 공식 문서를 보면 다음과 같이 되어 있습니다. 세번...
예제를 봅시다. 매우 간단한 문제기 때문에 설명없이 바로 들어갑니다. 다음처럼 간단한 딕셔너리가 있고, 이를 의 contstructor를 이용해서 바로 변환해준다고 합시다. - 우리의 마음같아서는 가 index가 되고 , , 가 칼럼이 되기를 희...
intro 간단하게 자연어 처리를 좀 하고 있습니다. 영어를 처리하고 있는데, 이 과정에서 영국식 영어와 미국식 영어가 섞여 있는 것을 발견했어요. 그러니까, 이런 식이죠. organisation, organization 의미는 같지만, 형태는 ...
intro 다들 simulation을 무엇을 이용해서 하시는지 모르겠네요. 물론 잘하는 사람은 excel만 가지고도 잘 할 수 있습니다. 물론 그럴 필요가 있나? 싶기는 합니다만. 저는 를 이용해서 시뮬레이션을 돌립니다. 물론 제가 하는 시뮬레이...
intro business process, 특히 BPMN을 시뮬레이션할 때, and join, any of it 을 사용해야 하는 일들이 있습니다. 주어진 조건 중에서 무엇이든 만족하면 끝내거나(any of), 주어진 조건을 모두 만족하면 끝내거...
intro 저는 코딩을 jupyter notebook으로만 합니다(이 얘기는 매번 하는 것 같기는 합니다만). 코드 작성 중에 코드를 테스트 해보기도 편하고, 지금 잘 되고 있는지를 파악하면서 코딩하기가 편합니다. - 단, 그래서 여러 cell로...
intro local에서 jupyter notebook을 쓰다가, 이제는 google collaboratory로 완전히 넘어가기로 결정했습니다. 다양한 이유가 있지만, - 우선 구글 드라이브 내에 쥬피터 노트북+관련 문서 들을 함께 관리할 수 있...
intro 저는 매우 오랫동안 jupyter notebook을 사용해 왔습니다(정확히는 지금은 jupyter-lab을 사용하고 있기는 한데). 아무래도 코딩을 주기적으로 체크하면서 코딩을 하다보니까, 또 그래야 하는 일이기도 하고, 보통 jupy...
intro 저는 networkx를 활용해서 네트워크를 그리고, 분석하고, 또 만들고 아무튼 잡일을 아주 많이 합니다. 그런데 네트워크를 그린 다음, 해당 네트워크에서 특정 node A와 특정 node B가 연결되어 있는지 확인하는 방법을 정리했습...
intro spacy 에서는 간단한 Named Entity Recognition을 제공해줍니다. Named Entity Recognition 예를 들어서 다음과 같은 문장이 있다고 할때 Jim bought 300 shares of Acme Cor...
intro 이제는 와 를 너무 많이 사용해서, 이 둘을 사용해서 그림을 그릴 때가 편할때가 있습니다만, 가끔 의 layout을 이용해서 그림을 그려주고 싶을 때가 있습니다. 대략 아래 그림처럼 뭔가 binary tree같은 애들을 그려주기가 편하...
intro 저는 키워드를 분석하는 작업을 많이 하는데, 키워드, 즉 문자열에 '라틴 알파벳'이 등장하는 경우들이 있습니다. 아래 그림에서처럼 액센트도 있고, 합니다. 이걸 다 삭제하고 싶어서 찾아보니, 이미 스택오버플로우에 비슷한 질문이 있습니다...
요즘, 계산을 좀 돌리고 있는데, 속도가 너무 느린거에요. 원래 퓨어 파이썬은 속도 자체가 느리기는 한데, 그래도 나름 속도를 빠르게 만들어보려고 노력을 했는데도, 너무 느립니다. 물론 처음부터 그냥 c로 코딩을 하면, 훨씬 빠르기는 하겠지만, ...
intro 요즘 저는 시뮬레이션을 돌리는 작업을 좀 하고 있는데, 속도가 너무 느려서 걱정입니다. 여러 번 돌려야 하는데, 속도가 너무 느리다보니, 좀 빠르게 진행하지 못하고 있어요. 아무튼 그 과정중에, 현재 코드가 연산이 빠른지 어떤지를 파악...
dictionary 합치기 사실 언뜻 보면 별거 아닌데? 뭐 이런걸 포스트로 쓰나 라고 생각하실지 모릅니다. 네, 저도 처음에는 그렇다고 생각했어요. 보통 파이썬에서 리스트를 사용할 때, 두 리스트를 합치고 싶을 때가 있습니다. 원래 리스트는 건...
y 축을 왜 반대로 해야 하나 어떤 값에 의한 순위 변화를 그려야 한다고 하면, y축의 값이 작을수록 위로 위치하도록 만들어야 합니다. 이러려면 y축을 반대로 변경해야 하죠. 늘 그렇지만, 이미 스택오버플로우에 비슷한 내용이 있습니다.
계산!!!계산!!!속도!!!빨리!!! 요즘 저는 파이썬을 이용해서, 복잡한 계산들을 하고 있습니다. 예를 들면, - Word2vec을 이용하여, 단어를 벡터로 표현한 다음 단어들간의 semantic similarity를 계산하기 - 단어가 몇 개...
intro 저는 요즘 모든 코딩을 colab에서 하고 있습니다. 강점이쟈 약점은, 세팅해놓은 환경을 다시 시작하면 초기화된다는 것이죠. 저는 이걸 강점이라고 생각해요. 라이브러리를 설치하거나, 뭔가를 하다보면 의존성 문제등으로 인해서 충돌하는 경...
intro 를 어렵게 구축했다면, 해당 그래프를 일정한 파일 포맷으로 저장해두어야 다음에 쓰기가 편할 수 있습니다. 따라서, 여기서는 graph를 어떻게 저장하고, 다시 저장한 그래프를 불러오는지를 정리합니다. Graph formats graph...
intro 요즘에는 csv보다 json을 이용해서 데이터를 전달받을 때가 더 많은 것 같습니다. 다양한 이유가 있겠지만, 웹에서 데이터를 크롤링해서 가져올 때가 많기 때문이겠죠. using json 그냥 json을 이용해서 다음처럼 돌려버리면 될...
intro "파이썬은 느리다"라고 많은 사람들이 알고 있습니다. 그런데, 이 지점에서 "파이썬이 왜 느린가요?"라고 물어보면 대부분 답변을 못합니다. 답변을 한다면, "파이썬은 인터프리터언어 혹은 스크립트 언어라서 그렇다"라고 하고, 혹은 "동적...
intro 약 1주일전만 하더라도, colab에서 auto-complete가 잘 되었습니다. auto-complete는 예를 들어서, 까지만 치고, tab을 누르면 내에 있는 로 시작하는 함수들이 포함된 drill-down menu가 생기는 것을...
what is divmod? 와 라는 값이 있고, 몫과 나머지를 구한다고 해봅시다. 아마도 대부분의 사람들은 다음과 같이 코드를 짤 것 같습니다. 매우 일반적이고, 당연한 것이기는 한데, python에서는 라는 함수를 built-in functi...
file submit via webpage 요즘 저는 간단한 analytics tool을 만들고 있습니다. 특정한 분석을 수행하기 위해서 필요한 데이터를 정의하고, 그 데이터를 사용자가 입력했을 때 데이터를 분석해서 결과를 뿌려주는 형식의 간단한...
flask로 만든 웹 페이지 더 예쁘게 만들기. flask로 만든 페이지 더 예쁘게 만들려고 합니다. 사실 이 부분은 front-end에 대한 부분입니다만, 결과를 더 예쁘게 보여줄 수 있다는 점에서, 또 이 부분이 많은 어른들에게 괜찮게 보인다...
csv download 요즘 웹페이지를 만드는 프로젝트를 하고 있습니다. 간단하게 분석을 수행하고, 분석 결과를 보여주는 부분을 진행하고 있는데, 이 과정에서 분석 결과를 csv의 형식으로 다운받도록 처리하고 싶다는 생각을 했습니다. 왜, 보통 ...
file을 읽읍시다. 이전에는 html 페이지로부터 파일을 전달받은 다음, 파일을 저장하고 읽었습니다. 아래 코드처럼요. 그런데, 생각해보니까 굳이 그렇게 할 필요가 없는 것 같아요. 그냥 그 값을 바로 읽어들이면 되는 것 아닌가? 싶었습니다. ...
flask에서 img를 첨부한 html 파일을 만듭시다. flask에서 html을 렌더링할때, static 폴더에 img를 생성하여 저장하고, 해당 이미지를 html내에 첨부하여 보여주려고 합니다. 간단하게, flask에서는 다음과 같은 함수를 ...
matplotlib.pyplot로 그린 그림을 편하게 html로 바꾸자. 파이썬으로 코딩하는 사람들은 시각화할때 대부분 를 사용할 것이라고 생각합니다. 특히 는 jupyter notebook과 붙으면 매우 굉-장해집니다. 그림을 바로 그리고 고치...
jinja2는 flask에서 무슨 일을 하는가? flask로 웹서버를 구축하고 있습니다. flask를 통해서 웹서버를 구축하는 방식은 매우 간단합니다. 일단 다음과 같은 python 코드를 만듭니다. - 라는 url로 들어오면, 라는 templa...
왜 연속상속을 해야 하는가. flask를 이용해서 웹서버를 구축하시는 분이 얼마나 계신지는 잘 모르겠습니다만, 저는 flask를 이용해서, html페이지를 동적으로 rendering하는 작업을 수행하고 있습니다. 아무튼, 에 기본 골격이 되는 h...
matplotlib이 있는데 왜 bokeh를 써야 하나요? 뭐, 맞는 말씀입니다. 필요하면, matplotlib로 그림을 그리고, 웹으로 내보내야 한다면, 파일로 내보내고 그걸 가져오는 식으로 진행하면 되는데, 굳이 익숙한 matplotlib을 ...
bokeh로 network 그리기. 저는 네트워크 분석을 주로 수행합니다. 따라서 네트워크를 시각화할 필요성이 많은데, 를 이용해서 그림을 그릴 때는 비교적 쉽게 그림을 그릴 수 있습니다. 이를 활용해서 png, svg의 형태로 그림을 뽑아내는 ...
recap: node2vec node2vec은 word2vec처럼 skip-gram을 사용해서 node를 vector로 표현하는 방법론입니다. 그 과정에서 word2vec의 sequence와 같은 것을 네트워크의 sampling strategy를...
why do you wanna run bokeh server? 현재 구현중인 시스템에서 데이터를 시각화해서 보여줘야 합니다. 비교적 간단한 시뮬레이션 툴을 만드는 것인데, 이 과정에서 간단히 plot만 보내주는 것이 아니라, 애니메이션을 그려주면...
python으로 animation을 만들려구요. 저는 보통 그림을 matplotlib를 사용해서 그립니다. 많이 만들어서, 그리고 만들 수 있는 것들이 많아서 유용합니다. 다만, 시뮬레이션이 수행되는 부분을 animation으로 처리할 수 없을까...
flask에서 데이터를 javascript로 보내자. 저의 주력언어는 파이썬입니다. 파이썬으로 대부분의 데이터 처리를 하게 되는데, 데이터를 시각화하는 측면에서는 javascript, 특히 d3.js가 매우 편한 것 같아요. 그 측면에서, 제가 ...
애니메이션을 만듭시다. python 에서 애니메이션, 즉 각 프레임별로 필요한 데이터를 전송하고, 각 프레임을 만드는 작업을 해보려고 합니다. html 페이지를 만들어줍니다. - 처음에는 어떻게 하나 싶었는데 그냥 를 하나씩 올려주면서 진해하면 ...
graphviz로 그림 그리기. 저는 보통 그냥 로 그림을 그리지만, 경우에 따라서는 로 그림을 그릴때도 있습니다. 여기서는, 로 그림을 그리고, 이를 버퍼에 저장해서 바로 웹으로 보내주는 것을 정리하였습니다. code 다음처럼 간단하게 파이썬 ...
jinja에서 직접 변수를 선언해봅시다. 보통 jinja에서는 와 만을 사용합니다 변수는 에서 함께 넘어온 것들 뿐이죠. 그러나, 경우에 따라서는 직접 내부에서 값을 선언해주는 것이 필요할 때가 있습니다. 어떻게 할 수 있을까요? do it 언제...
jinja template에서 python의 다른 펑션을 사용해봅시다 음, 사실 간단한 겁니다. 예를 들어서, , 등을 jinja template에서 사용해보고 싶다는 말입니다. 기본적으로는 다음과 같은 것만 가능합니다. 그런데, 필요에 따라서,...
why use translate? 우선, 저는 python의 string method 중에 translate라는 것을 써본 적이 없습니다. 이름에서 알 수 있는 것처럼 해당 메소드는 스트링을 다른 스트링으로 변환시켜주는 기능을 수행합니다. 그러나...
리스트로부터 k개의 partition을 구합니다 예를 들어서, 다음과 같은 리스트가 있다고 합시다. 이 리스트를 2로 쪼갠다면, 다음과 같은 3 가지 방법이 있죠. - 이렇게 k개수만큼 분할할 수 있는 모든 리스트를 리턴하는 함수를 만들어 봤습니...
요즘 심심할때 간단한 코딩 문제를 푸는데, 간단한 자료구조가 나옵니다. 이른바 heap이라는 것이죠. complete binary graph(대충, children이 두개 씩만 있어야 하고, 음, 대충 꽉 채워진 그래프입니다 설명하기 귀찮네효 하...
graph의 isomorphic을 체크해봅시다. 아래와 같이, 두 개의 그래프가 있다고 합시다. 이 둘은 노드도, edge도 모두 동일합니다. 이 두 그래프가 같은지를 확인하려면 어떻게 하면 될까요? 우리가 흔히 쓰는 것처럼 을 써서 처리하면 될...
network equivalence, isomorphism. 얼마전에, network의 isomorphic을 체크한다는 글을 썼었습니다만. 과 는 다릅니다. 이걸 모르고 글을 쓴 것 같네요. network isomorphism graph isom...
random walk generation random walk라 함은, 말 그대로 무작위로 이리저리 움직이는 것을 말합니다. 이걸 그래프에서 이야기하자면, 주어진 그래프에서 정의한 노드와 엣지의 특성에 맞춰서 이런저런 시퀀스를 만드는 것을 일종의...
word2vec.wv.similarity word2vec은 각 단어를 벡터화하여 표현한 것을 말합니다. 뭐 쉬운것이니까 넘어가고, 여기서 종종 발생하는 문제점은 normalization이죠. 단어간의 유사성을 고려해서, 가장 유사한 놈을 찾거나 ...
intro. 저는 최근에, 텍스트를 효과적으로 처리하고, 특히, 유의미한 정보를 추출하는 작업을 수행하고 있습니다. 특히, 적합한 데이터를 찾는 측면에서 이 작업을 수행하고 있습니다. 그 과정에서, 몇 가지 유용한 자연어 처리 기법을 찾고있고, ...
tqdm? tqdm은, 뭐 사실 꼭 필요한 건 아닌데, 현재 for 문이 얼마나 실행되었는지를 알려주는 라이브러리입니다. 사실, 자세하게 설명할 필요는 없으니, 그냥 바로 소개할게요 DO IT 아래처럼 loop가 돌아갈때, 지금 얼마나 돌아가고 ...
사소한 오류이기는 한데, 정리합니다. 아래 코드에서 보는 것과 같이, func에 변수를 함께 넘길 경우에는 - 해당 함수가 선언되었을 때의 변수 순서에 맞춰서 넘기거나 - 아니면 위치와 상관없이, 변수 명을 분명하게 작성해서 넘겨야 합니다. 세번...
python에서 가장 최근 파일을 불러옵시다 매우 간단하기 때문에, 그냥 바로 코드부터 작성하겠습니다. 특정 폴더에 있는 파일들중에서 가장 최근에 만들어진 파일만 가져오도록 합니다. wrap-up 매우 간단합니다 하하하.
data를 잘 저장합시다. 깔짝깔짝 파이썬 가지고 놀때는 몰랐지만, 점점 복잡한 알고리즘을 사용하게 되면서, 한번 계산할때의 계산량이 일정 이상을 넘어가는 일이 발생합니다. 따라서, 매번 새롭게 계산하는 것이 아니라, 계산된 결과를 임시 파일로 ...
generator의 send 이해하기 아마도 이 글을 보시는 분들은 대충 generator가 무엇인지는 아실테고, 당연히 도 명확하게 이해하고 있을 것 같습니다. 오늘은 라는 저도 처음 보는 메소드를 설명할 것인데요. 대충 아래와 같은 코드입니다...
iter, next 간단하게 iter, next 메소드를 클래스에서 정의하는 방법과 그 필요성을 알아봅니다. iterator는 쉽게, 순차적으로 연결되어 있는 값을 의미합니다. 흔히들 리스트처럼 만들어줄때 많이 쓰게 되는데, 저는 기껏 클래스로 ...
what is getattr? 우선 getattr에 대해서 먼저 알아봅시다. 은 그냥 각 오브젝트에서 해당 오브젝트의 attribute를 가져오는 펑션입니다. 기본적으로 파이썬에서 지원되는 built-in function이구요. 간단하게 다음으로...
문자열을 검색할 때 알고리즘 문제들을 풀다보면, 문자열 검색을 해야 하는 일들이 종종 생깁니다. 예를 들어서, N개의 문자열 리스트가 있을 때, 내가 원하는 특정 문자가 해당 N개의 문자열에 있는지 파악하는 것 같은 일들이 비일비재하죠. 뇌없이 ...
단어간 유사성이 이상하게 되어요! 저는 파이썬 자연어처리 라이브러리인 spacy를 사용해서, 단어간 유사성을 비교할때가 있습니다. 그런데 말이죵, 이상하게 유사성이 제대로 안 나올 때가 많습니다. 예를 들어서 아래 코드를 실행하면, 다음처럼, 정...
기존 학습된 벡터들에 새로운 벡터들을 넣어주고 싶어요. 이미 spacy에는 꽤 잘 작동하는 워드투벡이 있습니다. 간단한 처리를 할때는 그냥 이걸 사용해주는 것이 훨씬 좋죠. 그런데, 없는 경우들이 있씁니다. 저는 특수한 분야의 텍스트를 다루는데,...
text가 어떤 분류에 속하는지를 분류합시다. 저는 요즘 간단히, 자연어 데이터가 어떤 분류에 속하는지를 예측하는 알고리즘을 구현하고 있습니다. 비슷한 예를 든다면, 인스타그램과 같은 서비스에 올라오는 글이 있고 각 글에 달리는 tag가 있다고 ...
최근에는 GQL이라는 Graph Query Language를 정리했습니다. 결국 데이터를 Graph로서 표현하고, 이를 필요에 따라서, 필터링해서 볼 수 있는 쿼리언어 표준을 만들자! 라는 것이 해당 언어의 목적이죠. 저는, 그렇게까지 대용량의 ...
json 형식의 파일에서는 스트링 내에 줄바꿈이나 탭이 있으면 안됩니다 되게 간단한 것이기는 한데, 예를 들어서, json 파일이 다음처럼 되어 있다고 해봅시다. 문자열 내에 탭이나, 줄바꿈이 있는게 이상한건 아닌데, 여기서 아래와 같은 오류가 ...
Raw String은 특수 문자를 무시한다 종종 웹에서 데이터를 긁어와야 할 때가 있습니다. 전문적으로 할 때는 다른 기법들도 있지만, 보통 쭉 긁어서 복사하는 걸 제일 많이 하죠. 그런데, 이게 긁히지 않을 때는 페이지 소스 보기를 눌러서, 페...
탐색적 데이터 분석(Exploratory Data Analysis)이라는 것이 있습니다. 어려워 보이지만, 간단하게 설명하자면, 주어진 데이터의 특성이 무엇인지를 파악하는 것을 말합니다. 우선, 저한테 데이터 세트가 있다고 가정을 해보겠습니다....
자, 원래는 지난 편에서 좀 더 자세하게, 의 사용법을 알아보려고 했습니다만, 라이브러리의 충돌등으로 인해서 잘 되지 않더군요. 그래서 이 편에서 좀 더 정리해봤습니다. 해당 내용들은, pandas-profiling documentation에서 ...
Nonetype은 그게 없어. 이건 아주 기본적인 에러이기는 한데, 은근히 자주 발생합니다. 보통은 정규표현식을 사용할 때 많이 발생하기는 하죠. 그래서 마치 이게 정규표현식에 관계된 에러라고 생각하기 쉬운데, 이건 그냥 '반환된 값이 없는데 당...
intro 본문에서는 python에서 GraphDB인 neo4j와 어떻게 연결하고, 쿼리를 전송하고 그 응답을 받는 기본적인 방식을 정리하였습니다. python을 GraphDB인 neo4j와 연결하여 처리하는 방법을 정리합니다. 참고로 저는 ne...
jupyter notebook의 magic command를 정리합니다. 사용할 수 있는 모든 매직 커맨드를 출력해줍니다. 일단 이것만 알아도 필요할때 보면서 해도 되죠. 기본 개념 몇 가지 의 경우는 line command 의 경우는 cell c...
카트폴 쥬피터노트북에서 돌리려면 다음 두 가지를 설치해야 합니다. Jsanimation msgpack http://nbviewer.jupyter.org/github/jakevdp/JSAnimation/blob/master/animationexam...
introduction reference
bayesian??? 네 저는 베이지안을 늘 헷갈립니다. 제 기억이 맞다면, 대학원 면접에서도 베이지안을 물어봤던 기억이 있는데, 그때도 헷갈렷던 것 같아요. 저는 공대생이 맞나요...유사공대생입니다...흑흑 아무튼 세상을 빈도주의적 관점으로 본...
regression을 할때, 그동안은 가 제일 결과가 좋아서, 이것만 이용했었는데, kaggle에서 다른 사람의 notebook을 확인해보니, gradient boosting을 사용한 것을 볼 수 있었습니다. 그래서 이 아이는 무엇인가, 왜 좋은...
이전에 뭐 gensim도 써보고 이것저것 해봤는데, 잘 안되더라고요. 그리고 post도 너무 길어져서 새로 해보려고 합니다 하하핫. 이전에 countvectorizer에서 최종 결과가 잘 나왔기 때문에, 일단은 countvectorizer를 다시...
dataframe의 column을 category로 만들면 좋아지나요? 저는 그냥 귀찮아서, 보통 categorical data인 것 같으면, 를 이용해서 one-hot encoding으로 처리해버렸습니다. 어차피 random-forest를 돌릴...
RNN을 사용해보려고 합니다. CNN은 이제 대충 써볼 수 있는데, RNN을 몰라요. 공부합시다! 간단하게, RNN을 이용하면, sequential data의 흐름을 예측할 수 있습니다. sequential data에 속하는 것들로는 주식, 글,...
sklearn - pipeline 사용하기 R을 사용해보신 적이 있는 분들은 알겠지만, R은 을 사용해서, pipeline을 구성할 수 있습니다(제가 R을 별로 좋아하지는 않는데, 이거 하나는 굉장히 좋아합니다). machine-learning이...
regression 방법들을 정리합니다. 아주 엄밀하게는 내가 쓰는 모델들의 적합성, 그리고 그 의미를 다 알고 사용하는 것이 맞기는 한데, 늘 만나는 문제는 "왜 되지?", "왜 안되지?"입니다. 왜 되는 것인지, 왜 안 되는 것인지, 저도 몰...
statsmodel을 쪼개봅시다. 최근에 timeseries의 stationarity를 검증하려고 관련 파이썬 라이브러리들을 찾아봤는데, statsmodel이라는 라이브러리가 있더군요. 아마도, 추가로 더 유용한 통계 검정 기법들이 더 있지 않을...
Neo4j - Introduction to Neo4j에 대한 part 7개를 각각 다음과 같이 정리하였습니다. 1. neo4j : part 1 : Introduction to Graph Databases. 1. neo4j : part 2 : In...
install py2neo 요즘 neo4j의 graphacademy에서 제공하는 data-science 수업을 듣고 있습니다. 직접 py2neo등의 라이브러리를 로컬에 설치할 필요 없이, 그냥, jupyter notebook에서 설치해서 돌려볼 ...
dataframe sampling 을 기본 데이터구조로 관리할 때, 종종 랜덤하게 데이터를 샘플링하고 싶을 때가 있습니다. 가령, cross-validation처럼 처리를 하고 싶을 때 라거나, noise imbalance 문제로 인해서, 클래스...
요즘은 networkx에서 community detection에 대해서 정리하고 있습니다. 테크닉들에 대해서 테스트를 해보려면, 클러스터가 몇 개로 구성된 예제그래프가 필요합니다. 그리고, 당연히도, 에서 이러한 예제 그래프를 지원하죠. 위와 같...
intro. coursera의 수업 중에 Understanding visualization data 코스를 공부하고 내용을 정리하였습니다. 사실 이 수업보다는 이 다음 수업인 Inferential Statistical Analysis with P...
흔히 를 사용하다고, 이 적합하지 않다거나, unicode error라거나 하는 문제들이 발생하고는 합니다. 이는 csv 파일의 인코딩 방식과 읽어들일 대 해석하는 decoding 방식이 다르기 때문이죠. 하지만, 제가 직접 csv 파일을 만든 ...
statsmodel로 binomial proportion에 대한 신뢰구간 구하기. binomial proportion에 대해서 신뢰 구간을 계산하기 위하여, python의 통계 패키지인 을 사용합니다. 예를 들어, 대한민국 남성들의 흡연율(pro...
check your encoding file. 보통 로 csv 파일들을 읽을 때 가장 흔히 발생하는 에러로 다음의 것이 있죠. 길게 되어 있지만, 그저 "원래 파일이 utf-8로 인코딩되어 있지 않은데, utf-8로 인코딩하려고 해서 발생하는 문...
WEEK 3 - Statistical Inference with Confidence Intervals 2주차에서는 주로 Confidence interval을 배웠으며, 어떻게 계산하고 해석하는지, 그리고 Confidence라는 것이 의미하는 것은...
WEEK 3 - HYPOTHESIS TESTING 이 단계에서는 가설 검정에 대한 부분을 배웁니다. 즉, WEEK 2에 배웠던 5가지 기법을 사용하여, hypothesis testing에 대해서 배우고, 이를 해석합니다. Introduction ...
두 집단이 있다고 합시다. 남성과 여성이라는 두 집단이 있습니다. 가령 이 두 집단이 같은 성질을 가지는지, 다른 성질을 가지는지 비교를 해보고 싶을 때가 있겠죠. 예를 들어, 이 두 집단의 키 평균은 같다고 할 수 있는지 혹은 다른지 등에 대해...
normal dist.를 따르는 proportion에 대한 test. 우리가 표본 집단으로부터 라는 비율을 측정했습니다. 충분히 많은 에 대해서 측정했고, 따라서, 또한, normal distribution을 따르겠죠. 그리고, 우리가 랜덤변수 ...
서로 다른 두 집단의 평균이 같은지를 테스트하자. 두 집단(남성과 여성, 흑인과 백인, 청소년과 노인 등등등) 에 대해서 이 두 집단의 평균이 같은지를 테스트 해봅니다. 를 사용해도 되지만, 에도 같은 방식이 있어서, 이 값을 이용해서 정리를 해...
우리가 이미 를 사용해서 필요한 데이터를 엑셀처럼 깔끔하게 구축해두었다고 합시다. 그런데, 이 데이터들을 혼합해서 간단한 cross-table을 만들고 싶을 때가 있죠. cross-table은 가령, 우리에게 , , 이라는 세 가지의 칼럼이 있다...
순서를 유지한 채 crosstab을 만들기. CrossTable은 복잡한 데이터세트로부터, 다양한 그룹별로 데이터들이 어떻게 분포되어 있는지 row, column으로 분리하여 봄으로써, 데이터의 특징에 대한 직관적인 해석을 지원합니다. 그리고, ...
WEEK 2 - FITTING MODELS TO INDEPENDENT DATA - PART 1 2주차에는 linear regression과 logistic regression을 배운다. 그리고, 이 모델의 정확도를 어떻게 측정할 수 있는지에 대해...
probability, odds, logodds. 이제, binary outcome을 예측하는 모델을 만든다. 여기서는 라고 하는, '흡연 유무(정확히는, "인생에서 최소 100개의 담배를 피웠는가"라는 질문에 대한 응답)'을 response v...
Fitting a multilevel Model 본 주차에서는 자폐증(autism)을 가진 아이들을 대상으로 수행된 longitudinal study를 대상으로 데이터를 분석한다. 주로 다음의 변수들을 분석한다. - : "피실험자들의 나이", 2...
Fitting a Marginal Model. Multilevel Model) Part1에서는 같은 피실험자(사람, 아이)에 대해서 오랜동안 관측한 데이터간의 correlation을 고려하여, 나이에 따른 random effect가 다를 것이라를...
Multilevel and marginal modeling, a case study with the NHANES data 데이터라는 것은, 사실 여러 관계를 가지고 있을 수 있습니다. 하나의 선형적인 관계만 가지는 것이 아니라, multi-lev...
csv에서 특정 column을 string으로 읽고 싶을 때. 은 사실 엑셀과 유사합니다. 엑셀처럼 각 칼럼의 데이터타입을 지정하고 관리할 수 있죠. 아무튼, 가끔, csv에 저장된 값은 이라는 문자열인데, 이를 그대로 로 읽으면. 이라는 flo...
WEEK 1 - OVERVIEW & CONSIDERATIONS FOR STATISTICAL MODELING 이 코스에서는 주로 라는 파이썬 라이브러리를 주로 활용하며, 이를 활용해 이전에 배운 간단한 통계적 기법을 배웁니다. 지금이야, 워낙 뉴럴...
Data Modeling in Python 일반적으로, 데이터에 대해 통계적 모델을 세운다는 것은 다음과 같은 과정에 따라서 진행된다. 1. varaible이 가지는 분포에 대한 성질(mean, variance, covariance)를 유추(es...
patsy: python package for describing statistical models. 요즘, 아는 후배가 물어봐서 conjoint 분석이라는 것을 조금 수행하고 있었습니다. 특정 사용자 군을 대상으로 discrete choice ...
pd.dataframe을 hdf5의 형식으로 저장합시다. 보통 우리는 을 그냥 무심코, 의 형태로 저장하고는 합니다. 하지만, 슬프게도, csv로 저장하면 다음과 같은 문제들이 발생하죠. - 비효율성) string으로 저장하므로 데이터 용량을 많...
Background) Static-type and Dynamic-typed checking python이전에 비교적 전통적인 프로그래밍 언어에 속하는 c, c++, java 등의 언어를 사용해보신 분들은 다음과 같은 형태로 코드를 작성하는 것이 ...
intro. 이전의 post에서, 를 사용하여 비교적 간단한 static type checking을 하는 짓을 해봤습니다. 이 post에서는 에 대한 개괄적이 설명과, 무엇을 더 할 수 있는지에 대해서 알아보겠습니다. What is mypy? 는...
Coursera: Inferential Statistical Analysis with Python Coursera: Inferential Statistical Analysis with Python의 수업을 수강하고(유료 수강이 아닌, Audit)...
intro. 2019년에 진행된 pycon 발표자료들을 다시 보면서, 제가 모르는 것들이 무엇이 있었는지를 정리하고 있습니다. 그러던 중에 뚱뚱하고 굼뜬 판다스(Pandas)를 위한 효과적인 다이어트 전략이라는 자료를 보고, 제가 알던 내용과 모...
what is feather? Feather provides binary columnar serialization for data frames. It is designed to make reading and writing data frames e...
save pd.Dataframe as parquet. 우리는 dataframe을 습관적으로 로 저장합니다. 하지만, 이 아이는, 메타데이터를 저장할 수 없어 칼럼별로 dtype을 재지정해줘야 하는 일이 생길 수 있다는 것과, 읽고 쓸때 시간이 많...
LP for handling uncertainty. 기본적으로 LP는 특정한 상황(constraint)일 때 최적의 해를 구하는 방법이죠. 따라서 만약 coef들이 달라진다면, 최적해도 달라지게 됩니다. 우리가 가정한 모든 값들이 무조건 맞다고 ...
Optimization. 요즘 대부분의 사람들은 '머신러닝'에 꽂혀 있지만, 그 외로 최적화(Optimization)이라는 분야가 있죠. 일반적으로, 주어진 제한조건(constraint)들 내에서, 우리가 목적으로 하는 함수(objective f...
python으로 선형 계획법 문제를 풀어 봅시다. pulp라는 python에서 linear programming을 할 수 있는 라이브러리를 정리합니다. 우선, 본격적으로 최적화 문제를 풀어야 한다면, 즉, 변수들의 수가 엄청나게 많고 복잡하다면,...
What is gurobi? 요즘 대부분의 사람들은 '머신러닝'에 꽂혀 있지만, 그 외로 최적화(Optimization)이라는 분야가 있죠. 일반적으로, 주어진 제한조건(constraint)들 내에서, 우리가 목적으로 하는 함수(objective...
PROBLEM: autopep8 not install 저는 vscode를 주 IDE로 쓰고 있습니다. 특별한 이유는 없고요 그냥 쓰다보니 쓰고있네요. 아무튼, python을 주로 쓰고 있는데, python을 확장 프로그램으로 설치를 해야, 각 클...
Error: 'AtlasView' object does not support item assignment 로 코딩을 하다보면 종종 뜨는 에러 중에서 다음의 에러가 있습니다. 에러 코드를 그대로 해석하자면 "AtlasView 오브젝트는 item a...
Graph로부터 subgraph를 만들어봅시다. Graph를 분석하다보면, 필요에 따라서, subGraph를 만들어야 할 때가 있습니다. 이럴 때는 두 가지 방식이 있는데, 와 이미 가진 graph object인 의 class method로 접근...
node, edge의 attribute를 업데이트하자. 대상을 graph로 표현한 다음 필요에 따라서 각 graph의 node, edge의 attribute를 업데이트합니다. 필요에 따라서, weight, centrality 등 다양한 값들을 업...
intro. 코딩을 어느 정도 하다보면, "코드 자체를 생산하는 것"은 꽤 쉬운 일이라는 생각이 들때가 있습니다. 그 즈음에 드는 생각은 "어떻게 해야 더 효율적이고 빠른 코드를 만들 수 있을까?"죠. 원론적으로 이를 해결하기 위해서는, 프로그래...
Why need generator? 다른 사람이 잘 만들어둔 python library를 쓰다보면, 가끔 분명히 컨테이너인 것 같은데 로 접근되지 않는 경우가 있습니다. 보통 에러 코드는 다음과 같죠. 즉, 'generator'는 하지 않다라는 ...
Define instance attribute by using SLOT python의 모든 class들은 instance attribute를 가지고 있습니다. 즉, 기본적으로 python은 오브젝트의 instance들이 가지는 attribute를...
intro. 저는 맥북을 쓰고 있습니다. 그래서 기본 브라우저는 보통 safari로 설정되어 있죠. 저한테는 크롬이 주 웹 브라우저이고, 따라서 그냥 jupyter notebook은 safari에서 굴러가도록 하는 것이 필요에 따라서는 더 편할 ...
를 을 이용한 성능체크. 기본적으로 비슷한 두 코드의 성능을 비교할 때는 '시간'과 '리소스(메모리) 사용량'만 보면 됩니다. 그리고 jupyter notebook에서 이는 magic command 인 를 이용해서, 와 로 처리할 수 있죠. 또한...
우선 세부적으로 설정을 바꾸고 싶으신 분들은 jupyter notebook 커스토마이징하기.라는, 제가 전에 쓴 글을 봐주시면 됩니다. 하지만, 가능하면 하나하나씩 설정을 바꾸지 마시고, 테마로 한번에 뜯어고치시는 것이 유지보수 측면에서 훨씬 좋...
Graph에서 Node간의 연결성을 확인하기 위해서는, AtlasView로 접근하는 것이 훨씬 빠르다. 대상을 그래프로 관리하고 있을 때, 많이 활용하게 되는 것으로는, 과 가 연결되어 있는가 연결되어 있지 않은가? 입니다. 같은 말이지만 "이 ...
networkx - approximation for NODE connectivity Graph는 기본적으로 빠르게 처리하는 것이 어렵습니다. 테이블과 같은 형태라면, 비교적 어느 정도 병렬적으로 처리할 수 있는데(서로 데이터가 독립적이기 때문),...
K - component. 는 graph 가 있을 때, 모든 node의 local node connectivity가 최소한 k인, maximal subgraph를 말한다("maximal"은 "만들 수 있는 최대의 그래프"라고 해석하면 될텐데, s...
Average clustering coefficient of Graph. background local clustering of each node 는 각 노드에 대한 clustering(밀집도)를 말하며, 해당 노드 이웃들과 구성할 수 있는 모든...
networkx - Degree Centrality. 는 각 node에 직접 연결된 node의 수를 말한다. 아주 단순히 봤을 때, 이 값이 클수록 해당 노드가 그래프에서 가지는 직접적인 영향력이 큰 것은 자명하며, 이 값을 중심으로 node의 ...
What is Clique? clique는 maximal complete subgraph(모든 node pair 간에 edge가 있는 subgraph)라고 생각하시면 됩니다. ㅇ 가령, 노드 A, B, C가 있을 때, 서로 모두 연결되어 있다면(...
Eigen Value and Vector: 분명히 학부 때 배웠던 것입니다만. 제 기억이 맞다면, 2008년(아 너무 먼 옛날이다)에 학교 "선형 대수학(Linear algebra)"에 분명히 배웠던 기억이 있습니다. 물론 아주 엄청나게 예전이고...
Eigenvector centrality는 일반적으로 네트워크 내 노드들의 영향력을 측정하기 위해 사용되는데, 직접적인 영향력만을 반영하며, 노드간의 차이를 구별하지 않는 degree cetrality와 다르게, "중요한 노드(네트워크 내에서 영...
line summary 각 node가 어떤 community에 속하는지를 고려하여 CN(Common neighbor)와 RA(Resource Allocation Index)를 보정함. 2012년 프로시딩에서 발표했던 논문인 Using commun...
Centrality - Closeness Centrality closeness centrality는 흔히, "근접 중심성"이라고 말하는데, "어떤 Node A에서 다른 모든 노드(reachable nodes)에 도달하기 위한 최단거리의 길이(sh...
Katz Centrality는 Network 내 Node의 중심성(centrality)를 측정하기 위한 방법 중 하나입니다. 다른 centrality measure들과는 다르게, node pair간의 path를 고려하여 영향력을 측정합니다. 가령...
간단한 선형 방정식 풀기. 간단한 선형방정식()을 풉니다. 단, a는 diagonal matrix(rectangular matrix)여야 하죠. 를 사용해야 하죠.
current flow betweenness centrality. 이전에, closeness centrality를 이야기할 때도, 라는 이름으로, 측정한 것이 있었죠. betwenness centrality도 마찬가지로, 전류 모형을 적용하여, ...
는 "G의 모든 node pair의 최단 거리에, node V가 얼마나 많이 포함되는지를 비율로 표현하여, node V가 전체 그래프의 흐름에 얼마나 영향을 미치는지"를 측정하는 지표입니다. 즉, 계산 방법은 다음처럼 간단하죠 1) 모든 node...
edge betweennss centrality "edge betwenness centrality"는 node betweenness centrality와 유사한데, "node"를 shortest path의 비율을 계산하는 것이 아니라, edge를...
Information Centrality 는 "Current Flow Closeness Centrality"라고도 부릅니다. 여기서 "Current"는 "전류"를 가리키죠. 즉 "전류 흐름에 근거한 근접 중심성 분석"이라는 말이 되죠. 흔히들 네...
What is Line Graph? Line Graph는 그냥 "Node를 Edge로 Edge를 Node로 변형한 그래프를 말합니다". 가령, edge들이 로 존재하는 그래프(Node: 0, 1)의 Line Graph는 로, edge가 하나뿐인 ...
path가 file인지 director인지 확인합시다 보통, python에서 해당 경로에 위치한 path를 모두 읽고, file인지, path인지에 따라서 다른 제어를 해야 한다고 합시다. 가령, 폴더인 경우는 recursive하게 다시 해당 폴...
: "Node, edge가 반복되어도 상관없으며, graph에서 발생할 수 있는 - : walk중에서 source와 target이 같은 경우. - : walk 중에서 source와 target이 다른 경우. : "edge가 반복되지 않는" wal...
Centrality - communicability betweenness centrality 전통적인 개념에서는 network를 분석할 때, shortest path만을 고려하게 됩니다. 하지만, 이는 실재적인 graph의 특성을 반영하지 못하죠...
centrality - group betweenness centrality node betweenness centrality는 "그래프의 모든 node pair 간의 shortest path 중에서 node 을 지나는 최단거리의 비율"을 말하죠....
matrix exponential: scipy.linalg.expm(A) matrix exponential은 square matrix에 exponential function을 적용하여 도출된 matrix를 말하며, 일반적으로 생각하는 와 동일합니...
What is communicability? networkx documentation에 작성된 의미에 따르면, 다음과 같습니다. The communicability between pairs of nodes in G is the sum of clo...
centrality - harmonic centrality. harmonic centrality는 다른 모든 노드들인 v들로부터, 해당 노드인 u까지 향하는 "최단 거리의 길이(shortest path length)의 역수"를 모두 더한 값을 말...
What is subgraph centrality? subgraph centrality는 "node가 graph의 subgraph에 속할 비율"을 말합니다. subgraph의 크기가 커질수록, penalty를 먹입니다(즉, 작은 subgraph일...
what is load centrality? networkx documentation에 작성된 "load centrality"는 다음과 같습니다. The load centrality of a node is the fraction of all sh...
centrality - local reaching centrality. "local reaching centrality"는 말 그대로, "접근가능성"을 활용하여, node의 중심성을 평가합니다. node 의 local reaching centra...
networkx - clustering의 내용들을 정리합니다. triangles 에서 node 을 포함한 삼각형의 수를 말합니다. transitivity 번역이 조금 어려운데, '이행성, 전달성, 전이성'정도로 이해하시면 됩니다. 오히려 이 개념...
Percolation은 한국말로 "여과"입니다. 커피를 만들때 필터에 커피를 투과시키는 것을 보통 여과라고 하죠. 그리고, node 의 Percolation centrality는 해당 노드를 지나가는 "percolated path(여과된 길)"의...
community detection 방법은 네트워크에서 보다 긴밀한 관계를 가지는, 노드 그룹을 뽑아내는 방법을 말합니다. 특히, girvan newman method는 가장 가치가 높은 edge를 순차적으로 잘라나가면서 group을 계층적으로 ...
centrality - dispersion "dispersion"은 Romantic Partnerships and the Dispersion of Social Ties에서 제안한 개념으로, 기존의 embeddedness와 약간은 다른 개념입니다....
What is Configuration model. Configuration model은 Node들에 대한 Degree sequence가 주어졌을 때, degree sequence를 그대로 유지한 상태로, random network를 만드는 방법...
intro - community evaluation. graph에서 내부에 존재하는 다양한 소그룹, 이른바 community를 뽑아내었다고 해봅시다. 가령 "방법1로 community를 도출한 경우", "방법2로 community를 도출한 경우"...
1-line summary girvan-newman method말고, networkx - greedy modularity communities를 사용하면, 훨--씬 빠르게, 더 높은 modularity를 가지는 community 집단을 뽑아낼 수...
3-line summary modularity는 네트워크에서 클러스터링을 수행했을 때, 얼마나 잘 나누었는지를 측정하기 위한 지표. configuration model을 null model로 하여 random할때보다 얼마나 더 차이가 있는지를 비...
1-line summary "Adamic/Adar index"는 "Resource Allocation Index"와 매우 유사하나, 각 값에 log를 취해서 더해준다는 차이만 있음. Adamic Adar index 개념이 매우 간단하므로 pyth...
2-line summary jaccard coeffcient는 (두 집합간의 intersection set)/(두 집합간의 union set)임. 매우 간단하며, 네트워크뿐만 아니라 일반적인 data mining쪽에서도 "거리"등을 측정하기 위해...
3-line summary preferentail attachment는 이른바 "빈익빈 부익부"를 말하며, "강한 놈은 더 강해진다"라는 의미죠. 네트워크에서도 동일하며, 새로 발생할 가능성이 높은 link는 아마도, "힘이 쎈 노드들일 수록 붙...
3 line-summary 에서 제공하는 clique 관련 함수들을 정리하였습니다. clique는 graph내에 존재하는 complete-subgraph를 말함. 매우 기본적인 graph의 특성이며, 각 노드가 어떤, 그리고 몇 개의 clique...
2-line summary Graph에서 에 근거한 다양한 함수들을 정리함. , , 등 매우 기본적인 graph의 기본적인 지표 및 개념들 정리. Do it using 어려운 코드가 아니어서, 아래에 그대로 정리하였습니다. reference ne...
3-line summary pagerank, katz centrality, bewteenness centrality 등 graph의 global structure에 기반한 link prediction이 많지만, common neighbor와 같은...
3-line summary. 네트워크에서 component)는 "connected component"라고 불리기도 하며, "집단 내 어떤 두 노드 사이에도 path가 존재하는 집단"을 보통 말한다. networkx - component compo...
3-line summary SimRank는 "비슷한 사람에 의해서 가리켜지면, 비슷한 사람일 것이다"라는 가정에 기반한 node, similarity 계산법. 여기서 중요한 것은 "비슷한"이라는 말로, recursive의 형태로 "비슷함"을 적용...
2-line summary node끼리 서로 양방향으로 path가 모두 있는 것이 strong-connectivity. 한 방향만 있는 것이 weak-connectivity. strong connectivity https://en.wikipedi...
intro. networkx - algorithms - isolates에 있는 내용을 정리합니다. 사실, 우리가 다루는 네트워크에서, "어떤 노드와도 연결되어 있지 않은 node"를 "isolate"라고 합니다. . networkx 다음의 함수들...
line summary HITS는 webpage들은 hub(포탈 사이트), authoriy(파워블로그)로 구분할 수 있다는 가정하에서, 각 페이지별로, 이 값을 계산하면서 상호 재귀 방식(mutual recursion)으로 값을 계산한다. 모든 ...
2-line summary for PageRank pagerank는 "(web)Page의 순위(Rank)를 매기는 방법"을 말하며, page를 노드로 in-link, out-link를 edge로 고려하여 그래프를 만들고, 그래프에 기반해 node...
Intro: 초기값 있는 argument는 맨 뒤로 아래 코드가 떴다는 이야기는, 함수의 argument의 순서로 볼 때, 처럼 초기 값을 정한 argument 앞에 이렇게 온 경우를 말함. 아래를 보시면 좀 더 명확할 것 가텐요. Why? 왜 ...
line summary "label propagation"은 내 이웃들이 많이 속한 label이, 내 label이다, 라는 접근으로, 직관적인 개념에 기반하여 community을 만들어 나감. async Label Propagation Label...
3-line summary async label propagation은 매우 오래 걸리고, sync 방법은, bipartite network에서 발산하는 경우가 있어서, Community Detection via Semi-Synchronous L...
line summary. What is Graph Coloring? Graph coloring은, 말 그대로 "Graph에 색칠을 하는 것"을 말합니다. 단, 여기서 필요한 색깔의 수 를 최소화하는 것을 보통 목적으로 하죠. 그리고 node를 색...
2-line summary macOS에서 pyautogui를 설치하고 간단한 테스트를 실행해봄. AI가 내 마우스와 키보드를 건드린다는 게 무서운데(만약, 프로그램이 멈추지 않을 수도 있으니까), 마우스를 스크린 4 꼭지점에 가져가면, 알아서 E...
1-line summary pyautogui를 이용하면, 마우스 위치 이동, 클릭, 스크롤, 드래그 등을 처리할 수 있음. Cheat sheet for pyautogui - mouse 를 이용한, 마우스 동작을 아래 코드로 정리하였습니다. ref...
1-line summary pyautogui를 이용하면, 키보드의 버튼을 누르고(press) 누르고 있고(keydown), 떼고(keyup) 등을 할 수 있음. Cheat sheet for pyautogui - Keyboard 를 이용한, 키보드...
1-line summary pyautogui를 이용하여, 화면의 스크린샷을 파일로 저장하고, 필요에 따라, 이미지가 화면에서 어디에 위치하는지를 찾을 수 있음. 다만, 어떤 방식으로 찾는지 정확도는 어떠한지에 대해서는 확인이 필요함. Cheat ...
3-line summary pyinstaller를 이용하면, 간단한 python 프로그램을 실행파일(exe)로 만들수 있습니다. 하지만, 어떤 파이썬 라이브러리를 import하느냐에 따라서 만들어지는 속도, 용량 차이는 물론, 실패할 가능성도 있...
3-line summary 를 비롯하여 최근의 많은 random number 생성은 MersenneTwister에 기반하고 있다. MersenneTwister는 (624개의 모수를 생성) => (각각의 모수로부터 "복잡한 공정"을 통해 새로운 난...
2-line summary 일반적으로 numpy를 이용해서 random number(난수)를 생성하는 방법은, 임. 하지만, 를 이용해서 관련 method가 정의된 객체를 선언 및 정의하여 사용할 수도 있음. Way 1: 기존의 방법은 다음과 같...
사실, bit operator를 쓸 일이 거의 없기는 한데, 잠깐 써야할 일이 있어서 이 때 정리해두기로 합니다. 내용 자체가 복잡하지 않으므로, 코드에 주석을 달아서 그대로 정리하였습니다. 결과는 다음과 같죠. reference geeoksfo...
3-line summary : +, - 모두 표시함. : -만 표시함. : -만 표시하고, +경우에는 그냥 공백. 부호때문에 칸이 달라지는 것이 꼴보기 싫습니다 가령, 우리가, 음수와 양수가 섞여 있고 서로 다른 자릿수가 섞여 있는 리스트들을 출...
2 line summary python에서는 , , 를 사용해서 2, 8, 16진법을 표현함. 16진법(hexagonal)를 표현하기 위해 를 사용하는 이유는, 사실 별거 없고 우연에 가깝다. python: binary, , hexa. 우리는 흔...
2-line summary 를 사용해서 난수(random number)가 발생하는 동작을 제어하지만, 난수를 생성하게 되는 624개의 모수 세트의 첫번째 값을 변경해줄 뿐임. 좀더 세밀하게 random성을 제어하고 싶을 경우, 로 특정한 상황의 ...
3-line summary. "어떤 네트워크가 어떠한 성질을 가진다"는 것을 증명하기 위해서는 보통 비슷한 성질을 가지는, random network를 reference로 삼는다. graph의 small-worldness를 측정하기 위해서는 'e...
3-line summary small-world network는 "높은 clustering", "짧은 average shortest path lenght"를 가진다. 따라서, lattice network(highly clustered, long ...
1-line summary. "lattice network"는 삼각형/사각형/육각형 등으로 벌집처럼 촘촘하게 만들어낸 네트워크 구조를 말합니다. 를 통해 간단하게 사용할 수 있습니다. lattice network. google에서 "lattice...
2-line summary 는 graph 에서 최소한 의 node degree를 가지는 subgraph를 말합니다. 그냥 순차적으로 k보다 node degree가 작은 node를 잘라나가면 찾을 수 있습니다(혹은 존재하지 않거나). what is...
2-line summary. 는 equivalent random network와 equivalent lattice network라는 두 reference network를 기준으로 평균 최단거리, clustering을 각각 비교하여 균형을 맞추고 ...
2-line summary. 는 equivalent random network를 기준으로 clustering, 평균 최단거리를 비교하여, 만들어진 지표. 1.0이 넘으면 보통 small-world라고 하지만, 그래프의 크기가 충분히 커지면 유효하...
2-line summary corenumber는 각 vertex가 속할 수 있는 가장 큰 k-core의 를 말함. 따라서, k-core를 찾아가면서, 속해 있으면 update하는 식으로 처리하면 됨. core-number core-number는 ...
1-line summary 를 사용해서, power of graph를 만들 수 있다. power of graph k power of graph 는 마코브체인처럼, 노드들이 번만에 도달할 수 있으면, 서로 인접하다고 보는 것이죠. 물론, 그러함으로...
1-line summary 는 "k-떨거지"라고 말해도 되는데, 기존 graph 에서, k-core를 제거한 subgraph를 말하죠. k-crust. 즉, 는 를 제거했을 때, 남는 complement graph라고 보셔도 됩니다. 다만, 에서...
2-line summary 은 "core number를 로 가지는 node들의 subgraph, 그리고, (k+1)-core에 존재하지 않는 노드들을 말하죠" 사실, 별거 아닌것 같은데, 종종 complex network에서 node들의 계층적인...
2-line summary 은 "core number를 로 가지는 node들의 subgraph, 그리고, (k+1)-core에 존재하지 않는 노드들을 말하죠" 사실, 별거 아닌것 같은데, 종종 complex network에서 node들의 계층적인...
2-line summary graph 의 complement 는 "+ = complemet graph"라고 생각하면 됨. Directed graph 의 는 방향성을 반대로 하는 것을 말함( ==> ) complement of graph 의 com...
1-line summary graph binary operator, 즉, 그래프에 대한 덧셈 뺄셉을 정리했습니다. 사실, 집합 개념과 동일해요. graph binary operator Graph에 대해서 적용할 수 있는 operator들, 즉, ...
2-line summary graph 의 node간 연결성을 체크하는 방법중에서 가 보다 2배 이상 빠름. 물론, 를 사용하면, 더 빨라지지만, 위험성이 있으므로 가급적 하지 않는 것을 추천. 는 보다 빠른가? 저는 보통 node들의 연결성(ed...
2-line summary 이전에 언급했던, harmonic function과 유사합니다만, localness(가까운 이웃들과의 관계), globalness(네트워크 전체를 봤을때, 지역적인 구분)에 대한 관점을 를 통해 결정할 수 있따, 라는 ...
What is sparse matrix? Sparse matrix는 한국말로 "희소행렬"이라고 할 수 있으며, 대부분이 비어 있는 행렬(matrix)라고 생각하시면 됩니다. 예를 들어 보겠습니다. 우리에게 행이 100, 열이 100개인 matri...
1-line summary Before: (u, v) and (x, y) AFter : (u, x) and (v, y) network - double edge swap network의 유형, 특성들을 판단하는 지표들의 유효함을 보이기 위해서는 보...
2-line summary 를 그냥 으로 변환해주면 weight를 고려하지 못한다는 문제가 있음. 따라서, weight를 고려하여 를 만들어주는 함수를 정의. MultiGraph to Graph MultiGraph는 보통 노드 에서 노드 로 가는...
2-line summary. 를 사용해서 figure에 연속해서 그려지는 그림을 animation으로 표현하는 방법을 정리하였습니다. : 에 "그리는 방법"을 정의하고, 로 매 그림마다 필요한 데이터는 iterator의 형식으로 넘겨줍니다. in...
1-line summary python dictionary에 대해서 operator는 "내부 요소를 재귀적으로 파고들어가며 완전히 같은지를 확인"한다. operator in python dictionary 보통, dictionary를 사용할 때,...
3-line summary 는 "k-core에 대한 density 변화율"을 의미함. equivalent random network와 비교하여 normalization. 와 동일한 코드를 다른 형태로 만들어봄. What is Rich Club? ...
network theory에서 bridge란, "해당 edge가 끊어지면, graph의 connected component가 증가하는 edge"를 말합니다. 즉, edge 가 끊어진다면, node , 는 어떠한 방법으로도 서로 도달할 수가 없는 ...
2-line summary 알고리즘은, 가령 influencer들을 통해 네트워크를 최대한 많이 커버하려고 할 때, 서로 겹치지 않게 influencer들을 선택하려면 어떻게 하는 것이 제일 좋은가? 를 보여준 알고리즘. 그냥 "이웃들에게 반복적...
1-line summary closeness vitality Closeness vitality Closeness vitality는 번역하자면, "근접 생명력/필수"처럼 번역될텐데, 의미가 이상해지는 군요. 계산방법으로 보면, 이는 특정 노드가 해...
2-line summary shortest path with weight. 오늘 이야기할 것은 사실 좀 사소한 것일 수도 있습니다. 보통 를 이용해서 분석을 할 때, 를 고려하고 싶은 경우에는 의 형태로 argument를 넘겨줍니다. 보통 이렇게...
Wienerindex Wiener index는 chemical graph theory에서 등장하는데, 하나의 chemical graph 내에 등장하는 모든 node pair간의 shortest-path-length의 합을 말합니다. 개념상, 복잡...
4-line summary structural hole은 "그래프에서 구조적인 허점"을 말하며, 이 "구조적인 허점"에 존재하는 node들은 보통 서로 다른 클러스터의 중심에 위치하게 되므로 정보의 중개자로서 강한 이득을 얻게 된다는 것을 말합니...
2-line summary effective-size는 "redundancy"를 중심 개념으로 "node u에서 v로 가는 중복된 path가 존재하는가"를 중심으로 값을 계산합니다. 특히, ego-network를 중심으로 star-graph와 가...
1-line summary 은 graph 에서 "source로부터 target까지 가지는 모든 중복없는 노드 traversal"을 리턴. allsimplepath. graph에서 path는 중복 없는 노드 traversal을 말합니다. 특정 시작...
1-line summary generator 내에서 다시 generator를 가져오는 경우, 해당 generator로부터 모든 원소를 가져오고 싶을 때는 을 사용하자. python basic - generator generator는 그냥 "데이터...
2-line summary 이라고 해둔다고 해서 라는 parameter의 value가 함수 콜마다 로 초기화되는 것이 아니다. 저렇게 해두면 함수를 콜할 때마다 같은 object에 접근하게 됩니다. weird default parameter 예를...
1-line summary network에 대해서 DFS(depth-first-search), BFS(Breadth-first-search)를 generator를 사용하여 구현함. DFS(Depth-First-Search) 네트워크를 깊이 중심으...
1-line summary "chain decomposition"은 edge partition의 방법 중 하나로, DFS의 결과로 생성된 Tree를 고려하여, Tree에 속하지 않은 nontree edge을 순차적으로 읽으면서 만들 수 있는 cy...
1-line summary stack을 이용해서 recursion DFS를 iteration으로 변경해봄. Recursion 프로그래머의 성향에 따라서 다를 수 있지만, recursion이라는 직관적으로 문제를 풀 수 있는 방법을 알려줍니다. 뿐...
failed nltk로부터 필요한 라이브러리들을 다음처럼 다운 받을 때, 문제가 생기는 경우가 있습니다. 이유는 모르겠지만, nltk로부터 다운받는 과정에서 뭔가 문제가 발생한 것이죠. 개념적으로는 경로 안에 필요한 라이브러리들을 이곳에서 다운 ...
1-line summary 가 보다 더 빠른 것 같습니당. pd.readcsv is faster? 다른 라이브러리들도 있지만, csv를 읽을 때, 가 직관적이기도 하고 다른 관련 함수들도 많이 제공하기 때문에, 이 함수만 쓰고 있지만, 가끔, "...
1-line summary 을 쓰면 해결 됩니다. python에서 가 읽히는 문제. 보통 csv를 읽을 때, 를 쓰긴 하지만 속도 문제로 인해 라는 모듈을 사용할 때가 있습니다(사실 요즘은 웬만하면 가 더 빠르기는 하지만요). 이 때 csv를 읽...
2-line summary gensim의 기본 개념인 Document, corpus, vector, model에 대해서 정리하였습니다. gensim은 "같은 document일지라도 corpus가 다르면 다른 형태로 vector화된다는 것"을 가정...
1-line summary 이 보다 빠릅니다. pd.concat vs df.append 쓰고보니 매우 간단한 내용입니다만, 정리합니다. 는 dataframe으로 구성된 리스트들을 한번에 다 합쳐서 새로운 dataframe을 만들어주는 함수입니다....
1-line summary 그냥 를 쓰는 것도 좋지만, 를 사용해서 프로그램의 진행상황을 효과적으로 파악하면 더 좋을 것 같아요. 왜 logger를 써야 할까? 사실, 꼭 쓸 필요는 없습니다. 대다수의 경우 로도 충분합니다만, 프로그램의 규모가 ...
1-line summary 을 사용하면 해당 파일의 생성 시간을 알 수 있음 이 값을 사용해서 "생성 시간" 기준으로 최대 값을 찾으면 됨. Get Latest file from path 어떤 folder의 경로 가 있다고 합시다. 그리고 이 경...
1-line summary 을 이용하여 word2vec 모델을 구현하고, 학습시켜서 유용하게 쓰는 방법에 대하여 정리하였습니다. gensim - tutorial - word2vec word2vec은 이미 매우 유명한 머신러닝 알고리즘이죠. 사실 ...
2-line summary google이 이미 word2vec의 결과로 각 word에 대한 vector를 만들어서 배포하였습니다. 하지만 용량이 커서 작은 용량에서는 어렵죠. 그래서 작은 용량의 word2vec vector로 존재합니다. vect...
2-line summary Doc2vec는 각 Document를 vector로 표현하는 모델입니다. input을 word2vec으로 넣고, output을 각 document에 대한 vector를 설정하여 꾸준히 parameter를 fitting합...
왜 했는데 공백이 남아있지? 요즘 일이 있어서 간단하게 string을 처리하고 있습니다. 특히, 오늘은 pdf로부터 텍스트 데이터를 읽어서, 텍스트를 전처리해야 하는 일이 있었죠. 일단 아주 간단하게, 을 사용해서 공백을 삭제했는데, 공백이 안 ...
pdfminer is better than others 가끔 pdf로부터 text data를 읽어야 할때가 있습니다. 처음에는 pypdf2, pdftotext를 사용하려고 했습니다만, pypdf2의 경우는 text에서 띄워쓰기가 날아가서 toke...
3-line summary textRank는 pagerank를 text에 접목시킨 것이다. 이 때 사용하는 Graph는 word를 node로 하여 문장 내 공동출현 값을 edge의 weight로 주는 경우가 있고 혹은 sentence를 node로...
3-line summary gensim에서 Doc2vec을 학습하기 위해서는 각 문서들을 의 형태로 표현하고 학습함. 이 때 는 반드시 unique documentID이어야 하는 것은 아니며, 인스타그램 태그처럼 여러 개를 동시에 넣을 수도 있습...
2-line summary word2vec의 경우, 존재하지 않는 word(vocab에 등록되지 않은 word)에 대해서는 vector로 표현해주지 못합니다. 반면 fastText의 경우는, word와 word간의 형태적 유사성을 고려함으로써, ...
2-line summary gensim은 word vector를 초기화할 때, seed 값을 이용하며, 하나의 코드 실행 내에서 seed륿 변경하지 않는 한, 값은 동일하게 설정된다. 하지만, 서로 다른 코드 실행에서는 초기 값이 달라질 수 있으...
intro 사실, 우리는 10진법의 세상에 살고 있지만, 컴퓨터는 2진법의 세상에 살고 있습니다. 물론, 우리가 변수를 선언 및 정의할 때 이진법을 사용하지는 않지만, 컴퓨터는 이진법으로 계산을 처리하죠. 오늘 이야기할 부분은 몰라도 되지만, 재...
2-line summary stopwords는 보통 "너무 빈번하게 나와서 아무 정도가 없는 'a'와 같은 단어들"을 말합니다. 그리고,에 이미 정의되어 있죠. stopwords and nltk.stopwords 자연어처리를 할때, 너무 빈번하게...
1-line summary 보통 이라고 쓰지만, 여기에 parameter를 넘겨주면 넘어간 리스트의 모든 원소를 지워준다. strip better 사소합니다만, 보통 문자열의 양쪽 공백을 지워줄 때 다음과 같이 처리하죠. 이게 다 인줄 알았는데,...
2-line summary 는 텍스트에서 빈번하게 등장하는 bi-gram을 발견해주는 모델입니다. 만약, 2개의 word-token만 붙이는 것이 아니라, 여러 word들을 이어 붙이고 싶다면, 을 반복하여 새로운 모델을 만들어줘야 합니다. Bi...
intro 가끔 python으로 문자열을 처리하다 보면 앞에 라는 문자 하나가 붙는 것을 볼 수 있습니다. 출력은 문제없이 되니까, 그냥 써도 문제가 없을 때가 있지만, 에러가 발생한다거나, string간의 비교를 정확하게 못해줄때가 있죠. py...
JSON: JavaScript Object Notation 우선 JSON은 JavaScript Object Notation의 줄임말이며, python의 dictionary와 유사하게, (key, value)의 형태로 값을 저장하는 것을 말합니다....
python에서 한글과 영어를 함께 출력할 때, 줄이 안 맞습니다 간단한 코드를 보여드리겠습니다. 종종, 한글과 영어가 혼재되어 있는 결과들을 칼럼별로 다음처럼 출력할 때가 있죠. 하지만, 결과를 보면 마음같지 않습니다. 분명히, 를 사용하였으니...
networkx.multigraph 사용하기. 의 경우 network(Graph)를 방향성(directionality), 다중-Edge-가능여부에 따라 총 4가지로 구분하죠. nx.Graph() : 방향성이 없고, node간에 하나의 edge만 ...
network에서 centrality를 계산할 때, 기본적으로는 edge의 weight를 모두 1로 가정합니다. 이럴 때는 상관없지만, weight 값에 따라서, centrality가 달라질 때, 그냥 아무 생각없이 weight를 그대로 넘겨주지...
networkx - Subgraph. networkx에서 어떤 현상을 Graph로 모델링한 다음, 어떤 부분만 특정하게 보고 싶을 때가 있습니다. 가령, "특정 노드들"만 포함되거나, "특정 Edge들"만 포함되거나, 하는 식으로 보고 싶을 때가...
networkx - closeness centrality network에서 closeness centrality는 "노드 u에서 다른 모든 노드들까지의 거리의 합의 역수"를 말합니다. 즉, closeness centrality가 높으면, 다른 모...
selenium with headless selenium은 python을 이용해서 웹브라우저를 컨트롤하는 라이브러리입니다. 즉, 웹에서 필요한 정보들을 비교적 자유롭게 크롤링해서 가져올 수 있다는 장점이 있죠. 다만, 그냥 selenium을 실행...
selenium으로 웹브라우저를 조종하면서, 그 과정에서 웹페이지를 크롤링해올 때, "10개씩 보기", "20개씩 보기", "50개씩 보기", "100개씩 보기"와 같은 버튼을 볼 때가 있습니다. 당연히 이럴 때면, "100개씩 보기"를 눌러서,...
networkx - centrality with weight network에서 중요한 Node를 추출하기 위하여, centrality를 분석합니다. 보통은 Network 상에서 node간의 거리를 활용하여 이 centrality를 계산하게 되죠....
networkx - centrality with weight 어떤 대상/현상을 네트워크로 모델링한 뒤, 보통 "그래서 가장 중요한 Node/Edge가 무엇인가?"를 찾는 작업을 많이 합니다. 이 작업을 보통 Centrality 분석 이라고 하죠....
networkx - MultiGraph에 대해서 Centrality 계산하기 networkx에서는 Graph를 총 4가지 방법으로 표현할 수 있습니다. 방향성(Directionality) 그리고 Multiple-Edge에 따라서 2개로 나누어 ,...
저는 대상/현상을 네트워크로 모델링하고 네트워크 적인 분석 법을 사용하여 대상 네트워크를 분석하는 일을 주로 수행합니다. 그리고, 그러다보니, 세상의 많은 현상들을 결국 "네트워크"적으로 바라보게 되죠. 동시에 저는, 한국 힙합의 오랜 팬이기도 ...
한국 힙합씬 피쳐링 네트워크 분석. 저는 대상/현상을 네트워크로 모델링하고 네트워크 적인 분석 법을 사용하여 대상 네트워크를 분석하는 일을 주로 수행합니다. 그리고, 그러다보니, 세상의 많은 현상들을 결국 "네트워크"적으로 바라보게 되죠. 동시에...
한국 힙합씬 피쳐링 네트워크 분석. 저는 대상/현상을 네트워크로 모델링하고 네트워크 적인 분석 법을 사용하여 대상 네트워크를 분석하는 일을 주로 수행합니다. 그리고, 그러다보니, 세상의 많은 현상들을 결국 "네트워크"적으로 바라보게 되죠. 동시에...
한국 힙합씬 피쳐링 네트워크 분석. 저는 대상/현상을 네트워크로 모델링하고 네트워크 적인 분석 법을 사용하여 대상 네트워크를 분석하는 일을 주로 수행합니다. 그리고, 그러다보니, 세상의 많은 현상들을 결국 "네트워크"적으로 바라보게 되죠. 동시에...
Intro. Word Mover's Distance(WMD)는 "사용자가 제출한 query에 대해서 가장 관련있는(relevant) 문서들을 줄수 있도록 해주는, 머신러닝 분야의 유망한 기술"입니다. 이 tutorial에서는 두 document에...
Earth Mover Distance(EMD) Earth Mover Distance(EMD)는 "확률 분포 A를 확률 분포 B로 변환할때 필요한 일의 양"을 의미합니다. 여기서는 확률 분포라고 general하게 말하였지만, 간단하게는 그냥 "하나...
Intro 요즘 저는 FastText를 이용해서 단어의 의미를 학습시키고 있습니다. word2vec도 doc2vec도 있습니다만, fasttext의 경우는 vocabulary에 없는 단어들이라도 형태적인 유사성을 고려해서, 의미를 파악할 수 있다...
Intro. 요즘은 자연어처리를 사용하여 논문을 써야 합니다. 주로, 전처리 쪽을 담당하고 있기는 하지만요. 주로 을 사용하고 있으며, Gensim - Documentation에 있는 내용들을 공부하여 다음과 같이 정리하였습니다. 작성 시간 순....
LDA model등을 공부하기 전에 gensim - Core Concept - topics and transformations를 먼저 공부해서 정리해두도록 하자.
나의 목적은 결국 "composite word"를 이해할 수 있도록 학습을 시키는 것을 말함. 여기서는, 그렇다면 fastText를 학습시킬때, 2-line summary word2vec의 경우, 존재하지 않는 word(vocab에 등록되지 않은...
Intro node의 uniqueness가 보장되지 않은 network를 대상으로 network 분석을 수행하고 있습니다. node의 uniqueness가 보장되지 않았다는 말은, "현재의 network에서 서로 다르게 표현된 두 node가 정말...
2-line summary intro 지금까지 저는 word2vec도 공부했고, doc2vec도 공부했습니다. 그리고, doc2vec은 word2vec과 연결되어 있죠. 우선 간단하게 지금까지 공부한 것들을 복습해보겠습니다. AGAIN: word...
Intro: What is semi-supervised learning semi-supervised learning은 "비교적 적은 양의 label data로부터, labeling되어 있지 않은 unlabeld data에 대해서 label을 붙이...
Intro python으로 코딩을 하다가, 를 사용해서 뭘 좀 처리하고(보통은 ML 모델에 넘기죠), 이 결과를 json 파일로 저장하려고 할 때 다음과 같은 오류가 뜰 때가 있습니다. 대충 "Type"이 문제고, int64의 변수 타입은 jso...
Intro python으로 코딩하면서, 가장 많이 사용하는 아이가 바로 dictionary입니다. 필요에 따라서 그냥 set operation처럼 쓸 수도 있고, json으로 serialization하기도 편하고 다양한 편리함을 갖추고 있죠 UP...
Intro 우리가 보는 웹페이지는 크게 head, body로 구성되어 있죠. 그리고 head에는 로 작성된 아이들이 있는데, 보통 meta-data라고 무릅니다. meta-data는 "데이터에 대한 데이터"라고 생각하시면 됩니다. 많은 경우, 우...
2-line summary 에서 model의 의 default는 임. 이는 을 실행할 때, 이전에 업데이트된 weight(coefficient)를 초기화하고 다시 fitting한다는 것을 의미한다. 만약 를 True로 설정하고 진행한다면, 을 실...
Intro 코딩을 하다가, 대용량의 데이터를 가져올 때, 용량이 너무 커서 램에 한번에 올리기가 어려운 경우, generator/iterator를 사용하는 경우들이 있죠(엄밀히 따지면 generator와 iterator는 다르지만 이 글에서는 차...
Intro 사실 사소한 질문입니다. classification 문제를 풀 때, Data Y에 대해서 class Label을 지정해주죠. 즉, 만약 우리의 의 데이터가 다음과 같다면, 우리는 10개의 sample을 가지고 있으며, 0 아니면 1로 ...
2-line summary 은 여러 weight fitting을 까지 수행하는 경우를 말하고, 은 딱 1번의 iteration만을 진행하는 것을 말한다. 따라서, 만약 'converge'하지 않는다는 조건 하에서, parameter 를 10으로 ...
Intro 이 글의 내용을 정리하고 번역하였습니다. Calibration of Predictions 흔히들 Calibration은 "실제 현상에서의 빈도"와 "예측 모델을 통해 예측된 확률값"이 같은 정도를 말한다고 보시면 됩니다. (기본적으로는...
Intro 맥북을 새로 샀습니다. 설정들을 하나씩 해주는데, 아무래도 귀찮으니까 하는 김에 다 정리해두려고 합니다. First macbook byebye 제가 처음으로 산 애플 제품이 바로 맥북(2015년 형 Early)였습니다. 너무 예전이라서...
Intro VScode를 IDE로 사용하고, python lint로는 flake8를 사용하고 있습니다. 전반적으로 좋은데, 몇가지 설정을 고치고 싶어서, 그 방법을 정리합니다. flake8 in terminal 은 커맨드라인에서 돌아가는 명령어로...
Intro - flake8 저는 VS-code를 IDE로 사용해서 코딩을 합니다. 그리고, 예전에는 컴퓨터가 좀 좋지 못해서 pyhon-linter 를 사용하지 않았는데, 컴퓨터를 바꾸고 나서는 딱히 램 등에 문제가 없어서 설치해서 사용하고 있죠...
Intro fasttext는 2017년 당시에 유행했던 방법론이며, word2vec이 Out-Of-Vocabulary 문제를 해결해주지 못하는 반면, fasttext의 경우는 word과 word간의 형태적 유사성을 n-gram의 단위에서 고려함으...
2-line summary python은 string에 대해서 object interning의 방식으로 관리를 한다. 이는, 메모리의 효율적인 관리를 위해 같은 문자열을 중복으로 메모리 공간에 확보하지 않으려는 기법이다. 는 identity te...
는 를 사용해서 비교할 것 python 코드 내에서 True를 비교할 때는 다음의 코드를 써야 합니다. C에서는 True, False라는 것이 정확하게 존재하지 않고, 그냥 이면 False, 이면 True로 생각해서 처리했죠. 그렇게 해도 문제는...
Intro - 같은 Object는 여러 번 생성하지 말자 다음의 파이썬 코드를 봅니다. 분명 서로 다른 변수이므로 다른 메모리 공간에 존재해야 하는데, 같은 메모리 공간을 가지고 있는 것을 알 수 있죠. 이게, 본 글을 쓰게 된 이유입니다. 왜 ...
Intro - lambda 함수와 def 함수는 무엇이 다른가 python에서 함수를 정의하는 방법은 2가지 입니다. 식을 이용해서 변수에 assign해준다거나, 아니면 구문을 이용해서 만들어준다거나 하는 방식이죠. 이것이 lambda 식을 이용...
Intro - lambda function을 assign하지 말아라 다음과 같은 매우 간단한 코드가 있습니다. lambda 함수를 변수에 할당해서 사용하죠. 언뜻 보기에는 특별한 문제가 없는 것처럼 보이지만, 아래와 같이 코드를 사용할 경우 fl...
what is enum? C로 프로그래밍을 입문하신 분들은 을 한번쯤은 사용해보신 적이 있을 것 같습니다. 물론, 이게 딱히 시험에 나오는 놈도 아니고 하니까, 굳이 기억해두지 않기는 해요. 별로 필요하지 않기도 하고요. 하지만, 을 쓰면 코딩할...
datetime.datetime 은 날짜를 나타내는 과 시각을 나타내는 을 모두 가지는 class입니다. 가장 범용적으로 많이 쓰이는, class죠. now or today 현재의 시각을 알고 싶을 때는 나 를 사용합니다. 는 "협정세계시"를 의...
datetime.time class는 그저, '시간'만을 표시하는 class입니다. 날짜나 요일등은 전혀 중요하지 않고 그냥 시간만이 중요할 때 쓰는 class죠. 다음 코드에서와 같이, time object을 정의하고 사용할 수 있습니다. 또한...
은 다양한 argument를 가지는 함수에 대해서, 특정한 argument를 제한하여, 좁은 기능의 function을 리턴해주는 함수를 말합니다. 가령, 라는 함수가 있을 때, a의 값을 특정 값으로 고정하고, b, c만 input으로 받아들이는...
는 원래 python2에는 built-in으로 있었으나, 지금은 없어진 함수입니다. 동작하는 방식이 약간 특이한데, 만약 우리에게 라는 리스트가 있다면, A와 B에 대해서 특정 연산을 해주고, 그 결과를 다시 C와 해주고, 이런 식으로 연쇄적으로...
복잡한 함수를 간단한 함수로 변환해주는 function - ex: 다른 방법으로 를 이용해서 정의할 수 도 있다. - : 함수 안에 nested-함수를 정의하고, 이 nested-함수를 함수 내에서 리턴하면, 해당 nested-함수는 함수 외부에...
reference networkx.algorithms.centrality.secondordercentrality
Intro - python에서 통화 형식 출력하기 python에서 통화를 출력하는 간단한 방법을 정리합니다. 매우 쉽죠. 저는 f-string을 사용해서 통화로 출력해줍니다. 다음처럼 하면 되죠.
np.random.choice with multiple times 요즘에는 취미삼아, lotto 시뮬레이션 프로그램을 돌려보고 있습니다. 쓰고보니 거창해보이지만, 사실 로또는 시뮬레이션이랄 것도 없죠. 그냥, 1부터 46번까지의 숫자 중에서, 보...
Intro - multiprocessing.cpucount 값이 이상한데? 최근에 간단하게나마 병렬프로그래밍을 공부하고 있습니다. 라이브러리를 사용해서, 간단하게 좀 건드려보고 있는데, 간단하게 아래의 코드를 실행해본 결과 제 CPU의 수가 8개...
Issue 그럼, 엄밀히 따지면 프로세서가 아니라 "스레더"인 셈 아닌가. 하이퍼스레딩은 일부러 하나의 물리적 프로세스가 멀티스레딩이 가능하도록 함으로써, 논리적으로 프로세서의 수를 뻥튀기 한 것에 가까움. 멀티프로세싱과 멀티스레딩은 다르다. 그...
List 내 Inversion 개수 찾기 Array 혹은 List가 있을 때, 현재의 상태를 Sorted와 비교하여 얼마나 차이가 있는지 확인하려면, 현재 순서가 반대로 되어 있는 pair들이 얼마나 있는지 확인하면 되겠죠. 이렇게 역순으로 되어...
이상한 짓을 합니다. - 비어 있는 list 를 만들고요. - reference variable 가 를 지칭하도록 합니다. - 그리고 안에 를 넣어줍니다. 좀 이상하지 않나 싶지만, 오류 없이 잘 돌아갑니다. 그냥 print해서 안에 있는 값을 ...
Duck Typing "어떤 것이 오리(Duck)인지는 그의 행동을 통해 판단해야 한다"라는 개념이 바로 Duck Typing입니다. 달리 말하면, "처음부터 Type이 정해진 것이 아니라, "오리로서 갖춰야 하는 method들이 구현되어 있으면...
typo "typographical Error"의 약자로 "오탈자"를 말한다고 보시면 됩니다. 많은 IDE에서 기본적으로 typo에 대해서 알림고치라고 말해주기는 하는데, Comment에 대해서도 고치라고 말합니다. 가령 위 코드에서 부분을 고리...
PyCharm - Why Install PyCharm 기존에는 VScode를 사용해서 python 개발을 진행했습니다. 사실 그동안 큰 불편함없이 개발을 해오기는 했는데요, 굳이 PyCharm을 설치하기로 한 이유는 대략 다음과 같습니다. - J...
다음과 같이, list에 새로운 원소를 넣어주는 함수가 있습니다. 뭐, 아무 문제가 없죠. 그런데, 우리가 조금 깔끔하게 하려고 함수 를 다음과 같이 변경했다고 해봅시다. default argument를 정해주는 것이죠. 에 아무 값도 전달받지 ...
python에서 dictionary는 매우 유용한 자료구조이기는 한데, 가 dictionary에 존재하지 않는 경우를 고려해야 해서 꽤 귀찮죠. 가령, 에 있는 원소들의 빈도를 센다고 하면 다음과 같이 코딩해야 합니다. 별것 아닌데 꽤 귀찮죠. ...
function은 보통 상속(Inheritance)에서 상위 class의 method에 접근할 때 사용합니다. 가령 다음과 같이 간단한 class의 method를 사용할 수 있죠. 보통, 이렇게 간단하게 '바로 위의 부모 class'에 접근하기 ...
python - collections - deque나 list보다 빠를까? 결론부터 말하자면, Queue로 쓰이는 경우에만 가 보다 빠릅니다. 일단 deque는 list처럼 와 같이 index에 따른 접근이 불가하기 때문에, 중간에 있는 값에 접...
python - multiple Inheritance python에서는 multiple inheritance(다중 상속)이 가능합니다. 다중 상속은 말 그대로 "2개 이상의 class를 상속받는 것"을 말하죠. 다음 코드에서 class 는 Cla...
ABC(Abstract Base Class)는 "구현되지 않고, 선언만 되어 있는 method가 포함된 class"를 말합니다. 구현되어 있지 않고 선언만 되어 있다는 것은, 이 ABC를 상속받은 Child Class에서 해당 method를 정의...
python class 정의시 다음 4가지 method를 설명합니다. - : 보통 을 생성자라고 알고 있지만, 사실 메모리를 확보해주는 진짜 생성자는 입니다. 아래 코드에서는 이 부분에서 생성될 수 있는 Object의 개수를 제한하고, 추가로 생...
python으로 개발을 길게 하는 일이 종종 있는데, 귀찮아서 그냥 한 파일 내에 모든 함수를 우겨넣고 진행하는 경우들이 많습니다. 뛰어난 개발자라면 어떤 짓을 해도 문제가 없습니다만, 보통의 사람들은 모두 그렇지 않고요, 그냥 저렇게 해버리면 ...
python에서 class의 기본 연산자를 지원하는 method를 정의합니다. 테스트해보면 잘 되는 것을 알 수 있습니다.
python을 이용해서 여러 pdf 파일을 하나로 합쳐보려고 합니다. 코딩이 아니라, 다른 방식으로 하려면 타 서비스를 사용해야 하는데, 이 서비스에서 pdf를 갈취하는 것은 아닌지 확신이 들지 않더라고요. 특히 pdf에는 민감한 자료들이 있는 ...
일단 Pillow를 설치합니다. 그리고 다음 코드를 실행하면, 변환해줍니다. pip를 통해 설치한 건 이지만, import할때는 을 사용합니다.
Global Moran' I Moran's Index는 특정 구역 혹은 관계들 속에 군집이 존재하는지를 통계적으로 검정하는 방법입니다. Null Hypothesis: "군집이 존재하지 않는다", 즉, 모든 구역이 Randomness를 가진다는 것...
python에서 누적 정규 분포 함수(CDF, Cumulative normal Distribution Function)을 계산하는 방법을 정리했습니다. 를 이용하면 다음과 같습니다. 를 사용하지 않고 직접 만들어서 처리하는 경우에는 다음과 같죠....
python - Django Django는 웹프로그래밍에서 가장 많이 사용되는 python 기반 프레임워크입니다. 저는 개인적으로 flask가 쉽게 뚝딱뚝딱 만들기 좋아하기는 하지만, flask는 유지보수 측면에서 좀 어려움이 있는 것 같아요. ...
Django, Spring, ROR(Ruby On Rails)는 모두 MVC(Model - View - Controller)라는 패턴을 따릅니다. MVC는 특정 언어에 국한된 것이 아니라, 소프트웨어 설계적인 접근인데 각각 다음과 같은 의미를 가...
MVC니 다 필요 없고 일단 server를 띄워보도록 하겠습니다. View - index.html view는 사용자에게 보여지는 문서를 말합니다. 그냥 html 문서라고 생각해도 문제가 없죠. 을 다음처럼 만들어 줍니다. Controller - ...
사실 html 문서들은 서로 중복을 피해서 유지보수를 편하도록 하게 위해서 다양한 Template Langue들이 존재합니다. django는 Django Template Language(DTL)을 사용합니다. Passing parameter 백엔...
html 문서 내에 다른 html 문서를 집어 넣을 수 있습니다. 가령 아래와 같은 를 다른 문서에 집어넣고 싶다고 하겠습니다. 이 때는 아래 처럼 를 사용해서 넣어주면 됩니다.
은 다음처럼 정의되어 있다고 하겠습니다. 내부를 자세히 보면, block으로 표시된 부분이 있죠. 은 다음처럼 정의됩니다. 을 extends하고, 앞서 정의한 , 를 대체해 줍니다. 를 사용하면, block에 원래 정의되어 있는 default 를...
Controller에서 String을 에 묻혀서 View로 보내는 방법을 정리하였습니다. views.py - MainController 우선 Controller를 만들어 줍니다. 에 새로운 컨트롤러를 추가해줍니다. 컨트롤러 내부에서는 의 형태로 ...
우선 를 사용하여 현재 사용가능한 conda environment를 확인해봅시다. 표시가 되어 있는 env가 현재 활성화되어 있는 env입니다. 저는 로 변경을 해주려고 합니다. 우선 를 사용해서 conda env를 활성화해줍니다. 그 다음 를 ...
css, javascript, image와 같은 static 파일들을 Django 프로젝트 내에 집어넣기 위해서는 다음의 과정을 따르면 됩니다. 우선, 에서 static css file을 집어넣어주려고 합니다. head 부분에 다음의 부분을 넣어...
사용자가 html 문서의 tag로부터 submit한 값을 컨트롤러가 전달받아서 처리해주는 작업을 정리합니다. template with form submit 에 다음 내용을 작성해줍니다. 보는 것처럼, GET, POST의 방식으로 submit하는 ...
CSRF는 "Cross Site Request Forgery"의 약자로, 사용자의 의도와 상관없이 사용자의 요청(Request)에 다른 요청을 숨겨서 전송하도록 하는 방법을 말합니다. 가령 사용자가 특정 POST를 보낼 때, 여기에 다른 POST...
보통 html에서 form 요소를 작성할 때는 다음과 같이 작성합니다. 간단한 input의 경우는 다음처럼 작성해도 아무 문제가 없습니다만, input이 여러 개이거나, 잘못된 input에 대해서 백엔드에서 프론트엔드로 메세지를 전달해주기 위해서...
mongoDB - python python에서 mongoDB에 접속해서 데이터를 insert, select, update 등을 해보려고 합니다. 우선 를 설치해줍니다. Basic Usage pymongo를 사용해서 서버에 접속하고, collect...
conda를 사용해서 새로운 python 독립 환경을 만들기 위해서는 다음 커맨드를 사용하면 됩니다. 전체 command들을 보여드리면 다음과 같습니다. : 현재 설치되어 있는 conda environment들과 활성화되어 있는 conda env...
python library인 requests는 http 통신을 위한 python library입니다. 그냥 "웹의 리소스들에게 데이터를 보내고 받는 일들을 한다"라고만 생각하셔도 됩니다. Install requests 일단 설치부터 해보겠습니다....
Google Sheet API를 사용하여 python에서 Google Sheet의 데이터를 가져오는 방법을 정리합니다. 물론 gspread를 사용해서 가져올 수도 있고 이 라이브러리가 github에서 Star가 5k가 넘고 보면 해당 라이브러리가...
맥에서 다음과 같은 코드로 selenium에서 chrome browser를 사용하려고 하는 경우에 아래와 같은 오류가 발생합니디. chromedriver가 설치되어 있지 않다는 이야기죠. 를 사용해서 chrome driver를 설치해줍니다. 코드...
mongoDB - sort, limit, skip mongoDB의 find method에서 정렬(sort), 처음 n개로 제한(limit), 처음 n개를 제외(skip)하여 결과를 리턴하는 방법을 정리합니다. 저는 python에서 mongoDB에...
mongoDB를 사용하여 특정 DB를 백업하고 복구하는 방법을 정리합니다. 그냥 mongodump를 사용하여 백업하면 된다고 하는데 실제로 해보니까 다음과 같은 오류가 발생합니다. 구글에서 찾아봐서 stackoverflow - mongodb - ...
얼마 전에 mongoDB tools의 를 사용하여 백업하는 방법을 정리했습니다. 그런데, 이 를 사용한 백업이 결국 그냥 모든 document를 읽어서 json과 같은 파일로 저장해주는 것처럼 보이더라고요. 이럴 거면 그냥 내가 직접 mongoD...
mongoDB - distinct 를 사용하여 특정 칼럼의 distinct list를 가져올 수 있습니다. 아주 간단한 코드는 다음과 같습니다. 는 결과로 를 반환합니다. 보통의 sql에서는 2개 이상에 대해서 distinct tuple을 가져올...
mongoDB의 aggreation을 정리합니다. 의미적으로는 SQL의 group by 라고 생각하셔도 됩니다. 저는 python을 사용해서 mongoDB에 접속합니다. aggregation - basic 를 사용하기 위해서는 pipeline이라...
konlpy를 사용하여 한글 문장에서 noun, pos등을 뽑아내는 방법을 정리합니다. konlpy에는 , , , , 와 같은 형태소 분석기(POS tagger)가 존재합니다. 해당 형태소 분석기들은 익숙한 단어들에 대해서는 명사를 잘 뽑아주지만...
konlpy의 경우 이미 학습된 데이터를 바탕으로 일반적인 단어들에서 명사를 뽑아내 줍니다. 그러나, 비교적 새로운 단어들인 "파이썬", "파이콘"과 사람이름과 같은 고유명사들에 대해서는 명사를 잘 추출해주지 못하죠. 따라서, 만약 내가 가지고 ...
markdown에서는 table을 다음과 같이 표현합니다. 이걸 자동으로 만들어주는 python code를 만들었습니다. 어려운 코드가 아닌데, 지금 제가 필요해서 대충 짜서 사용하려고요 호호
shell에서 conda 명령어 자동완성이 되지 않아서, 세팅해주려고 합니다. conda - enable tab completion 문서를 확인해 보면, bash shell에서는 conda version 4.3 이하에서만 지원된다고 나와 있습니다...
conda - conda export pkgs conda 명령어를 사용하여, 현재 환경에서 설치된 패키지들을 확인하려면 다음 명령어를 사용하면 됩니다. 와 는 기본적으로 같다고 생각하시면 됩니다. 를 사용하면, 다음과 같이 깔끔한 형태로 정리해 ...
스포츠에서 첫번째 경기를 이기는 것은 얼마나 경기에 영향을 미치는가? 많은 스포츠에서 "첫번째 경기를 잡는 것이 중요하다"라는 말이 있죠. 7전 4선승제 라고 봤을 때, 첫번째 경기를 이기게 되면, 남은 6경기에서 3경기만 잡으면 되므로 우승 확...
python에서 시간을 다룰 때는 보통 library를 사용합니다. 은 "날짜 + 시각"을 는 시간 차이를 표현하죠. 간단하게 다음처럼 사용할 수 있습니다. 즉, 시간 차이를 표현하고 연산을 사용하려면, 를 사용하면 되긴 하는데요. 그냥 간단히 ...
일반적으로 숫자를 표기할 때, 3 digit마다 comma를 집어넣습니다. 이는 1000을 기본 단위로 하는 미국식 숫자 쓰기 방식인데요. thousand -> million -> billion 으로 되어 있어 3 digit마다 comma를 찍어...
Neovim설정하기 NeoVim은 에서 설정합니다. 없을 경우 폴더를 만들어 주고요. 을 만들어주고 처럼 파일 내용들을 작성해줍니다. theme의 경로가 달라졌기 때문에 기존 theme 을 가져와서 복사해줍니다. pkg manager 설치하기 -...
Install Vundle, Jedi-Vim Vundle을 이용해서, jedi-vim을 설치해봅니다. 에 아래 내용을 추가해줍니다. 그리고 vim 내에서 을 실행해줍니다. python 파일을 열어보니 아래와 같은 오류가 발생하는데 흠. 이건 pa...
pypy00 - Before Install PyPy 우리가 일반적으로 윈도우에서 사용하고 있는 python은 사실상 CPython입니다. 우리는 python 명령어 등으로 프로그래밍을 한다고 생각하지만, 그 뒷단에서는 각 python 명령어를 C...
Vim에서 프로그래밍을 하기 위해, AutoComplete Plugin 인 github - YouCompleteme - Installation를 설치하려고 하였으나, 결국은 되지 않아서 그 실패기를 정리합니다. macOS Monterey(12.1...
python completer를 Jedi에서 coc.nvim으로 변경해봅니다 처음에는 Jedi를 사용해서 python auto complete를 사용했습니다만, .(dot)을 누른다음, popup이 뜨는 데 까지 너무 오랜 시간이 소요되더군요. ...
작성한 code에 대해서, 잔소리해주는 lint를 설치해보기로 합니다. 보통은 코드를 작성한 다음, 커맨드 라인에서 다음의 형태로 실행합니다만, 이렇게 하게 되면 vim > bash > vim의 순서로 왔다갔다 해야 한다는 번거로움이 있죠. vi...
python으로 개발하고 로 돌리는데 속도가 너무 느리더군요. 그래서 를 사용해서 돌리려고 보니, 다음과 같은 오류와 함께 돌아가지 않았습니다. python에는 가 설치되어 있지만, pypy에는 가 설치되어 있지 않기 때문이죠. pypy에서 pi...
요즘 친구들과 wordle 게임을 하고 있습니다. 그냥 5 문자로 된 word를 맞추는 게임인데요, 이게 하루에 1기기로 1번만 할 수 있어서인지 모르겠지만 꽤 오랫동안 매일 해오고 있습니다. About Wordle wordle은 Josh War...
scatter 에 point를 그릴 때, point의 수가 늘어남에 따라서 그리고 저장하는데 얼마나 시간이 걸리는지 간단하게 테스트 해봤습니다. '.svg' file로 처리했을 경우, 1,000,000 개를 그릴 때, file은 100MBd, 시...
python에서 file size 확인하는 방법은 다음과 같습니다.
Problem python requests package 를 사용해서 웹 크롤링을 할 때, 웹브라우저에서는 잘 보이는 문서가, requests 로 가져올 때는 403 forbidden이 발생하는 경우가 있습니다. code는 간단히 다음과 같죠. ...
A context manager in Python is a programming construct that allows you to manage the setup and teardown of resources in a structured and ...
When using Selenium for web scraping, it's common to encounter situations where the browser is not closed properly, especially if an exce...
Recently, I installed the latest version of PyFlake8, a widely used Python linting tool. However, I noticed that after the installation, ...
JSON - Preserving Non-ASCII Characters When using the module in Python to handle JSON data containing non-ASCII characters, you may encou...
Understanding Python's Folder and Bytecode Optimization When you execute Python code on your local computer using the command , you might...
When dealing with exceptions in Python, we would make use of the traceback module, as demonstrated in the code snippet below. In cases wh...