Home

[C/C++]백준 2042

백준 2042 - 구간 합 구하기 (골드1) 20920 문제 링크 세그먼트 트리의 기본 코드를 사용하면 쉽게 풀리는 문제이다. #include <iostream> #include <algorithm> #include <vector> #define FIO cin.tie(0);cout.tie(0);ios::sync_with_stdio(0); #include <cstdio> #include <cstring> #include <queue> #include <vector> #define INF 987654321 using namespace st...

Read more

머신러닝-지도학습알고리즘2

이번에는 일반화에 대해 알아보겠다. 모델이 처음 보는 데이터에 대해 정확하게 예측할 수 있으면 이를 훈련 세트에서 테스트 세트로 일반화generalization되었다고 한다. 일반화 성능이 최대가 되는 모델이 최적이다. 이때, 훈련 세트와 테스트 세트가 매우 비슷하다면 그 모델이 테스트 세트에서도 정확하게 예측하리라 기대할 수 있는데, 항상 그런 것은 아니다. 이를 과대적합 overfitting이라고 하는데, 가진 정보를 모두 사용해서 너무 복잡한 모델을 만들 경우에 발생한다. 과대적합이 발생하면, 학습 데이터에만 잘 맞고, 새로운 데이터에는 잘 맞지 않는다. 그렇다면, 간단한 모델을 만들면 어떻게 될까? 너무 ...

Read more

머신러닝-KNN

(1) K-최근접 이웃 분류 지도학습 알고리즘에는 K-최근접이웃(KNN), 선형모델, 나이브 베이즈 분류기, 결정 트리 및 앙상블, 커널 서포트 벡터 머신, 신경망 등이 있다. 그중에서 오늘은 KNN알고리즘에 대해 알아보겠다. K-최근접이웃은 새로 들어온 데이터에 가장 가까운 k개의 데이터를 찾아서, 새로 들어온 데이터의 값을 결정하는 것이다. from preamble import * mglearn.plots.plot_knn_classification(n_neighbors=1) 다음은 데이터셋에 대한 1-최근접 이웃 모델을 예측한 것이다. 이제 k를 n_neighbors=1 부분을 변화하면서 출력이 어떻게 ...

Read more

머신러닝-지도학습알고리즘

지도학습은 입력과 출력이 있는 데이터로 학습을 시키는 것으로 자주 사용되는 머신러닝 방법 중 하나이다. 이와 반대 개념에는 비지도 학습이 있으며, 이는 입력만 있고 출력이 없는 상태에서 학습을 시키는 것을 말한다. 지도학습에는 분류classification와 회귀regression가 있다. 분류란 미리 정의된, 가능성 있는 여러 클래스 레이블 중 하나를 예측하는 것이다. 앞서 다뤄보았던 붓꽃의 품종 분류하기 실습이 이에 해당한다. 분류는 딱 두 개의 클래스로 분류하는 이진 분류 binary classification와 셋 이상의 클래스로 분류하는 다중 분류 multiclass classification로 나뉜다....

Read more

머신러닝-붓꽃의 품종 분류

학교에서 배운지 꽤 오래 지났지만, 복습도 할 겸 기계학습 입문 수업에서 배운 내용을 포스팅 하고자 한다. 그 첫번째는, k-nn방법을 이용해 붓꽃의 품종을 분류하는 것이다. 한 식물학자가 붓꽃의 꽃잎과 꽃받침의 폭과 길이를 측정한 데이터를 바탕으로 setosa, versicolor, virginica 나눴다. 위와 같은 측정 데이터를 바탕으로 채집한 붓꽃이 어떤 품종인지 구분하는 머신러닝 모델을 만들 것이다. 붓꽃의 품종을 정확하게 분류한 데이터를 가지고 있으므로 지도학습에 속하고, setosa, versicolor,virginica 중 하나를 선택하는 것이므로 분류(classification)에 속한다. ...

Read more

[C/C++]백준 20920

백준 20920 - 영단어 암기는 어려워 (실버3) 20920 문제 링크 화은이를 위한 영단어장을 다음 조건에 따라 만들자 1. 특정 길이 이하인 단어는 적지 않는다. 2. 자주 나오는 단어일 수록 앞에 배치한다. 3. 해당 단어가 길수록 앞에 배치한다. 4. 알파벳 사전 순으로 앞에 있을수록 앞에 배치한다. 단어 길아나 사전순으로 정렬하는 것은 sort를 이용하고, 단어의 빈도수를 저장하기 위해 map을 이용했다. #include <iostream> #include <algorithm> #include <stdio.h> #include <string> #inclu...

Read more

[C/C++]백준 2644

백준 2644 - 촌수 계산 (실버2) 2644 문제 링크 방향 없는 그래프가 주어졌을 때, 연결 요소 (Connected Component)의 개수를 구하는 프로그램을 작성해보자 DFS또는 BFS알고리즘을 이용하면 쉽게 풀 수 있는 문제다. #include <iostream> #include <algorithm> #include <stdio.h> #include <cstring> #include <stack> #include <queue> #include <deque> using namespace std; int n, m, v; in...

Read more

[C/C++]백준 1260

백준 1260 - DFS와 BFS (실버2) 10819 문제 링크 첫째 줄에 정점의 개수 N(1 ≤ N ≤ 1,000), 간선의 개수 M(1 ≤ M ≤ 10,000), 탐색을 시작할 정점의 번호 V가 주어진다. 다음 M개의 줄에는 간선이 연결하는 두 정점의 번호가 주어진다. 어떤 두 정점 사이에 여러 개의 간선이 있을 수 있다. 입력으로 주어지는 간선은 양방향이다. 깊이 우선 탐색은 루트 노드에서 시작해서 자식 노드를 우선적으로 탐색하며 스택과 재귀로 구현한다. using namespace std; int n, m, v; int vis[1010]; //방문했는지 여부를 체크하는 배열 vector <vec...

Read more