반응형

전체 글 172

[파일처리] Organizing Files for Performance

데이터 압축 (Data Compression) ※ 데이터 압축의 장점 - 파일 크기를 작게 만들어 저장 공간을 절약함 - 전송 속도를 빠르게 함 - 순차 탐색 속도를 빠르게 함 ※ 데이터 압축의 단점 - 압축된 파일은 읽을 수 없음 - 인코딩, 디코딩 비용이 필요 ※ 데이터 압축 방식 다른 표기법의 사용(Using a Different Notation) - redundancy reduction : 간결한 표기법으로 - ex) 미국의 50개 state : 2byte(16bit) -> 6bit로 표현 가능 각 state를 0 ~ 49로 맵핑하면 49(110001)를 표현하기 위해 6bit만 필요함 반복되는 열의 삭제 (Suppressing Repeating Sequences) - Run-length enco..

파일처리 2022.04.25

[파일처리] 레코드 파일 관리 (Managing Files of Records)

레코드 키 (Record Keys) 파일에서 임의의 레코드에 접근하기 위해서 키(key)를 사용하는 것이 편리하다. 키는 정규 형태 (Canonical form)가 필요하고 특성에 따라 다음과 같이 분류된다. Primary key - 유일하고 바뀌지 않는 키 값 ex) 학번, 주민등록번호 Secondary key - 중복이 있을 수 있는 키 값 ex) 이름, 학과 레코드 검색 방법 순차 탐색 (Sequential Search) - 레코드를 검색할 때 차례대로 탐색을 수행 - n개의 레코드를 갖고 있는 파일에서 최악의 경우 n번의 read가 실행됨 (O(N)) - 성능 향상을 위해 블록화(Record Blocking) 기법을 이용함 ※ Record Blocking - 여러 개의 record를 한 번에 읽어..

파일처리 2022.04.25

[파일처리] Record Structure 보충 / 활용

※ 길이 지시자(Length Indicator)를 이용한 레코드 구조 예시 필드 구분 방법 : 구분자 방식(Separate Fields with Delimiters) 레코드 구분 방법 : 길이 지시자 방식(Records with a Length Indicator) ※ WritePerson()의 과정 1. 각 레코드를 기록하기 전에 해당 레코드의 필드 길이의 합을 알아야만 함 2. 버퍼에 레코드의 전체 내용을 저장 (필드 사이에 구분자를 추가) 3. 버퍼의 길이를 통해 레코드의 길이를 구함 4. 파일에 레코드의 길이를 write 5. 파일에 버퍼 내용을 write ※ 레코드 길이 표현 방법 2byte binary form - 문자형태로 변환할 필요 없음 - ASCII 형태로 저장할 때보다 메모리를 절약할 ..

파일처리 2022.04.24

[파일처리] 파일 구조 - Field Structure / Record Structure

Stream 스트림(stream)이란 데이터, 패킷, 비트 등의 일련의 연속성을 갖는 흐름을 의미한다. 파일은 stream of bytes로 구성되며 스트림을 통해서 입출력 작업을 수행할 수 있다. 하지만 파일에 저장될 때 데이터가 구분이 되지 않는다는 문제가 있고 이를 해결하기 위해서는 필드와 레코드라는 단위로 나누어 데이터를 파일에 저장해야 한다. Class Person{ public: char LastName[11]; char FirstName[11]; char address[16]; char city[16]; char state[3]; char zip[10]; }; Field 필드(field)는 파일을 구성하는 요소 중에서 의미를 갖는 가장 작은 논리적 단위이다. 즉, 파일을 읽고 쓴다는 것은 필..

파일처리 2022.04.24

[PL] Data types(3)

Union types 유니온은 실행시간의 다른 시간들동안 다른 타입의 값들을 저장할 수 있도록 하는 타입이다. 단점은 type checking이 dynamic해야한다는 것이며 이는 discriminant라는 indicator에 의해서 이루어진다. 반면 C/C++에서는 유니온 타입의 type checking을 지원하지 않는데 이런한 유니온 타입을 Free Union 이라고 한다. Free Union은 안전하지 않은 방법이며 Java나 C# 같이 reliability가 높은 언어들은 유니온 자체를 지원하지 않는다. Pointer types and Reference types 포인터 타입 변수는 indirect addressing과 dynamic memory를 제공한다. 이를 통해 포인터는 dynamicall..

PL 2022.04.23

[머신러닝] 선형 모델의 성능 향상을 위한 방법

