일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 |
- Kaggle
- pandas
- 머신러닝
- Oracel
- 오라클
- 코딩테스트
- level 1
- sklearn
- python3
- 실습
- 알고리즘
- 프로그래머스
- R
- Numpy
- matplotlib
- 파이썬
- 데이터 분석
- 튜닝
- oracle
- SQL
- seaborn
- 실기
- 카카오
- level 2
- 빅분기
- Python
- 빅데이터 분석 기사
- Today
- Total
목록실기 (23)
라일락 꽃이 피는 날
K-최근접 이웃법 (K-Nearest Neighbor) 각 데이터들 간의 거리를 측정하여 가까운 k개의 다른 데이터의 레이블을 참조하여 분류하는 방법 주로 유클리디안 거리 계산법 또는 민코브스키 방법을 사용 모델 기반 알고리즘이 아닌 케이스 기반 알고리즘이므로 입력되는 데이터에 따라 결과와 성능이 크게 다름 k 값이 작을수록 정교한 분류와 예측이 가능하지만 과대적합(overfitting) 문제 발생 k 값이 클수록 정확도나 성능지표가 좋지 않을 수 있고 과소적합(underfitting) 문제 발생 최적의 k는 일반적으로 3~10 범위 내에서 찾는다. [주요 하이퍼파라미터] - n_neighbors : 1에 가까울수록 과대적합, 클수록 과소적합 발생 (default = 5) - metric : 거리 측정 ..
로지스틱 회귀 모델 - 종속 변수가 범주형 자료일 경우 적용하는 회귀 모델 - 원자료를 확률 → 오즈(odds) → 로그(log)로 변환하여 선형 회귀 모델을 적용하고, 다시 지수(exp)로 변환하여 원데이터로 전환한 모델 [주요 하이퍼파라미터] - C : 로그스케일 단위로 최적치 탐색 권고 (default = 1) 작을수록 모델이 단순해지고 커질수록 모델이 복잡해짐 - solver : 데이터 양이 많을 때 풀배치(full-batch)로 할 경우 시간이 오래 걸림 solver='sag' 로 할 경우 평균경사하강법을 적용하여 속도가 빠름 1. 분석 데이터 준비 import warnings warnings.filterwarnings("ignore") 분석 결과 외에 불필요한 내용이 나오지 않도록 하는 옵션 ..
1. 분석 데이터 검토 # 행과 열 구조 확인 df.shape # 기술통계 확인 df.describe() # 히스토그램 확인 df.hist(bins=50, figsize=(20,15)) describe() : 평균과 중위수 일치정도, min/max, 이상치 확인 hist() : 정규분포와 유사한 형태인지 확인 2. 특성(x)과 레이블(y) 나누기 # 컬럼 이름으로 나누기 x = df[['컬럼명1', '컬럼명2', ...]] # 컬럼 인덱스로 나누기 x = df[df.columns[0:5]] # loc 함수로 나누기 x = df.loc[:, '컬럼명1':'컬럼명10'] # 목적변수 y = df[['value']] 3. train-test 데이터셋 나누기 from sklearn.model_selection ..
1. 분석 데이터 검토 # 행과 열 구조 확인 df.shape # 목적변수 빈도 확인 df['Class'].value_counts() 2. 특성(x)과 레이블(y) 나누기 # 컬럼 이름으로 나누기 x = df[['컬럼명1', '컬럼명2', ...]] # 컬럼 인덱스로 나누기 x = df[df.columns[1:10]] # loc 함수로 나누기 x = df.loc[:, '컬럼명1':'컬럼명10'] # 목적변수 y = df[['Class']] 3. 범주 변수 변환 식별자 역할을 하는 범주 변수에 원 핫 인코딩(one-hot-encoding) 적용 하위 범주를 변수로 만들어 각 케이스가 그에 해당되면 '1', 아니면 '0' 입력 데이터셋을 훈련-테스트로 나누기 전에 수행해야 오류가 적음 # 범주형 변수 X1 ..
1. 데이터셋 분할 학습(train) / 검증(validation) / 테스트(test) 셋으로 분할 학습(70~90%) / 검증(10~20%) / 테스트(10~20%) 비율로 분할 일반화가 가능한지 검증하고 적합한 모델인지 확인 2. 데이터 전처리 - 목적 변수(y)는 건드리지 않고 특성치(x)는 정규화 진행 정규화는 모든 단위를 동일하게 만드는 과정 ① 표준화 (standardization) : 평균 0, 표준편차 1 ② 최대-최소 (Min-Max) 정규화 : 최댓값 1, 최솟값 0 - 범주형 자료는 데이터 셋을 나누기 전에 원 핫 인코딩 진행 (one-hot encoding) - 고차원 자료의 경우 PCA로 차원 축소 3. 모델 학습 3-1. 지도 학습 ① 분류 - 로지스틱 회귀모델 ② 회귀 - 선..
이상치 확인 # 상자수염도표 그리기 df.boxplot(column='컬럼명') 이상치 처리 1. 이상치 기준을 IQR로 하여 제거 IQR = Q3 (3사분위수) - Q1 (1사분위수) IQR = df['컬럼명'].quantile(0.75) - df['컬럼명'].quantile(0.25) IQR × 1.5 보다 크거나 작은 값을 제거하여 새로운 데이터셋에 할당 df_new = df[(df['컬럼명'] Q1 - IQR * 1.5 )] 2. 로그(log) 변환 변수를 log 변환하여 새로운 변수로 생성 df['log_컬럼명'] = np.log(df['컬럼명']) 3. 제곱근(sqrt) 변환 변수를 sqrt 변환하여 새로운 변수로 생성 df['sqr..
데이터 파일 불러오기 # csv 파일 불러오기 df = pd.read_csv('파일명.csv') # excel 파일 불러오기 df = pd.read_excel('파일명.xlsx') # 한글이 깨질 경우 df = pd.read_csv('파일명.csv', encoding='euc-kr') 데이터 프레임 확인하기 # 처음 행 5개 출력 df.head() # 마지막 행 5개 출력 df.tail() # 특정 행 출력 df[1:5] # Series 형태 열 출력 df['컬럼명'] df.컬럼명 # DataFrame 형태 열 출력 df[['컬럼명']] # 특정 열 출력 df[df.columns[[0, 2, 4]]] df.loc[:, '컬럼명1':'컬럼명2'] # 컬럼명2 포함 df.iloc[:, 0:2] # 인덱스 2..