<aside> <img src="/icons/gradebook_gray.svg" alt="/icons/gradebook_gray.svg" width="40px" /> 핵심 요약
필수 암기 라이브러리
| 라이브러리 | 설명 |
|---|---|
| from sklearn.impute import SimpleImputer | 결측치 대치법에 사용, (strategy=’대치기준’) |
| from sklearn.model_selection import train_test_split | train, test 데이터 분리 시 사용, (X, y, test_size, random_state) |
| from sklearn.preprocessing import LabelEncoder | 범주형 종속 변수 라벨 인코딩 전처리 시 사용 |
| from sklearn.preprocessing import OrdinalEncoder | 범주형 독립 변수 라벨 인코딩 전처리 시 사용, (handle_unknown=’use_encoded_value’, umknown_value=-1) |
| from sklearn.preprocessing import OneHotEncoder | 범주형 변수 원-핫 인코딩 전처리 시 사용, (sparse_output=False, handle_unknown='ignore') |
| from sklearn.ensemble import RandomForestRegressor | 랜덤 포레스트 모델 불러올 때 사용 |
| from skleran.metrics import mean_squared_error | RMSE, MSE 평가지표 계산 시 사용, (squared=False) → RMSE |
| from sklearn.metrics import f1_score | F1 score, Macro F1 Score 평가지표 계산 시 사용, (average=’macro’) → Macro F1 Score |
| from sklearn.metrics import r2_score | R^2 결정 계수 계산 시 사용 |
| from sklearn.metrics import roc_auc_score | AUC 계산시 사용, 이후 predict_proba로 예측 [:, 1] |
| from scipy.stats import ttest_ind | 이표본 t-test 검정 시 사용 |
| from scipy.stats import ttest_rel | 대응표본 t-test 검정 시 사용 |
| from scipy.stats import f_oneway | ANOVA 검정 시 사용 |
| from scipy.stats import kstest, norm | k-s 검정 시 사용, kstest(data[’work_hours’], ‘norm’, args=(mean_work_hours, std_work_hours) |
| from scipy.stats import wilcoxon | 부호순위 검정 시 사용 |
| from scipy.stats import kruscal | 크루스칼-왈리스 검정 시 사용 |
| from scipy.stats import chi2_contigency | 카이제곱 검정 시 사용, pd.crosstab(), chi2, p, dof, expected = chi2_contigency(crosstab) |
| from scipy.stats import pearsonr | 피어슨 상관계수 계산 시 사용 |
| from statsmodels.formula.api import ols | 다중 선형 회귀 모델 불러올 때 사용 |
| from statsmodels.formula.api import logit | 로지스틱 회귀 모델 불러올 때 사용 |
| -2*model.llf | residual deviance 계산 |
| from scipy import stats | stats.ttest_1samp(data[’score’], population_mean) |
| </aside> |
<aside> <img src="/icons/aquarius_gray.svg" alt="/icons/aquarius_gray.svg" width="40px" /> 강의 목차
</aside>
<aside> <img src="/icons/forward_gray.svg" alt="/icons/forward_gray.svg" width="40px" /> 내용 정리
8회 1유형 2번에 1, 3
제 1유형 소개
제 1유형 시험 환경 및 제출 관련 내용
[] 연산자를 활용한 방법
mydata['gender'] # mydata 데이터 프레임의 gender 열에 접근
mydata[['gender', 'midterm']] # mydata 데이터 프레임의 gender, midrterm 열에 접근
mydata[mydata['midterm'] <= 15] # mydata 데이터 프레임에서 mydata 데이터 프레임의 midterm 열의 값이 15이하인 데이터만 선택
.iloc[] 를 활용한 방법
mydata.iloc[:, 0] # mydata 데이터 프레임의 전체 행, 0번째 열만 선택
mydata.iloc[:, [0, 1]] # mydata 데이터 프레임의 전체 행, 0번째 열, 1번째 열만 선택
loc[] 를 활용한 방법
mydata.loc[mydata['midterm'] <= 15] # mydata[mydata['midterm'] <= 15] 과 동일
mydata.loc[mydata['midterm'] <= 15, :] # 위와 동일
mydata.loc[mydata['midterm'] <= 15, ['student_id', 'final']] # mydata 데이터 프레임에서 mydata 데이터 프레임의 midterm 열의 값이 15이하인 student_id, final 열 데이터만 선택
isin([]) 을 활용한 방법
mydata.loc[mydata['midterm'].isin([28, 38, 52])] # mydata 데이터 프레임에서 mydata 데이터 프레임의 midterm 열의 값이 28, 38, 52인 행만 필터링
mydata.loc[mydata['midterm'].isin([28, 38, 52]), ['student_id', 'final']] # mydata 데이터 프레임에서 mydata 데이터 프레임의 midterm 열의 값이 28, 38, 52인 행, student_id, final 열 데이터만 필터링
mydata.loc[~mydata['midterm'].isin([28, 38, 52])] # mydata 데이터 프레임에서 mydata 데이터 프레임의 midterm 열의 값이 28, 38, 52가 아닌 행만 필터링
완전한 표본 체크하기
mydata['gender'].isna().sum() # mydata 데이터 프레임의 gender 열의 결측치 개수 반환
mydata.isna().sum() # mydata 데이터 프레임의 전체 열별 결측치 개수 반환
결측치가 제거된 데이터 프레임 얻기
new_data = mydata.dropna() # mydata 데이터 프레임에서 na 값이 하나이상 포함된 행 데이터 모두 제거한 데이터 프레임 반환, new_data에 대입
결측치 대치하기
df1 = mydata.copy() # mydata 데이터 프레임 깊은 복사
df1['midterm'].fillna(df1['midterm'].mean(), inplace=True) # df1 데이터 프레임의 midterm 열의 결측치를 df1 데이터 프레임의 midterm 열의 평균값으로 채우기, inplace=True는 대입 X
# 여기부터는 새로 깊은 복사했다고 가정
df1['gender'].fillna(df1['gender'].mode(), inplace=True) # df1 데이터 프레임의 gender 열의 결측치를 df1 데이터 프레임의 gender 열의 최빈값으로 채우기, inplace=True는 대입 X
df1['midterm'].fillna(0, inplace=True) # df1 데이터 프레임의 midterm 열의 결측치를 0으로 채우기, inplace=True는 대입 X
df1['gender'].fillna(method='ffill', inplace=True) # df1 데이터 프레임의 gender 열의 결측치를 바로 이전 행의 값으로 채우기, inplace=True는 대입 X
df1['gender'].fillna(method='bfill', inplace=True) # df1 데이터 프레임의 gender 열의 결측치를 바로 다음 행의 값으로 채우기, inplace=True는 대입 X
# scikit-learn의 SimpleImputer 모듈을 이용해서 df1 데이터 프레임의 midterm 열의 결측치를 df1 데이터 프레임의 midterm 열의 평균값으로 채우기
from sklearn.impute import SimpleImputer
imputer_mean = SimpleImputer(strategy='mean')
df1['midterm'] = imputer_mean.fit_transform(df1[['midterm']])
[] 사용하여 새로운 열 추가 및 변경하기
mydata['total'] = mydata['midterm'] + mydata['final'] # mydata 데이터 프레임의 midterm 열의 값과 final 열의 값을 더한 total 열 새로 생성
특정 열 기준으로 데이터 프레임 정렬하기 (기본값은 오름차순)
sorted_df = df.sort_values(by='bill_length_mm', ascending=False) # df 데이터 프레임을 bill_length_mm의 값을 기준으로 내림차순으로 정렬
최대값 찾기
max_idx = df['bill_length_mm'].idxmax() # df 데이터 프레임의 bill_length_mm 열의 최댓값을 가지는 데이터의 index를 반환
df.loc[max_idx] # 최대값의 인덱스로 df 데이터 프레임의 bill_length_mm 열의 최대값 출력
최소값 찾기
max_idx = df['bill_length_mm'].idxmin() # df 데이터 프레임의 bill_length_mm 열의 최소값을 가지는 데이터의 index를 반환
df.loc[max_idx] # 최소값의 인덱스로 df 데이터 프레임의 bill_length_mm 열의 최소값 출력
특정 열을 기준으로 데이터 프레임을 그룹화하기
grouped_df = df.groupby('species').mean(numeric_only=True) # df 데이터 프레임의 species 열의 값을 기준으로 그룹화한 후 평균 계산
그룹 연산 활용 예제
# 각 섬(island)별로 flipper_length_mm의 합계를 구하고, 그 중 합계가 가장 큰 섬을 찾아보기
# groupby() / idmax() 활용
grouped_df = df.groupby('island')['flipper_length_mm'].sum()
max_flipper_island = grouped_df['flipper_length_mm'].idxmax()
grouped_df.loc[max_flipper_island]
제 2유형 소개
제 2유형 시험 환경 및 제출 관련 내용
</aside>