전체 글 89

[ISL] Statistical Learning ( 통계적 학습 )

Statistical Learning 이란? Statistical Learning (통계적 학습) 이란 데이터를 이해하는 폭넓은 방법을 지칭하며 크게 2가지로 분류할 수 있습니다. 지도 학습 ( Supervised ) 입력(input)에 대한 출력(output)을 통계적 모델을 통해 추정하고 예측하는 것이 목표 X, Y가 함께 주어지며 모델을 만들어 Prediction, inference에 활용 가능 대표적인 method : 선형회귀, 로지스틱 회귀, GAM, SVM(Support Vector Machines), Boosting 비지도학습 ( Unsupervised ) 입력 데이터 간의 관계나 구조를 찾아내는 것이 목표 X만 주어진다. 대표적인 method : Clustering 이 외에도 semi-su..

[Python] List 배열 요소 중복 횟수 구하는 방법 (Counting duplicates in list)

List 안의 모든 요소들 중 중복 횟수 구하는 방법은 정말 많겠지만, 오늘 알아볼 방법은 대략 3가지 입니다. for, in 사용 for, try-except 사용 collections 모듈의 Counter 사용 그런데 위 방법들은 List 안의 "모든 요소"들의 중복 횟수를 구하는 방법입니다. List 안의 "특정 요소"의 중복 횟수 구하는 방법도 2가지 알아볼 예정입니다. List.count() 모든 원소의 중복 횟수를 담은 dict에서 찾기 for, in 사용 array = ["F", "D", "A", "C", "A", "C", "F", "B", "C", "E", "C", "C", "F", "A", "B", "E", "F", "E"] count = {} for value in array: if v..

[ISL] Introduction to Statistical Learning

이번 카테고리와 바로 아래의 ESL 카테고리는 머신러닝 입문서로 널리 알려져 있는 "Introduction to Statistical Learning" 과 조금 더 어려운 버전의 책인 "Elements of Statistical Learning(ESL)" 을 정리해보는 카테고리입니다. 다운로드 링크가 있어서 무료로 제공되는 책입니다. ISL : https://hastie.su.domains/ISLR2/ISLRv2_website.pdf ESL : https://hastie.su.domains/Papers/ESLII.pdf ​ 교보문고에 검색해보면 번역본도 있긴 한데, 색으로 그래프를 구분하는 경우가 있는데 번역본은 흑백이라서 구분이 어렵고, 번역체 또한 구글 번역기에 돌린 것 같다는 평이 있기 때문에 원서..

[C 자료구조] 인접 리스트 그래프 탐색 ( DFS, BFS )

[C 자료구조] 그래프 ADT 구현 : 인접행렬 / 인접리스트 n = 0; for (row = 0; row adj_mat[row][col] = 0; } Graph 구조체 안에는 인접 행렬을 나타낼 2차원 배열과 정점의 개수를 저장할 변수를 선언합니다. 그 이후 songsite123.tistory.com 지난 포스팅에서 인접 행렬과 인접 리스트로 그래프를 구현해보았죠. 오늘은 그렇게 구현한 그래프의 탐색 연산을 구현하는 방법에 대해 알아보겠습니다. 그래프의 탐색은 가장 기본적인 연산으로 하나의 정점으로부터 시작해서 차례대로 모든 정점들을 한 번씩 방문하는 것 입니다. 그래프의 탐색 방법은..

C 자료구조 2023.05.28

[알고리즘] BFS (너비 우선 탐색)

