분류 전체보기 25

교차검증

교차검증 데이터를 단순히 학습 데이터와 테스트 데이터로만 분리하여 머신러닝 모델의 성능을 평가하는 것은 과적합(Overfit)에 취약점을 가질 수 있다. 과적합은 모델이 학습 데이터와 테스트 데이터에만 과도하게 최적화되어, 다른 데이터로 예측을 수행할 때 성능이 떨어지는 것을 말한다. 이러한 문제점을 해결하기 위해 교차 검증을 이용해 다양한 학습과 평가를 수행해야 한다. 교차 검증은 별도의 여러 세트로 구성된 학습 데이터 세트와 검증 데이터 세트에서 학습과 평가를 수행하는 것이다. 학습용 데이터 세트를 다시 학습용 데이터 세트와 검증용 데이터 세트로 분리하여 1차적으로 학습과 평가를 한 후에 테스트 데이터 세트에 적용을 하는 것이다. KFold 교차 검증 말 그대로 종이를 접어서 k등분 하듯이, 데이터 ..

사이킷런으로 지도학습 수행하기

사이킷런 소개 사이킷런은 파이썬 머신러닝 라이브러리 중 가장 많이 사용되는 라이브러리로, 머신러닝을 위한 다양한 알고리즘을 제공한다. 사이킷런에서 주로 사용되는 모듈은 다음과 같다. 분류 모듈명 설명 예제 데이터 sklearn.datasets 사이킷런에 내장되어 예제로 제공하는 데이터 세트 피처 처리 sklearn.preprocessing 데이터 전처리에 필요한 기능 제공(인코딩, 정규화, 스케일링 등) sklearn.feature_selection 알고리즘에 큰 영향을 미치는 피처를 우선순위대로 고르는 작업을 수행하는 기능 제공 sklearn.feature_extraction 텍스트 데이터나 이미지 데이터의 벡터화된 피처를 추출하는데 사용됨 차원 축소 sklearn.decomposition 차원 축소와..

DataFrame 결손 값 처리하기, apply lambda

결손 데이터 처리하기 판다스에서의 결손 데이터는 데이터가 없는 경우(Null)를 의미하며 이것을 넘파이의 NaN으로 표시한다. NaN값은 aggregation 함수의 연산과 머신러닝 알고리즘에서 제외되므로 이를 적용하기 전에 NaN을 다른 값으로 대체해야 한다. DataFrame에서 isna()를 적용하면 모든 칼럼의 값이 NaN인지 아닌지를 True 또는 False 값으로 반환한다. 반환된 결과에 sum()함수를 호출하면 True값(NaN 값)을 1로 계산하여 총 몇 개의 행이 비어있는지를 구할 수 있다. import pandas as pd titanic_df = pd.read_csv('train.csv') print(titanic_df.isna().sum()) titanic_df.head(2) 실행 ..

DataFrame의 정렬, Aggregation, groupby

DataFrame, Series 정렬 DataFrame과 Series를 정렬하기 위해서는 sort_values() 메서드를 이용한다. sort_values()의 주요 파라미터 값에는 by, ascending, inplace가 있다. by값에는 정렬 기준이 되는 열 이름을 입력하고, ascending은 오름차순으로 정렬할지 내림차순으로 정렬할지를 결정한다. 기본값은 ascending=True(오름차순)이다. inplace는 정렬한 결과를 원본 DataFrame에 적용할지를 결정한다. 기본값은 inplace=False(원본 DataFrame은 유지)이다. import pandas as pd # 타이타닉 데이터 DataFrame으로 불러오기 titanic_df = pd.read_csv('train.csv') ..

DFS/BFS 탐색 이론

