목록AI (114)
기록하는삶
데이터베이스 정규화(DB Nomalization) ▶ 논리적 데이터 모델링 과정에서 관계형 데이터 모델 내의 이상현상을 야기하는 속성 간의 종속관계를 제거하기 위해 기존의 관계(relation)를 더 작은 여러 개의 관계로 무손실 분해하는 과정 ▶ 이상현상(Anomaly) = 관계형 데이터 모델에서 관계(relation) 조작 시 데이터들이 불필요하게 중복되어 발생하는 오류로 삽입, 삭제, 갱신 이상이 있다. ① 삽입 이상(Insertion Anomaly): 새 데이터 삽입 시 불필요한 데이터도 함께 삽입해야 하는 현상 ex) 학번 이름 교수번호 지도교수 202101 A 001 지동 202102 B 002 지은 202103 C ? ? 새로운 학생 C의 데이터만을 등록하려고 하는데, 지도 교수의 데..
SQL(Structured Query Language) > 번역하면 구조화된 질의어 > IBM에서 개발한, 관계형 데이터베이스 관리 시스템(RDBMS)의 데이터 관리를 위해 설계된 특수 목적의 언어 > 그 종류로는 데이터 정의어(DDL), 데이터 조작어(DML), 데이터 제어어(DCL) 등이 있다. SQL 종류 1) 데이터 정의어(DDL _ Data Definition Language) 데이터간의 관계 정의를 위한 언어. 테이블과 같은 데이터 구조 혹은 객체를 생성, 변경, 삭제하는데 사용됨. 즉, 데이터 자체가 아니라, 데이터가 들어있는 구조를 위한 언어. ex) create, alter, drop, rename 등 사용 예시) DESC (테이블명) → 테이블의 구조(보유 column, Null 허..
1) 리스트 정의하기( 변수명 = [항목1, 항목2, 항목3, ...] ) 데이터를 묶어서 처리하는 방법 중 하나인 리스트(list). 데이터 타입 기호로는 []를 사용하고, 항목은 ,로 구분한다. [] 안에 아무것도 입력하지 않으면 빈 리스트를 만들 수 있고, 나중에 항목을 추가할 수도 있다. 항목으로는 정수(integer), 실수(float), 문자형(string), 튜플(tuple), 집합(set), 리스트(list) 등의 데이터 타입이 들어갈 수 있으며 각 항목들은 서로 데이터 타입이 같지 않아도 된다. 2) 인덱스( 리스트명[인덱스] ) 리스트가 정의될 때 항목이 나열된 순서에 따라 인덱스(index)가 부여된다. 이때 첫 번째 항목의 인덱스가 1이 아니라 0임에 유의하자. (이상하게 느껴질..
모듈(Module)이란? > 코드가 저장된 파일 > 파일을 가지고 있거나, 파일이 포함된 패키지(여러 모듈을 폴더 형식으로 모아놓은 것을 패키지라 부른다)를 가지고 있는 경우, 다른 코드에서도 해당 파일에 포함된 변수, 함수, 클래스 등을 불러와 사용할 수 있다. > 모듈 이름은 확장자(.py)를 제외한 파일 이름으로 불러온다. > 장점 ① 코드 작성 및 관리가 용이함 ② 코드의 재사용이 가능하고 편리함 ③ 공동 작업이 편함 모듈(Module) 만들고 활용해보기 아주 허접하지만 간단한, 함수 네 개를 만들어보았다. 첫 함수는 모듈을 소개하는 말을 출력하고, version이라는 변수를 생성 날짜로 지정했다. 이어지는 세 함수는 각각 자연수와 자연수의 제곱, 세제곱의 합을 구하는 함수다. 해당 파일을 '..
머신러닝을 위한 데이터 정제 과정에서 여러 데이터 분할 방법이 존재하는데, 그 중 두 가지를 정리해보자. 1) 예비법(Hold-out) > 전체 데이터를 겹치지 않는 두 데이터 집합, 훈련용(training set)과 시험용(testing set)으로 나누는 방법 > 비복원추출 > sklearn.model_selection의 train_test_split 모듈 이용 > parameters parameters default 의미 / 조건 *arrays list, nparray, scipy-saprse, pd.DataFrame 가능 test_size None(0.25) 시험용 set의 비율 or 크기 실수(float): 0 ~ 1 (전체 중 시험용 set이 차지하는 비율) 정수(int): 시험용 set의..
지난 글에서 비복원추출을 통해 데이터를 훈련용과 시험용으로 나누는 예비법(Hold-out)과 예비법을 여러 번 시행, 최적의 모델을 찾는 교차검증(cross validation)에 대해 살펴봤다. 복원추출을 사용할 경우, 형성되는 모델이 중복되는 훈련데이터(혹은 시험데이터)를 사용하게 될 가능성이 존재하긴 하지만 이를 감수하는 기법도 존재한다. 붓스트랩(Bootstrap) > 훈련용 데이터를 복원추출하는 방법. > 한정된 데이터 내에서 반복해서 다른 모델을 생성하고 이들 간의 voting을 통해 하나의 model을 형성하거나(Bagging, VotingClassifier), 이전에 생성한 모델이 만들어내는 오차를 이후 생성되는 모델에 반영, 더 좋은 모델을 만들어내는 기법(Boosting) 등에 사용..
1) 폰트 설정, 축 이름 한글화 가능하게, 스타일(darkgrid) 설정 import seaborn as sns import matplotlib.pyplot as plt plt.rc("font", family = "Malgun Gothic") sns.set(font="Malgun Gothic", rc={"axes.unicode_minus":False}, style='white') 2) 그래프 사이즈 설정 숫자를 바꿔가며 크기 조정 가능 # 그래프 사이즈 설정 plt.figure(figsize=(10, 7)) #또는 fig.set_size_inches(16,8) 3) x축, y축 설정 그래프에 대해 직접 설정하거나, plt.show()를 통해 그래프를 그리기 전에 축 정보를 설정할 수 있다. 이때 rot..
탐색적 데이터 분석(EDA _ Exploratory Data Analysis) > 데이터의 종류, 양, 범위, 결측치 여부, 중복값 여부 등을 살피고 나아가 그 특징과 의미 등을 살피는 행위 > 각종 통계기법을 활용하거나, 그래프를 그려보기도 한다. 데이터마다 EDA와 그에 따른 전처리 방법은 천차만별이지만, 보통 필수적으로 진행해야하는 EDA도 있다. 1) 상위, 하위값 확인(head, tail) 어떤 column들이 있고, 어떤 값들이 들어가 있는지 대강 파악한다. df_train = pd.read_csv("train.csv") df_train.head(3) df_train.tail(3) 2) DataFrame.info(), DataFrame.describe() df.info()는 각 컬럼명과..
정말 많은 데이터 전처리의 방법 중에서, scaling과 관련된 몇 가지를 살펴보도록 한다. 1) 원핫인코딩(One-hot Encoding) 데이터를 다루다보면 때로 필요에 의해 카테고리형 변수를 숫자로 변환하기도 한다. 예를 들어, 강아지, 고양이, 돼지, 토끼 → [1, 2, 3, 4] 와 같은 식이다. 이를 Label-Encoding이라 한다. 다만 이렇게 레이블링 하는 경우, 회귀분석 등 숫자의 크기가 가중치 결정에 있어 역할을 하는 경우 왜곡이 일어날 수 있다. (구분하기 위함일 뿐, 숫자의 크기는 아무런 의미가 없는데 머신러닝 과정에서 의미가 발생될 수 있음) 이를 방지하기 위한 Encoding 방식이 원핫인코딩이다. 같은 예에서 다음과 같다. 강아지 → 1000 고양이 → 0100..
문자열 데이터를 다루다 보면, 괄호 안에 불필요하게 표기된 정보들을 삭제하고 싶을 때가 있다. 아래 코드는 re 모듈을 이용하여 특정 문자열에서 불필요한 괄호와 괄호 안의 정보들을 삭제할 수 있는 코드다. import re pattern = r'\([^)]*\)' x = '이건 (괄호 안의 불필요한 정보를) 삭제하는 코드다.' text = re.sub(pattern=pattern, repl='', string= x) text text.split() 입력받은 text에서 괄호와 괄호 안의 정보를 제거하며, .split()을 이용해 단어만 모아 리스트로 반환할 수도 있다. 이를 이해하기 위해서는 정규표현식의 일부를 이해해야한다. r'문자열' \, (), % 등 문자열에는 예약어로 특정 기능을 수행하는 문..