너비 우선 탐색, BFS 이란? BFS 란 시작 정점으로부터 가까운 정점을 먼저 방문하고 멀리 떨어져 있는 정점을 나중에 방문하는 순회 방법입니다. BFS는 큐를 사용해 구현하며 DFS와 마찬가지로 인접 행렬로 표현된 그래프와 인접 리스트로 표현된 그래프의 경우 조금 달라집니다. 오늘 포스팅에서는 BFS 의 동작을 단계별로 이해해보고 인접 행렬로 표현된 그래프에 적용할 수 있는 BFS 코드를 구현해보겠습니다. BFS 도 DFS와 마찬가지로 시간 복잡도는 인접 행렬인지 인접 그래프로 표현되었는지에 따라 달라지게 되는데 인접 행렬의 경우 O(n^2), 인접 그래프의 경우 O(n+e) 가 됩니다. BFS의 구현에 있어서 큐는 반드시 알아야 하기 때문에 큐의 개념이 헷갈리신다면 아래의 포스팅을 참고해주세요. [..

알고리즘 2023.05.28

[알고리즘] DFS (깊이 우선 탐색) - 스택 구현 / 재귀 구현

깊이 우선 탐색, DFS 이란? DFS 란 트리에서 생각해보면 트리를 탐색할 때 시작 정점에서 한 방향으로 계속 가다가 더 이상 갈 수 없게 되면 다시 가장 가까운 갈림길로 돌아와서 다른 방향으로 다시 탐색을 진행하는 방법과 매우 유사합니다. 즉 DFS는 특정 노드에서 시작해 다음 분기로 넘어가기 전에 해당 분기를 완전히 탐색하는 방법입니다. DFS 는 스택을 사용해 구현합니다. 아래의 동작과 구현에서 확인하겠지만, 깊이 우선 탐색을 통해 그래프를 탐색하게 되면 모든 간선을 조사하므로 정점의 수가 n 이고 간선의 수가 e인 그래프인 경우, 그래프가 인접 행렬로 표시되어 있다면 O(n^2), 인접 리스트로 표현되어 있는 경우는 O(n+e) 가 됩니다. 따라서 희소 그래프인 경우는 DFS는 인접 리스트의 사..

알고리즘 2023.05.28

[C 자료구조] 힙(Heap) - Max/Min heap

힙(Heap) 이란? 힙(heap) 은 완전 이진 트리의 일종으로 여러 값들 중 최댓값 혹은 최솟값을 빠르게 찾아내기 위한 자료구조입니다. 이진 탐색 트리와는 다르게 힙은 중복된 값을 허용합니다. 완전 이진 트리는 지난 게시물에서 배웠었는데요 그 부분만 다시 보면 완전 이진 트리는 마지막 레벨을 제외하고 모든 레벨이 완전히 채워져있고, 마지막 레벨은 왼쪽에서 오른쪽 순으로 데이터가 차 있는 이진 트리를 말합니다. Heap 은 중복 키 값을 허용하고, 부모 노드와 자식 노드 간의 관계가 정해져 있는 자료구조입니다. Max heap 와 Min heap 은 위처럼 부모 노드가 자식 노드보다 키값이 더 큰지 작은지로 결정됩니다. Max heap 은 가장 큰 값을 빠르게 찾을 수 있고, Min heap 은 가장 ..

C 자료구조 2023.05.27

[C 자료구조] 이진 탐색 트리 (Binary Search Tree)

이진 탐색 트리(Binary Search Tree) [C 자료구조] 트리(Tree) 의 종류 트리(Tree) 란? 수학, 그래프 이론에서는 회로가 없는 무방향의 그래프를 트리라고 정의합니다. 이는 자료구조에서 쓰이는 트리와 기본적으로 같지만 차이가 좀 있습니다. 무슨 말인지 쉽게 알아 songsite123.tistory.com 트리와 이진트리의 개념은 위 포스팅에서 확인하시면 되겠습니다. 이진탐색트리는 빠른 탐색 및 정렬을 위해 고안된 형태의 자료구조로 어떠한 특징을 가지는 이진트리를 말합니다. 각 노드에 중복되지 않는 키(key)가 있다. 루트 노드의 왼쪽 서브 트리는 해당 노드의 키보다 작은 값을 가지고 있다. 루트 노드의 오른쪽 서브 트리는 해당 노드의 키보다 큰 값을 가지고 있다. 좌우 서브 트리..

C 자료구조 2023.05.25

[C 자료구조] 스택을 이용한 트리 순회 (전위/중위/후위)

[C 자료구조 ] 트리의 순회(Traversal of Tree) - 전위 / 중위 / 후위순회(Traversal) 란 트리의 노드들을 체계적으로 방문하는 것을 말합니다. 모든 노드들을 방문해야 하고 3가지의 기본적인 순회방법이 있습니다. 전위순회(preorder traversal, VLR), 중위 순회(inorder traversongsite123.tistory.com위 포스팅에서 재귀적으로 전위, 중위, 후위 순회를 구현해보았습니다. 오늘은 재귀함수 호출이 아닌 스택과 반복문을 사용해서 순회함수를 구현해보도록 하겠습니다. 순회의 과정이나 메커니즘은 똑같으니 위 포스팅을 먼저 보고 순회가 무엇인지 어떤 순서로 이루어지는지 먼저 이해하고 오시는 것을 추천드립니다. 스택을 이용한 트리 순회 코드위 같은 형태..

C 자료구조 2023.05.25
728x90