zenn.skin 무료버전 배포중!
자세히보기

전체 글 182

Python/Syntax
[Python] 한 줄에 두 개의 정수 입력 받기 (input, map)

C나 C++에서는 변수형을 미리 알려주고 'scanf' 함수나 '>>' 연산자를 사용해 연속해서 변수를 입력받을 수 있다. 하지만 파이썬의 경우는 input으로 값을 입력받으면 str타입으로 입력 받게 되고 따로 정수로 형변환을 시켜주어야 한다. x, y = input('두 개의 값을 입력: ').split() print(type(x), type(y)) print(x+y) x와 y를 입력받고 둘을 더하고 싶다면, 각 변수를 정수형으로 변환시킨 후 더해주어야 한다. x, y = input('두 개의 값을 입력: ').split() x = int(x) y = int(y) print(x+y) 이 때, map함수를 사용하면 x와 y를 정수형으로 바꿔주는 과정을 줄여줄 수 있다. 함수 하나와 리스트 하나를 입력받..

Python/Syntax
[Python] split

split은 string의 함수로 주어진 문자를 기준으로 string을 나누어 리스트를 반환한다 default는 'white space'로 아무것도 주어지지 않으면 띄어쓰기를 기준으로 나눈다 기준 문자는 리스트에 포함되지 않는다 test ='''This is a test text''' print(test.split()) * 1을 인자로 받은 경우 test ='''This1is1a1test1text''' print(test.split('1')) * split을 이용하면 한 번에 여러 문자를 입력받아 초기화 시킬 수 있다 x, y = input('두 개의 문자를 입력하세요: ').split() print(x) print(y) 여러 개의 변수를 초기화하는 방법 이외에도 split을 이용하면 웹문서를 파싱할 때..

DataScience
몬티홀 딜레마, 몬티홀 문제 풀이

몬티홀 문제 A, B, C 세 개의 문이 주어진다. 한 개의 문 뒤에는 자동차가 있고, 나머지 두 개의 문 뒤에는 염소가 있다. 당신이 A문을 열었고 사회자는 C문을 열어 염소를 확인시켜주었다. 사회자가 당신에게 문을 바꿀지 물어볼 때 당신은 선택을 바꿀 것인가? 조건부 확률과 베이즈 정리를 공부할 때 꼭 접하게 되는 확률 문제이다. 정답부터 말하면 바꾸는 것이 이득이다. 지금부터 왜 그런지 두 가지 방법으로 확률 문제를 풀며 살펴보려 한다. 풀이 1) 조건부 확률 이용 사회자가 각각의 문을 여는 사건을 A, B, C라 하자. 각각의 문을 선택했을 때, 1) 선택을 바꾸지 않는 경우와 2) 바꾸는 경우에 대해서 비교해 보려 한다. 차는 A문 뒤에 있다 가정하자. (바꾼다는 사실이 중요하므로 어느 문을 정..

DataScience
베이즈 정리 (Bayes' theorem)

베이즈 정리는 조건부 확률에 대한 정리 중 하나이다. 사건 A와 사건 B에 대해, 확률 P(A)와 P(B), 조건부 확률 P(B|A)를 알고 있을 때, P(A|B)를 도출해 낼 수 있다. 베이즈 정리는 다음과 같이 증명할 수 있다. 전체 확률의 법칙을 적용하면, 조건부 확률 1. 확률 - 확률은 주어진 사건 공간에서 특정 사건이 선택되는 경우를 수치적으로 나타낸 것이다 - 모델을 만들거나, 만들어진 모델의 성능을 평가하는 데에 사용 가능하다 2. 종속성과 독립성 - � koosco.tistory.com

DataScience
조건부 확률 (Conditional Probability)

1. 확률 - 확률은 주어진 사건 공간에서 특정 사건이 선택되는 경우를 수치적으로 나타낸 것이다 - 모델을 만들거나, 만들어진 모델의 성능을 평가하는 데에 사용 가능하다 2. 종속성과 독립성 - 두 개의 사건이 주어질 때, 한 사건의 발생 여부가 다른 사건의 발생 여부에 대한 정보를 준다면 두 사건은 종속 사건이다. 만약 정보를 주지 않는다면 둘은 독립 사건이다. ex1) 동전을 두 번 던진다. 사건 A는 첫 번째 동전이 앞면인 경우이고, 사건 B는 두 동전이 모두 뒷면이 나오는 경우이다. 사건 A가 일어난다면 사건 B는 일어날 수 없다. 따라서 두 사건은 종속 사건이 된다. ex2) 동전을 두 번 던진다. 사건 A는 첫 번째 동전이 앞면인 경우이고, 사건 B는 두 번째 동전이 뒷면이 나오는 경우이다. ..

