본문 바로가기

반응형

분류 전체보기

(369)
[영어로] 걔는 그러고도 남아 I'm not surprised at all. 전혀 놀랍지 않다. That's very typical of her. 그녀의 전형적인 모습이다. I'd expect no less of (from) + (someone / something) A: My dog, Jasper, he totally destroyed my sofa. B: How old is Jasper? A: He's 4 months old. B: Well, then I'm not surprised. 그러면 충분히 그럴 만해 / 그러고도 남지 / 충분히 예상이 되는 말이다 That's quite typical of a 4-month-puppy. Then, I'd expect no less of a puppy of that age. A: Did y..
파이썬 dataclasses 표준 라이브러리 파이썬 3.7 버젼은 3.x 버젼에서 유독 중요한 변경 사항이 많이 반영된 버젼입니다. 그 중에 특이할 점은 dataclasses 라는 표준 라이브러리가 소개되었다는 점인데요, 저도 최근에야 사용하기 시작했는데, 파이썬 클래스 작성 시 매우 효율적으로 코드를 구성할 수 있어 소개하고자 합니다. 파이썬의 클래스를 선언하려면 __init__ 메소드에 많은 아규먼트를 전달해주어야 하고 아규먼트가 줄거나 늘때마다 __init__ 메소드 안에서 인스턴스 멤버 변수로 선언해주는 코드 또한 매번 작성해야 했습니다. 따라서 __init__ 메소드에 전달해야 하는 아규먼트가 늘어날 수록 불필요한 코드의 양이 증가하게 됩니다. dataclasses 라이브러리를 사용하면 코드를 훨씬 컴팩트하게 작성할 수 있는데요, towa..
메트로폴리스 (Metropolis) 지난 몬테카를로 시뮬레이션 관련 포스트들은 모두 독립 확률 변수에 기초한 것입니다. 독립 확률 변수란 확률 변수들 사이에 상관관계가 없어 각 확률 변수를 독립적으로 만들 수 있다는 말이죠. 수식으로는 두 확률 변수 $X, Y$에 대해 $p(X,Y)=p(X)*p(Y)$와 같이 표현할 수 있을 겁니다. 하지만 확률 변수들을 독립적이지 않을 때는 어떨까요? 다시 말해서 $n$개의 확률 변수 $x_1, ..., x_n$에 대해서 다음 수식처럼 확률 변수를 독립적으로 분해할 수 없다는 것이죠. 이럴 때에는 메트로폴리스 (metropolis) 알고리즘을 사용할 수 있습니다. $p(x_1, ..., x_n) !=p(x_1)...p(x_n)$ 메트로폴리스 알고리즘은 다음과 같이 동작합니다. 정의역에 있는 독립 난수의 ..
정규표현식을 이용해 문자열에서 숫자 찾기 최근에 급히 여러 줄로 이루어진 텍스트로부터 각 줄마다 숫자를 찾아야 할 일이 있었습니다. 텍스트 파일 형식은 xml과 유사한 처음 보는 파일 형식으로 원래는 관련 파이썬 라이브러리 (BeautifulSoup, xml 등등..)를 이용해 해결하고자 했으나 잘 안되더군요. 마음이 급한 와중에 생각한 것이 텍스트 파일의 규격이 일정하기에 정규표현식 (regular expression)을 이용하면 어떨까 생각해서 급히 stack overflow를 뒤져보던 중 다음과 같은 깔끔한 코드 스니펫을 발견했습니다. import re # Format is [(, ), ...] ss = [("apple-12.34 ba33na fanc-14.23e-2yapple+45e5+67.56E+3", ['-12.34', '33', '..
몬테카를로 시뮬레이션 (5) - 적분 계산하기 몬테카를로 시뮬레이션 (1) - 파이 계산하기 몬테카를로 시뮬레이션 (2) - 온라인 판매자 예제 몬테카를로 시뮬레이션 (3) - 부트스트랩 알고리즘 (bootstrap) 몬테카를로 시뮬레이션 (4) - 범용 몬테카를로 엔진 1차원 적분 몬테카를로 시뮬레이션을 이용해서 충분히 매끈한 곡선을 가지는 피적분 함수에 대해 적분을 계산할 수 있습니다. (충분히 매끈하다는 것은 수학적으로 무한차원의 미분이 가능하다는 것이지만 여기서는 1차원 미분이 가능하다고 가정하겠습니다.) 먼저 $[a,b]$ 사이에서 정의된 $f(x)$ 적분은 다음과 같이 정의됩니다. $I = \int_a^b f(x) dx$ 몬테카를로 적분의 시작은 다음 식들을 만족하는 두 개의 함수 $g(x), p(x)$를 정의하는 것입니다. $p(x) =..
[영어 표현] take 활용 1. take a nap: 낮잠을 자다. I think I'm going take a nap now. 지금 낮잠이나 잘까봐. 2. take a break: 잠깐 쉬다. (무엇을 이어서 하기 전에 잠시 휴식을 취할 때) Do you want to take a break before we continue? 계속 하기 전에 잠깐 쉴까요? 3. take a deep breath: 숨을 깊게 들여마시다. (심호흡을 하다) It's OK. Just take a deep breath and try to relax. 괜찮아. 그냥 심호흡하고 긴장을 풀어봐. 4. take a trip: 여행을 가다/다녀오다. (travel은 조금 더 폭 넓은 개념, take a trip은 일회성) We took a short trip ..
몬테카를로 시뮬레이션 (4) - 범용 몬테카를로 엔진 몬테카를로 시뮬레이션 (1) - 파이 계산하기 몬테카를로 시뮬레이션 (2) - 온라인 판매자 예제 몬테카를로 시뮬레이션 (3) - 부트스트랩 알고리즘 (bootstrap) 이제까지 다뤘던 몬테카를로 포스트들을 기반으로 일반적으로 사용할 수 있는 범용 몬테카를로 엔진을 구현해보도록 하겠습니다. MCEngine 클래스는 여러 일반적인 몬테카를로 계산 및 시뮬레이션 문제들이 상속하여 사용할 수 있는 부모 클래스로서 "simulate_once", "simulate_many" 메소드로 구성됩니다. class MCEngine: """ Monte Carlo Engine parent class. Runs a simulation many times and computes average and error in averag..
몬테카를로 시뮬레이션 (3) - 부트스트랩 알고리즘 (bootstrap) 몬테카를로 시뮬레이션 (1) - 파이 계산하기 몬테카를로 시뮬레이션 (2) - 온라인 판매자 예제 모든 몬테카를로 시뮬레이션의 결과는 데이터 $x_i$가 가우스 분포를 따를 때 다음과 같은 평균입니다. $\mu=\frac{1}{N}\Sigma x_i$ 따라서 이 평균의 오차는 다음과 같이 추정할 수 있는데요, $\delta_{\mu}=\frac{\sigma}{\sqrt{N}}=\sqrt{\frac{1}{N}(\frac{1}{N}\Sigma x_i^2 - \mu^2)}$ 하지만 데이터가 정규 분포를 따른다는 가정이 꼭 필요할까요? 그리고 모집단으로부터 추출된 한정된 샘플들만을 가지고 정확한 모수의 분포를 추정할 수 있을까요? 이때 가장 범용적으로 사용될 수 있는 방법은 부트스트랩 알고리즘입니다. (boot..

반응형