전체 글(92)
-
Secant Method 설명 (python 구현)
2024.02.02 - [데이터 분석/최적화 알고리즘] - Newton's Method 설명 (python 구현) Secant Method 방정식 $f(x) = 0$이 되게 하는 $x$를 찾는 알고리즘 수식 - Newton's Method와 거의 동일하지만 함수 $f(x)$가 미분 불가능해도 쓸 수 있다. - $x_{n+1} = x_n - \frac{f(x_n)}{\left[ \frac{f(x_n)-f(x_{n-1})}{x_n - x_{n-1}} \right]}$ 장단점 - 미분 불가능해도 가능 - Bisection에 비해 빨리 찾는다. - 두 지점의 함수값이 같으면 더이상 탐색이 불가능해짐 구현 소스 코드 class secant: def __init__(self, xn_1, xn, func, tol=1..
2024.02.02 -
Newton's Method 설명 (python 구현)
2024.02.02 - [데이터 분석/최적화 알고리즘] - Bisection Method 설명 (python 구현) Newton's Method 방정식 $f(x) = 0$이 되게 하는 $x$를 찾는 알고리즘 수식 함수 $f(x)$가 해 $x*$ 근처에서 연속이고 미분가능할 때 - $x_{n+1} = x_{n} - \frac{f(x_n)}{f'(x_n)}, \, f'(x_n) \ne 0$ - $|x_{n+1}-x_{n}| \le \text{tol}$일 때까지 반복, `tol`은 임의의 작은 수 장단점 - Bisection Method보다 빠르다. - 과정 중 $f'(x_n)=0$이 되는 지점이 나오면 탐색이 불가능해짐 → 노이즈를 추가하여 빠져나올 수 있음 - 연속이고 미분 가능하다는 조건이 반드시 필요함..
2024.02.02 -
Bisection Method 설명 (python 구현)
Bisection Method 방정식 $f(x) = 0$이 되게 하는 $x$를 찾는 알고리즘 수식 1. 구간 $[a, b]$를 잡는다. - $f(a) \times f(b) < 0$. 즉, $f(a)$와 $f(b)$는 서로 다른 부호 2. 양 끝점에 대해 중점 $c=\frac{a+b}{2}$를 계산한다. - 만약 $f(a)$와 $f(c)$가 서로 다른 부호라면 $b=c$, 아니면 $a=c$ 3. $|f(c)|
2024.02.02 -
머신러닝에서의 Estimator와 Predictor의 차이
머신러닝 모델은 Estimator? Predictor? 데이터 분석, 특히 scikit-learn의 모델을 갖고 놀다보면 estimator와 predictor를 혼용해서 쓰곤 한다. 어떤 예제에서는 `estimator.fit()`을 하고 어떤 예제에서는 `predictor.predict()`를 한다. 분명 둘의 차이가 있고 느낌은 오는데 명확하게 답하기가 어렵다. 그래서 scikit-learn 공식 문서와 다른 글들을 참고하여 정리해보았다. Estimator 추정기 가지고 있는 데이터로 값 또는 데이터 사이의 관계 등을 추정하는 것 예시 표본 평균은 모평균을 “추정”하는 값 머신러닝의 모델을 학습/생성하는 과정 딥러닝의 weights를 업데이트 하는 과정이 추정(관계를 추정) 일반적으로 `.fit()` ..
2024.02.01 -
안 쓰면 손해인 Jupyter Nbextensions
필수 선행 조건 아나콘다 등 가상 환경의 주피터 설치 nbextensions 설치 (`pip install jupyter_contrib_nbextensions`) Nbextensions? jupyter에서 제공하는 편리한 분석을 위한 툴들 필요한 것만 켜고 끌 수 있음 직접 써보고 유용한 것들 위주로 소개 (알파벳순) 가장 추천하는 건 Code Pretty와 Snippets!!!! Code Pretty 개발로 짠 코드를 (내가 짠 것보다) 보기 좋게 만들어 줌 Collapsible Headings Markdown으로 설정한 Headings를 접을 수 있음 Execute Time 셀을 실행한 시간과 걸린 시간 확인 jupyter magic command인 `%%time`을 쓰지 않아도 된다. highlig..
2024.02.01 -
SageMaker 개요
SageMaker란? 완전관리형 기계 학습 서비스로 데이터 전처리부터 학습, 배포까지 수행할 수 있도록 지원하고 있다. 서울 리전 SageMaker 콘솔: Amazon SageMaker | ap-northeast-2 개발자 안내서: Amazon SageMaker란? - Amazon SageMaker SageMaker에서 분석하기 SageMaker에서는 jupyter lab용 EC2를 생성할 수 있으며 크게 두 가지 방법이 있다. 노트북 인스턴스 생성 SageMaker Studio에서 JupyterLab Space 생성 (참고) EC2: 일종의 가상 컴퓨터로 사용자가 메모리, CPU 등 사양을 지정할 수 있다. (참고) 인스턴스: 사양이 정해진 한 대의 가상 컴퓨터(EC2) 클라우드 컴퓨팅에서 인스턴스란 ..
2024.02.01 -
유전 알고리즘 간단 소개
유전 알고리즘 한 줄 요약 생물의 진화 과정인 자연 선별과 유전 법칙을 모방한 확률적 최적해 탐색 기법 유전 알고리즘의 목적 특정 상황에서 내가 원하는 값을 찾기 위해 생물학적인 특성을 모방하여 "최적해"를 찾아내는 것이다. 유전자를 만들어서 세대를 만들고, 세대를 교배해서 자식을 만들고, 교배 방법에는 여러 가지가 있고, 돌연변이는 왜 필요하며 등등 생각보다 많이 복잡하다. 이 글은 간단 소개이기 때문에 최적화 알고리즘 중에 유전 알고리즘도 있다는 사실과 pseudo code, 모식도 정도만 짚고 넘어간다. 주요 용어 유전자(Gene): 각 해의 값(feature) 세대(Population): 최적해를 탐색하기 위한 후보해 부모, 자식 적합도(Fitness): 후보해가 최적해인지 구하는 함수 ex) F..
2024.01.31 -
참가자 중에서 랜덤으로 뽑는 프로그램 (python)
https://github.com/woojangchang/tkinter_apps/tree/master/random_game 용도 한 달에 한 번 강제로 진행하는 모임이 있었고, 진행자는 참여자 중 누군가를 뽑아서 발표를 시켜야 했다. 그런데 진행할 때마다 "왠지" 같은 사람만 계속 발표하는 느낌이고 누군가는 단 한 번도 발표를 하지 않는 느낌이었다. 그래서 이런 프로그램이 있으면 좋겠다고 생각했다. 참가자 리스트를 미리 적어두면 그걸 자동으로 가져올 수 있도록 한 명씩 랜덤으로 뽑고, 뽑힌 사람은 리스트에서 제외 모두가 한 번씩 뽑혔다면 리셋 불참자는 리스트에서 아예 제외하여 리셋하여도 계속 제외되도록 이번 회의에만 별도로 참석한 경우 리스트에 추가 프로그램 랜덤 게임이라고 이름을 붙여보았다. 사용 방법..
2024.01.31 -
wtf python 알아두면 좋은 내용 정리
wtf python이란? What the f*ck Python?으로, python을 쓰다보면 헷갈리거나 이해되지 않는 연산자나 내장 함수들이 있다. 그런 것들을 소개하고 왜 그런 결과가 나오는지 알려주는 github 문서다. 영문: GitHub - satwikkansal/wtfpython: What the f*ck Python? 😱 한글: GitHub - buttercrab/wtfpython-ko: 놀라운 예제들을 통해서 파이썬을 탐험하고 이해해보세요! 일부는 엄청 깊게 파고들어서 찐 개발자들에겐 도움이 될 수 있으나 나 같은 데이터 분석 업무 위주로 하는 준개발자에게는 불필요한 내용도 좀 있다. 그래서 긴 wtf python 문서 중에서 나에게 필요한 내용을 정리해보았다. := 연산자 (a := 3) ..
2024.01.31 -
(DeepL용) python으로 개행 문자 처리해주기
https://github.com/woojangchang/tkinter_apps/tree/master/ctrlc 1. 왜 필요해? PDF로 된 논문들을 읽을 때, 쉽게 읽히지 않으면 번역기를 써야하는 상황이 생긴다. 그 중에서 DeepL 번역기의 성능도 괜찮고 프로그램도 편리해서 자주 사용하고 있다. 하지만 PDF 내용을 복사 붙여넣기를 하면 개행문자 때문에 제대로 번역이 되지 않는 경우가 있다. 근데 그렇다고 꼭 DeepL에만 쓸 수 있는 프로그램은 아니고, 구글이나 파파고처럼 웹 번역기에도 당연히 사용할 수 있는 매우 단순한 프로그램이다. 위 내용을 복붙하면 아래와 같이 개행이 되어 나오고 이를 번역기에 넣으면 제대로 된 번역 결과가 나오지 않는다. 제대로 된 번역 결과를 위해서는 위 개행 문자를 다..
2024.01.30