선형 모델의 성능 향상을 위한 방법 1. 스케일 전처리(정규화) - 선형 모델은 각각의 특성에 대해 가중치를 할당 - 따라서 각각 특성의 스케일 차이 발생 시 가중치 적용에 어려움 - 정규화 : 데이터를 구성하는 각 컬럼의 값을 평균은 0, 표준편차는 1로 스케일 조정 from sklearn.preprocessing import StandardScaler scaler = StandardScaler() scaler.fit(X_train) X_train = scaler.transform(X_train) X_test = scaler.transform(X_test) 2. 차원 확장 - 선형 모델의 방정식 : y = x1 * w1 + x2 * w2 ... xN * wN + b - 차원을 확장하여 데이터에 대한 성..

머신러닝 2022.04.22

[머신러닝] Ridge, Lasso 클래스

LinearRegression 클래스는 학습데이터를 예측하기 위해서 각각의 특성별로 최적화된 가중치 값을 계산하는 머신러닝 알고리즘이다. 하지만 이렇게 생성된 가중치는 학습데이터에 완벽하게 맞는 가중치이므로 새로운 데이터를 예측할 때 적합하지 않을 가능성이 크다. 따라서 선형 모델은 위의 문제를 해결하기 위해서 제약의 방식을 사용하는데 이는 L1제약과 L2제약으로 나뉜다. L2 제약 조건 - 모든 특성에 대한 가중치 값을 0 주변으로 위치하도록 함 - L2 제약을 사용하면 LinearRegression 클래스의 일반화 성능이 증가하게 된다. - 선형모델에 L2 제약 조건을 추가한 클래스 : Ridge 클래스 L1 제약 조건 - 모든 특성 데이터 중 일부 특성에 대해서만 가중치 값을 할당 (대다수의 특성 ..

머신러닝 2022.04.22

[머신러닝] 회귀분석을 위한 선형 모델 - LinearRegression

회귀분석 회귀분석이란 머신러닝이 예측해야하는 정답의 데이터 즉, 종속변수가 연속된 수치형인 경우를 의미한다. 회귀분석과 반대되는 개념으로는 분류분석이 있는데 이는 종속변수가 범주형인 경우이다. 회귀분석은 선형방정식을 활용한 머신러닝 클래스를 자주 사용한다. Linear Regression 선형방정식은 y = x1 * w1 + x2 * w2 + ... xn * wn + b 형태의 방정식을 의미한다. Linear Regression 클래스의 학습은 X 데이터를 구성하는 각 컬럼 별 최적화된 가중치와 절편의 값을 계산하는 과정을 수행한다. from sklearn.linear_model import LinearRegression model = LinearRegression() model.fit(X_train, ..

머신러닝 2022.04.22

[머신러닝] K-최근접 이웃 알고리즘(K-NN)

K-최근접 이웃 알고리즘은 주변 K개의 이웃 데이터를 통해 예측을 수행하는 분류 / 회귀형 머신러닝 알고리즘이다. KNeighborsClassifier KNeighborsClassifier는 K-최근접 이웃 알고리즘을 수행하는 분류형 클래스이다.다음과 같은 예시로 KNeighborsClassifier의 동작 원리를 알아보자. import pandas as pd # 빈 데이터프레임 객체 생성 X = pd.DataFrame() print(X) X['rate'] = [0.3, 0.8, 0.0999] print(X) X['price'] = [10000, 5000, 9500] print(X) # 종속변수 생성 y = pd.Series([0, 1, 0]) # 스케일 전처리 과정을 수행 # - price 컬럼의 값을..

머신러닝 2022.04.22

[머신러닝] 데이터 분석의 과정 - 머신러닝 모델의 구축

이전 포스팅 데이터 분석의 과정 - 개요에 이어지는 내용입니다. 5. 머신러닝 모델의 구축 사이킷런의 KNeighborsClassifier 클래스를 불러와 머신러닝 모델 객체를 생성한다. KNeighborsClassifier 클래스 동작원리에 대한 포스팅 : K-최근접 이웃 알고리즘(K-NN) 각 머신러닝 알고리즘에 해당하는 hyper parameter 제어가 필수적이다. from sklearn.neighbors import KNeighborsClassifier model = KNeighborsClassifier(n_neighbors=11, n_jobs=-1) ※ 머신러닝 모델 객체 학습 - fit 메소드를 사용 - 사이킷런의 모든 머신러닝 클래스는 fit 메소드의 매개변수로 X, y를 입력 받음 - X..

머신러닝 2022.04.22
반응형