DFS 탐색 DFS는 Depth-First-Search, 즉 깊이 우선 탐색으로 그래프의 깊은 부분부터 우선적으로 탐색하는 알고리즘이다. 특정한 경로로 탐색할 때 그 경로에서 최대한 깊숙이 들어가서 노드를 방문한 후, 더 이상 들어갈 곳이 없다면 위의 노드로 돌아가 다른 경로로 탐색한다. 위와 같은 그래프에서 깊은 부분부터 탐색한다고 하면 1 -> 2 -> 4 -> 5 -> 3 -> 6 -> 7 순으로 탐색하게 된다. 그래프의 구현은 다음과 같이 리스트에 인접한 노드들을 저장하는 방식으로 할 수 있다. graph = [ [], # 0번 노드는 존재하지 않으므로 0번째 인덱스는 비워두기 [2, 3], # 1번 노드는 2, 3번 노드와 연결되어 있으므로 1번째 인덱스에 2, 3 저장 [1, 4, 5],# 2..

DataFrame에서 원하는 데이터 추출하기

DataFrame [ ] 연산자 DataFrame의 [ ] 안에 열(column) 이름을 넣어 원하는 열의 데이터만 추출할 수 있다. 여러 개의 열의 데이터를 추출하고자 할 때는 [ ] 안에 열 이름들을 다시 [ ]로 묶어 리스트형으로 만들어줘야 한다. import pandas as pd # 타이타닉 데이터 파일 불러오기 titanic_df = pd.read_csv('train.csv') # 타이타닉 데이터에서 Name 열과 Age 열만 추출하기 filtered_df = titanic_df[['Name', 'Age']] filtered_df.head(3) 실행 결과 DataFrame의 iloc[ ] 연산자 iloc[ ] 는 위치 기반 인덱싱으로 [ ] 안에 행, 열 값으로 정수가 입력된다. # 1행 4열..

Index 객체

판다스의 Index는 DataFrame, Series의 레코드(행)을 고유하게 식별하는 객체이다. import pandas as pd # 타이타닉 데이터 파일 불러오기 titanic_df = pd.read_csv('train.csv') # Index 객체를 indexes 변수에 저장 indexes = titanic_df.index print('Index 객체:', indexes) print('Index 객체 array 값: \n', indexes.values) 실행 결과 Index 객체는 ndarray와 유사하게 슬라이싱이 가능하지만, 레코드를 구별하는 고유값이기 때문에 수정은 할 수 없다. print(type(indexes.values)) print(indexes.values.shape) print(i..

스택(Stack)과 큐(Queue)

스택(Stack) 먼저 들어온 데이터가 나중에 나가는 형식(선입후출 / First In, Last Out)의 자료구조이다. 입구와 출구가 동일한 형태에 데이터를 쌓는다고 생각할 수 있다. 스택 구현하기 파이썬에서 리스트 자료형의 append() 메서드는 리스트의 맨 끝에 데이터를 입력해주는 기능을 제공하고, pop()메서드는 리스트의 맨 끝의 데이터를 출력해주는 기능을 제공하기 때문에 리스트를 이용하여 스택 구현이 가능하다. stack = [] stack.append(1) stack.append(2) stack.append(3) stack.pop() print(stack) 실행 결과 '1 입력 -> 2 입력 -> 3입력 -> 가장 나중에 들어온 데이터 삭제' 의 과정을 거쳐 리스트에 [1, 2]만 남게 ..

DataFrame 데이터셋 수정하기

DataFrame과 리스트, 딕셔너리, 넘파이 ndarray 상호변환 ndarray를 DataFrame으로 변환하기 array = np.array([[90, 85, 78],[95, 60, 85], [80, 100, 88]]) df_array = pd.DataFrame(array, columns=['A', 'B', 'C']) print(df_array) 실행 결과 리스트를 DataFrame으로 변환하기 import pandas as pd lst = [[90, 85, 78],[95, 60, 85], [80, 100, 88]] # 2차원 리스트 df_lst = pd.DataFrame(lst, columns=['A', 'B', 'C']) # columns에 열 이름 입력 print(df_lst) 실행 결과 딕셔..

코드업(CodeUp) 3120: 리모컨

문제 설명 컴퓨터실에서 수업 중인 정보 선생님은 냉난방기의 온도를 조절하려고 한다. 냉난방기가 멀리 있어서 리모컨으로 조작하려고 하는데, 리모컨의 온도 조절 버튼은 다음과 같다. 1) 온도를 1도 올리는 버튼 2) 온도를 1도 내리는 버튼 3) 온도를 5도 올리는 버튼 4) 온도를 5도 내리는 버튼 5) 온도를 10도 올리는 버튼 6) 온도를 10도 내리는 버튼 이와 같이 총 6개의 버튼으로 목표 온도를 조절해야 한다. 현재 설정 온도와 변경하고자하는 목표 온도가 주어지면 이 버튼들을 이용하여 목표 온도로 변경하고자 한다. 이 때 버튼 누름의 최소 횟수를 구하시오. 예를 들어, 7도에서 34도로 변경하는 경우, 7 -> 17 -> 27 -> 32 -> 33 -> 34 이렇게 총 5번 누르면 된다. 입력 ..