일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
- 인터페이스
- 확률분포
- 분할정복
- Probability Distribution Function
- 베이지안
- Random variable
- 알고리즘
- PostgreSQL
- spring boot
- 기술 통계
- divide and conquer
- Algorithm
- dfs
- 오일러 경로
- 이진탐색
- 추론 통계
- 확률분포함수
- 깊이 우선 탐색
- 표본 추출
- 객체 지향 설계
- dag
- 재설치
- 확률
- 이분탐색
- 확률변수
- Solid
- 다형성
- BFS
- 스프링
- 너비 우선 탐색
- Today
- Total
목록전체 글 (40)
말하는 감자
확률과 확률분포는 모집단에 대한 추론이 얼마나 정확한지에 대한 논리적 타당성을 제시하는 도구이다. 확률이란, 어떠한 사건이 일어날 정도를 나타내는 사건(Event)에 할당된 수들을 말한다. 경우의 수를 통해 나타내는 수학적 확률과 상대도수에 의해 추정하는 통계적 확률이 있다. 확률의 개념 베이지안 법칙 Baye's Theorem 총 확률 정리 (Total Probaility Rule)를 이용하여 베이지안 정리를 이해할 수 있다. 베이지안 법칙은 어떤 사건 A에 대한 사전확률( P(A) )이 부여된 상태에서 어떤 사건 B에 관한 정보가 알려졌을 때 A에 대한 사후확률( P(A | B) )을 구할 때 사용할 수 있다. ex. 직장 남성의 30%가 기관지에 이상이 있다고 알려져 있을 때 기관지 검사를 실시한다..
데이터를 얻는 행위 자체에서도 통계적인 이해와 기술이 필요하다. 당연히 전수 조사는 비용이 크기 때문에 모집단의 일부가 전체를 대표할 수 있다는 근거가 명확하다면 일부의 표본으로 조사분석을 시행하고 모집단 전체의 분석결과로 사용이 가능하다. 중복된 데이터만으로 모집단이 규정되는 과잉 대표 현상, 실제 모집단의 대표성을 나타낼 표본이 아닌 데이터가 표본이 되는 최소 대표 현상 같은 오차를 줄이려면 표본추출 시 표본의 크기보다는 대표성을 가지는 표본을 추출하는 것이 중요하다. 표본 추출 방법 Simple Random Sampling 단순무작위 추출: 추출 모집단에 대해 사전지식이 많지 않은 경우 시행하는 가장 기본이 되는 표본추출법이다. Systematic Sampling 계통 추출: every k-th s..

스프링의 생태계에서 가장 중요한 것은 스프링 프레임워크와 스프링 부트이다. 스프링 프레임워크의 핵심기술은 스프링 DI 컨테이너, AOP, 이벤트 등이 있다. 웹 기술(스프링 MVC, 스프링 WebFlux), 데이터 접근 기술(트랜잭션, JDBC, ORM 지원, XML 지원), 기술 통합(캐시, 이메일, 원격접근, 스케줄링), 테스트(스프링 기반 테스트 지원), 언어(코틀린, 그루비)들은 모두 파생되는 것이다. 과거에는 웹 어플리케이션 개발을 위해서 빌드한 후 톰캣서버를 설치하고 넣고 띄우고 등등 일련의 과정들이 필요했는데, 스프링 부트의 등장으로 빌드와 서버에 띄우는 것 모두 몇줄의 코드만으로 가능해졌다. 그리고 복잡한 설정 세팅 없이 관례에 의해 설정이 이미 존재해서 필요한 부분만 커스터마이징을 해주면..
너비 우선 탐색 각 정점을 방문할 때마다 모든 인접 정점들을 검사하는 알고리즘이다. 처음 보는 정점이 있다면 방문예정이라고 표시하고 별도의 위치에 저장한다. 인접한 정점들을 모두 검사하고 나면, 목록에서 다음 정점을 꺼내어 방문하게 된다. 이 목록은 FIFO의 큐형태를 지니게 될 것이다. 한가지 특징은 모든 정점을 탐색할 수 있다는 것이다. 알고리즘의 큰 틀 # 슈도 코드 # 인접 리스트 or 인접 행렬 adj = [] # 발견 리스트 - false 로 초기화 discovered = [] # 방문 예정 큐 que = deque() def bfs(start): # 1. 시작점을 발견하고 방문 예정에 푸쉬한다. discovered[start] = True que.append(start) # 2. 방문 예정 ..

