반응형

분류 전체보기 172

[C++] STL - vector

STL이란? C++에서 STL이란 Standard Template Library의 약자로 표준 템플릿 라이브러리를 의미한다. C++에는 많은 표준 라이브러리들이 있지만 보통 STL을 말할때는 다음 세개의 라이브러리들을 의미한다. 임의 타입의 객체를 보관할 수 있는 컨테이너(container) 컨테이너에 보관된 원소에 접근할 수 있는 반복자(iterator) 반복자들을 가지고 일련의 작업을 수행하는 알고리즘(algorithm) 그 중 컨테이너는 크게 두 가지 종류로 나눌 수 있다. 먼저 배열과 같이 객체들을 순차적으로 보관하는 시퀀스 컨테이너가 있고 key를 통해 대응되는 값을 찾아주는 연관 컨테이너가 있다. 시퀀스 컨테이너에는 다음과 같이 3개가 존재한다. vector list deque 오늘 포스팅에서..

C, C++ & Linux/C++ 2022.06.29

[BOJ] 2941 - 크로아티아 알파벳

https://www.acmicpc.net/problem/2941 2941번: 크로아티아 알파벳 예전에는 운영체제에서 크로아티아 알파벳을 입력할 수가 없었다. 따라서, 다음과 같이 크로아티아 알파벳을 변경해서 입력했다. 크로아티아 알파벳 변경 č c= ć c- dž dz= đ d- lj lj nj nj š s= ž z= www.acmicpc.net import sys alpha = ['c=', 'c-', 'dz=', 'd-', 'lj', 'nj', 's=', 'z='] input = list(sys.stdin.readline().rstrip()) input.reverse() sum = 0 while len(input) > 1: str = input.pop() if str == 'c' or str == '..

알고리즘/BOJ 2022.06.27

[BOJ] 단계별로 풀어보기 - 기본 수학 1

지난 겨울방학때 풀고 개강 후 손을 놨던 백준을 다시 풀기로 마음먹었다. 너무 오랜만이라 뇌가 안돌아갈 것 같아서 적당히 뇌를 깨울 수 있는 기본 수학1을 풀어보았다. 파이썬과 C++ 둘다 짜는 것을 연습하고 있지만 수학 문제는 두 언어에서 구현이 다를 것 같지 않아 C++로만 짰다. 마지막 문제 빼고는 코딩적으로 얻어가는 건 없었지만 상당히 재밌었기에 한번에 몰아서 포스팅한다. https://www.acmicpc.net/problem/1712 1712번: 손익분기점 월드전자는 노트북을 제조하고 판매하는 회사이다. 노트북 판매 대수에 상관없이 매년 임대료, 재산세, 보험료, 급여 등 A만원의 고정 비용이 들며, 한 대의 노트북을 생산하는 데에는 재료비와 www.acmicpc.net #include usi..

알고리즘/BOJ 2022.06.27

[머신러닝] Pipeline

이전 포스팅에서 다룬 GridSearchCV 클래스를 통해 머신러닝 모델의 최적의 파라매터를 찾는 방법을 배웠다. 하지만 실전 데이터를 다루면서 중간에 전처리 과정이 들어가게 되면 GridSearchCV를 사용할 때 주의할 점이 생긴다. 다음 예제를 통해 무엇이 문제인지 생각해보자. from sklearn.datasets import load_breast_cancer data = load_breast_cancer() from sklearn.model_selection import train_test_split X_train,X_test,y_train,y_test=train_test_split( X, y, test_size=0.3, stratify=y, random_state=11) from sklearn..

머신러닝 2022.06.08

[머신러닝] GridSearchCV