Python/Syntax
[Python] 가상환경 설정

최근 아나콘다, VS Code, IDLE 개발환경을 이것저것 사용하다 보니 라이브러리 경로 설정도 헷갈려 이리저리 헤매게 되고, 버전 관리의 필요성을 느끼게 되었다. 원래는 따로 가상 환경을 설정해서 사용하지 않았지만 지금부터라도 별도의 가상 환경을 설정해보려 한다. 1. 가상환경 설정 먼저 터미널에 들어가서 가상 환경을 만들 폴더로 이동한다 다음으로 파이썬 가상환경 생성 명령어를 이용해 가상 환경을 만든다 python -m venv python_virtual_env python_virtual_env는 자기가 설정할 가상환경의 이름으로 바꾸어 적어주면 된다 python2.0이 깔려 있는 경우 명시적으로 python3을 적어주어야 한다 python3 -m venv python_virtual_env 폴더를 ..

DataScience
오차함수와 정규분포와의 관계

1. 오차 함수 다음과 같은 함수를 오차 함수(Error Function)라 한다. 줄여서 erf라고도 한다. 2. 오차 함수와 정규분포와의 관계 오차 함수는 정규분포의 cdf와 밀접한 관계가 있는데 둘의 관계를 확인해 보려 한다. 즉, 정규분포의 cdf와 오차함수는 본질적으로 같은 함수임을 알 수 있다. 오차 함수에 값을 대입하고 평행이동을 하면 정규분포의 cdf를 구할 수 있다. 3. 그래프 확인하기 math.erf 함수를 이용하면 정규분포의 CDF를 구할 수 있다 import matplotlib.pyplot as plt import math def normal_cdf(x, mu=0, sigma=1): return (1+math.erf((x-mu)/math.sqrt(2)*sigma))/2 xs = n..

DataScience
[Matplotlib] 정규분포 그리기

Python을 이용해 정규분포를 그려보려 한다. 정규분포의 pdf는 다음과 같다. 1. 직접 생성 위 식을 함수로 정의하면, 다음과 같다 import matplotlib.pyplot as plt import math def normal_pdf(x, mu=0, sigma=1): return(math.exp(-(x-mu)**2)/(2*sigma**2))/(math.sqrt(2*math.pi)*sigma) 다음과 같이 xs_1에 대한 정규분포를 구해보자(plot에 정수값을 넣을 수 없으므로, x/10을 대입) xs_1 = [x/10 for x in range(-50, 50)] plt.plot(xs_1, [normal_pdf(x) for x in xs_1]) 다양한 정규분포를 구해보면, plt.plot(xs, ..

DataScience
정규분포의 정의와 평균, 분산

1. 정규 분포의 랜덤 변수 정규 분포는 Gaussian Distribution 또는 Normal Distribution이라 한다. 고등학교 때 확률과 통계에서도 배우고 대학교에 올라와서도 제일 중요하게 배우는 분포이다. 정규분포는 중심 극한 정리나 이외에도 여러 공식을 유도할 때도 많이 사용되는 통계에서 가장 중요한 분포이다. 2. 정규분포의 특성 1) 종모양의 분포 : 좌우가 대칭인 종모양의 분포를 갖는다 2) 평균값 = 중앙값 = μ 3) P(x =μ) = 1/2 4) 평균이 0, 분산이 1인 표준 정규분포를 갖는다 5) 표준정규분포는 별도의 표가 존재해 값을 구하기 편하다 3. 평균 이 때, 앞의 식은 기함수와 우함수가 곱해져 기함수이므로, 적분 값은 0이 되고, 뒤의 식을 적분하면, 이 된다. ..