본문 바로가기

Data Science : Study/1. Python

Python : Dictionary ※ 매번 비슷한 내용을 구글링하는 것에 답답해서 항목별로 정리하는 글 dict = {'one'=1, 'two'=2} dict['three'] = 3 Dictionary 추가 : key와 value를 추가 dict = {'one'=0, 'two'=2} dict['one'] = 1 Dictionary 수정 : 해당 key의 value를 수정 dict = {'one':1, 'two':2, 'three':3} del(dict['one']) Dictionary 삭제 list_key = ['A','B','C'] list_value = [1,2,3] ### 1 dict = {string : 0 for string in list_key} # {'A':0, 'B':0, 'C':0} dict = {string : i fo.. 더보기
Python : list ※ 매번 비슷한 내용을 구글링하는 것에 답답해서 항목별로 정리하는 글 list = [] 기본 형태 : []로 묶인 item의 집합. 괄호 안에는 다양한 타입의 데이터가 들어갈 수 있다. len(list) list의 길이. series, dataframe에서도 동일하게 사용. list[-1] 리스트의 마지막 원소. if item in list: print('리스트에 값이 있습니다.') else: print('리스트에 값이 없습니다.') if item not in list: print('리스트에 값이 없습니다.') else: print('리스트에 값이 있습니다.') 리스트에 특정 값이 있는지 체크하기 리스트에 특정 값이 없는지 체크하기 더보기
하이퍼파라미터 튜닝 : Coarse & Fine Search 모델의 가장 성능의 좋은 파라미터를 선택하기 위해, 하이퍼파라미터 튜닝 작업을 거친다. 이 때 Coarse & Fine Search를 사용하여 파라미터를 찾는다. Coarse Search Random Search를 하되, 이론상으로 존재 가능한 모든 하이퍼파라미터 범위를 집어넣는다. 가장 좋은 하이퍼파라미터를 찾는 것은 어렵지만, 좋지 않은 하이퍼파라미터를 정렬해서 후순위로 높을 수 있다. Fine Search Coarse Search를 통해 좋지 않은 하이퍼파라미터를 버린 뒤 다시 한 번 Random Search를 진행한다. Kaggle의 샌프란시스코 범죄발생율 데이터를 이용하여 하이퍼파라미터 튜닝 과정을 확인해보자. ▶ 샌프란시스코 범죄발생율 예측? 캐글 샌프란시스코 범죄발생률 예측 : train &.. 더보기
모델 : LightGBM Light Gradient Boosting Machine (LightGBM) 1. 특징 머신러닝 부스팅 알고리즘 중 하나로, 가중치를 경사하강법으로 진행한다. ※ 머신러닝 부스팅 알고리즘: 앙상블 부스팅 기법으로, 틀린 부분에 가중치를 더하면서 진행하는 알고리즘. machine learning ensemble, ensemble boosting 등이 있다. ※ 경사하강법: 1차 근삿값 발견용 최적화 알고리즘. 기본 개념은 함수의 기울기(경사)를 구하고, 경사의 절댓값이 낮은 쪽으로 계속 이동시켜 극값에 이를 때까지 반복시킨다. leaf wise 트리분할 트리의 균형을 맞추지 않고 특정 리프 노드를 지속적으로 분할하여, 깊이가 늘어난 트리 생성. 어떤 리프 노드를 분할할까? max delta loss 값을 .. 더보기
Python : csr_matrix (데이터의 수를 줄이는 방법) 5 7 1 4 2 3 6 2 1 6 4 5 7 희소행렬: 대부분의 값이 0. 이런 희소행렬을 메모리 낭비가 적도록 변환하고자 한다! → CSR 형식을 사용! ▶ 필요한 패키지 불러오기 from scipy.sparse import csr_matrix import numpy as np ▶ 0이 아닌 데이터 추출 data = np.array([5,7,1,4,2,3,6,2,1,6,4,5,7]) 첫번째 행부터 왼쪽에서 오른쪽으로 순서대로 0이 아닌 값을 리스트에 넣는다. ▶ 열 위치 col_pos = np.array([2,5,0,1,3,4,5,1,3,0,3,5,0]) 첫번째 행부터 왼쪽에서 오른쪽으로 순서대로 0이 아닌 값의 열 위치를 리스트에 넣는다. (열 번호는 0번부터 시작) ▶ 행 위치 값에 대해 고유한 .. 더보기
Python : (pandas) One- hot encoding ※ 매번 비슷한 내용을 구글링하는 것에 답답해서 항목별로 정리하는 글 ? One-hot encoding ? 하나의 값만 Hot(True, 1)고, 나머지 값은 모두 Cold(False, 0)로 만드는 인코딩 데이터프레임의 특정 컬럼을 one-hot encoding 하고 싶어 : get_dummies (use pandas!) pd.get_dummies(df["column_name"], prefix = '접두사', drop_first = True) prefix: 새로 생기는 더미 컬럼들에 어떤 접두사를 붙일건지 (option) drop_first: 더미 컬럼 중 첫번째 컬럼을 자동삭재 → 더미 컬럼을 만들 경우 n-1개만 있어도 모든 값을 설명 가능하므로 1개를 없앤다 ( dummy trap을 없앤다! ) 더보기
Python : 데이터분석 - 모델 평가 ※ 매번 비슷한 내용을 구글링하는 것에 답답해서 항목별로 정리하는 글 모델이 얼마나 정확히 예측했는지 확인하기 위해서는 평가를 진행해야 한다. 모델에 test x를 이용하여 예측한 test y는 제대로 예측했는지 비교할 대상이 없으므로, train 데이터를 일정 비율로 나눠 일부분은 모델의 학습에, 다른 부분은 모델의 예측에 활용한 뒤 각각 y를 비교해본다. ▶ 평가를 위해 데이터 나누기 from sklearn.model_selection import train_test_split train 데이터를 train_kf, test_kf로 나누는데 사용되는 패키지 데이터를 원하는 비율로 나눠준다 X_train_kf, X_test_kf, y_train_kf, y_test_kf = train_test_split(.. 더보기
Python : 데이터분석 - 모델 생성 및 예측 ※ 매번 비슷한 내용을 구글링하는 것에 답답해서 항목별로 정리하는 글 ▶ 모델 생성을 위한 raw train set, raw test set 분석을 위한 데이터를 불러와서 train, test라는 데이터프레임에 저장하였다. ▶ feature와 label feature_names : 모델 생성에 사용할 컬럼 리스트 - 리스트에 포함되는 컬럼들은 전처리를 통해 이상치를 제거하고, 분석에 용이한 형태로 만든다. label_name : y에 해당하는 컬럼 ▶ 모델 생성을 위한 train set, test set X_train = train[feature_names] X_test = test[feature_names] y_train = train[label_name] ▶ 모델 생성 model.fit(X_train.. 더보기