GridSearchCV GridSearchCV란 교차 검증 점수를 기반으로 머신러닝 모델의 최적의 파라매터를 검색할 수 있는 클래스이다. GridSearchCV 클래스를 사용하지 않는다면 다중 for문을 통해 최적의 파라매터를 찾아야 하는데 이는 제어할 파라매터의 종류가 많아질수록 가독성이 매우 떨어진다. ※ GridSearchCV의 하이퍼 파라매터 estimator : 예측기 객체 (Classifier, Regressor, Pipeline 등) param_grid : 사용할 파라메터가 정의된 dictionary cv : 교차검증 개수 (KFold 객체를 넣을 수도 있다) GridSearchCV 예제 from sklearn.ensemble import GradientBoostingClassifier # ..

머신러닝 2022.06.08

[머신러닝] 교차검증(Cross-Validation) - KFold

교차검증 교차검증이란 모델 학습 시 데이터를 훈련용과 검증용으로 교차하여 선택하는 방법이다. 교차검증을 사용하게 되면 모든 데이터를 학습 및 테스트에 활용하기 때문에 과적합 또는 과소 적합을 방지하고 더욱 일반화된 모델을 생성할 수 있게 된다. 교차검증을 위한 cross_val_score 메소드 sklearn은 교차검증을 위해 cross_val_score 메소드를 제공한다. 기본적인 파라매터로는 예측기 모델, 전체 X 데이터, 전체 y 데이터, 교차검증 개수를 넣어준다. cv를 통해 교차검증 개수를 조정하고 scoring을 통해 교차검증 평가 방법을 수정할 수 있다. 수행 결과 교차검증 개수만큼의 예측기 객체가 생성되며 각 예측기의 평가 점수가 반환된다. 기본적으로 회귀 모델의 경우 R2 스코어, 분류 ..

머신러닝 2022.06.08

[머신러닝] 데이터 전처리 - 문자열 인코딩

데이터 전처리 1. 수치형 데이터 결측 데이터 처리 이상치 제거(대체) 스케일링 2. 문자열 데이터 결측 데이터 처리 라벨 인코딩 / 원핫 인코딩 문자열 데이터 인코딩 머신러닝 알고리즘은 문자열을 처리하지 못하기 때문에 문자열을 수치형으로 변환해줄 필요가 있다. 기본적으로 데이터의 분할 전에 문자열 인코딩이 이루어진다. 1. 라벨 인코딩 - 특정 문자열 데이터를 정수와 매칭하여 단순 변환하는 방식 - ex) 남성/여성 → 0/1 - 라벨 인코딩은 일반적으로 정답 데이터(y)가 문자열로 구성되어 있는 경우 사용 - 대소관계에 영향을 주기 때문에 설명변수(X)에는 잘 사용하지 않음. 2. 원핫 인코딩 - 유일한 문자열의 개수만큼 컬럼을 생성하여 그중 하나의 위치에만 1을 대입하는 방식 - ex) 남성/여성 ..

머신러닝 2022.06.07

[머신러닝] 데이터 전처리 - 결측 데이터 처리

데이터 전처리 1. 수치형 데이터 결측 데이터 처리 이상치 제거(대체) 스케일링 2. 문자열 데이터 결측 데이터 처리 라벨 인코딩 / 원핫 인코딩 결측 데이터 처리 방법 1. 결측 데이터가 포함된 column을 제거 - 해당 컬럼에 데이터보다 결측치가 더 많은 경우 고려 가능 2. 결측 데이터가 포함된 레코드(행)를 제거 3. 기초 통계로 결측치 대체 - 수치형 데이터인 경우 평균, 중심값, 최빈값 등 사용 - 문자열 데이터인 경우 최빈값 사용 4. 지도학습 기반의 머신러닝 모델을 구축하여 예측값으로 결측 데이터 대치 5. 준지도학습, 비지도 학습 기반의 머신러닝 모델을 구축하여 예측값으로 결측 데이터 대치 결측 데이터 제거 일반적인 경우 1, 2번 방법을 사용하여 결측 데이터를 제거하는 것이 이상적이다..

머신러닝 2022.06.07
반응형