이진탐색은 정렬되어(올림차순 가정하여)있는 배열에서 원하는 값을 효율적으로 찾는 방법이다. 시간복잡도는 O( logn ). 문제를 풀다보니 이진탐색을 사용하는 경우는 다음이 있는 것 같다. 개인적으로 세가지 경우 알고리즘이 조금씩 달라서 헷갈린다..넹글넹글.. 그래서 오늘 이후로 헷갈리지 않겠다고 정리해본다. 일단 이진탐색 알고리즘에 대해 알고가야 하는 것. start 인덱스와 end 인덱스가 역전될때까지 진행한다. 정확한 일치값 찾는 이진 탐색 # 재귀 호출 버전 def binarySearch(start, end, x): if start list[mid]: return binarySearch(mid+1, end, x) return False # 탐색 실패 # 루프 알고리즘 버전 start, end = ..

들어가기 전 한붓그리기로도 알려진 문제 오일러 서킷은 그래프 이론에서 첫 번째로 연구된 문제로 유명하다. 오일러 서킷은 주어진 도형의 모든 선을 정확히 한 번씩 그리고 시작점으로 돌아오는 문제이다. 결론부터 말하자면, 간선들이 하나의 컴포넌트에 포함되어 있고(부분 그래프가 없고) 모든 정점의 차수가 짝수라면 오일러 서킷은 항상 존재한다. 오일러 서킷을 찾아내는 알고리즘 # 슈도 코드 # 인접 행렬 adj = [[], ... ,[]] answer = [] dfs(here): answer.append(here) for there in adj[here]: while(adj[here][there] > 0): # 방문할 간선을 지운다 adj[here][there] -= 1 # 무향 그래프라면 # adj[there..

그래프의 탐색 알고리즘은 특정 정점을 찾아낸다기 보다는 정점들을 정해진 순서대로 둘러보기 위한 알고리즘으로 이해하는 것이 맞다. 가장 유명한 깊이 우선탐색과 너비 우선탐색의 컨셉과 문제상황들을 살펴본다. 깊이 우선 탐색 현재 정점과 인접한 간선들을 하나씩 검사하다가, 아직 방문하지 않은 정점으로 향하는 간선이 있다면 그 간선을 무조건 따라간다. 더이상 갈 곳이 없는 막힌 정점에 도달하면 마지막에 따라왔던 간선을 따라 뒤로 돌아간다 (재귀호출로 구현한다. 그러면 종료하고 호출시점으로 돌아간다). 가능한 한 그래프 안으로 '깊이' 들어가려고 시도하는 알고리즘이다. 알고리즘의 큰 틀 # 슈도 코드 # 인접 리스트 or 인접 행렬 adj = [] # 정점의 방문 여부 리스트 - false 로 초기화 visite..

그래프의 기본 여러 도시들을 연결하는 도로망, 사람들 간의 지인 관계, 웹사이트 간의 링크 관계 등이 주변에서 찾을 수 있는 연결 구조의 예들이다. 트리에 있었던 부모 자식 관계에 관한 제약이 없기 때문에 다양한 구조를 표현할 수 있는 장점이 있다. 그래프는 다양한 구조가 있지만 트리에 비해 훨씬 더 정적인 용도로 사용된다. 다른 말로 하면 새로운 정점이나 간선을 추가하고 삭제하는 일이 자주 일어나지 않는다는 의미이다. 따라서 대부분의 그래프는 구조의 변경이 어렵더라도 좀더 간단하고 메모리를 적게 차지하는 방법으로 구현한다. 간단한 방법으로 구현한다는 것은 노드(정점)과 엣지(간선)을 간단하게 저장한다는 것인데 1) 노드에 번호를 매긴다. 2) 노드에 해당하는 정보를 배열에 저장한다. 3) 엣지의 정보를..
pandas.DataFrame df.iloc[row_start : row_end , col_start : col_end] # column1 = value 를 만족하는 데이터의 column2 list 가져오기 df.loc[df['column1'] == value,'column2'].values # nan 값을 제외하고 column1 list 가져오기 df[ ~df['column1'].isna() ]['column1'].values # index1 을 기준으로 column 오름차순 나열 df.sort_values(by = 'index1', axis=1, ascending = False) pandas.Series.str # 특정 컬럼에 문자열이 포함되어 있으면 버리기 temp = temp[ temp[searc..