빅데이터분석기사 (빅분기) 실기 총 정리 / 시험 시작 전 확인

2023. 12. 19. 17:10·🥇 certification logbook
728x90
반응형

빅데이터 분석 기사 실기 준비하면서 정리한 내용
공부한 내용 정리하는데 참고용, 시험 전날, 시험 보러 가는 길, 시험 시작 전 확인하면 좋을 것 같다.
공부할 때에는 눈으로 하지 말고, 머리로 외운다 생각하지 말고, 실제로 문제를 풀어보며 키보드를 치는 손가락으로 외운다고 생각하며 공부하는 게 좋다.
( help, dir 사용 방법 익히는 것은 필수 )
 

패키지

############
# 데이터 프레임
import pandas as pd

############
# 수학 계산
import numpy as np

############
# 전처리 (x_train, x_test 다 해야 함)
from sklearn.preprocessing import LabelEncoder
from sklearn.preprocessing import MinMaxScaler

############
# dataset 나누기
from sklearn.model_selection import train_test_split

############
# 모델 학습
from sklearn.ensemble import RandomForestClassifier # 분류
from sklearn.ensemble import RandomForestRegressor # 예측

### 선형 회귀
from sklearn.linear_model import LinearRegression
### 의사 결정 나무
from sklearn.tree import DecisionTreeClassifier
### SVM
from sklearn.svm import SVC
### K-NN
from sklearn.neighbors import KNeighborClassifier
### ANN
from sklearn.neural_network import MLPClassifier

############
# 모델 성능
from sklearn.metrics import confusion_matrix, f1_score, accuracy_score, mean_squared_error

############
# 통계 검정
from scipy.stats import shapiro, levene, 
ttest_1samp, ttest_rel, ttest_ind, 
f_oneway, 
chisquare, chi2_contingency

 

작업형 1

dt = pd.read_csv('.csv', encoding='euc-kr')

# 컬럼 정보
df.info()
# 분포 정보
df.describe()

# 인덱스초기화
df.reset_index(drop=True)

# 중복 행 선택
df[['컬럼명','컬럼명']]

# 분위수
df['컬럼명'].quantile(0.25) # 1분위수(0.25) 2분위수(0.5) 3분위수(0.75)
## IQR
IQR = df['컬럼명'].quantile(0.75) - df['컬럼명'].quantile(0.25)

# 날짜 처리 ***
pd.to_datetime(df['컬럼명']).dt.year # 년도
import datetime
datetime.date(year, month, day) # 새 날짜 데이터 만들기

# 결측값 확인
df.isnull().sum()

# 결측치 행 제거
df.dropna()

# 중복행 제거
df['컬럼명'].drop_duplicates()

# 중복행 제거 : 변화하지 않은 데이터 구하기
# 중복행 -> 데이터여러개 -> 변화 있음
df['컬럼명'] - df['컬럼명'].drop_duplicates()

# 문자열 처리 관련해서는 .str 붙이기
df['컬럼명'].str.contains(str1)
df['컬럼명'].str.replace(' ', '')
df['컬럼명'].str.lower()

# 그룹
df.groupby(['컬럼명1','컬럼명2'])['그룹기준 컬럼명'].mean() # 그룹기준 컬럼명의 평균으로 그룹

# 정렬 ***
df['컬럼명'].sort_values(ascending=False)

# 데이터 개수
df['컬럼명'].value_counts()

# 데이터 타입 변경
df['컬럼명'].astype('int')

# 람다 사용
df['컬럼명'].map(lambda x : 1 if x in ['M','m'] else 0)

# 연령대 나누기
df['나이'] // 10 * 10 # // 두개 임

# 제곱
df['키'] ** 2

# 값 바꾸기 *****
df.loc[df['컬럼명'] >= 조건, '컬럼명'] = 값

# 컬럼 지우기
x_train = x_train.drop(columns=['컬럼명1', '컬럼명2']) # 컬럼1, 컬럼2 지움

# 결측값 대치
x_train['컬럼명'] = x_train['컬럼명'].fillna(x_train['컬럼명'].mean()) # 결측값 평균 대치
# x_train['컬럼명'].median() 중앙값
# x_train['컬럼명'].std() 표준편차
# 직전값 대치 x_train['컬럼명'].fillna(method='ffill')
# 다음값 대치 x_train['컬럼명'].fillna(method='bfill')

# 평균에서 1.5 표준편차
std1 = mean + (df['컬럼명'].std() * 1.5)
std2 = mean - (df['컬럼명'].std() * 1.5)

# OR 조건
df[(df['컬럼명'] >= std1) | (df['컬럼명'] <= std2)]['컬럼명'].sum()

# 70% 데이터 학습 데이터로 만들기
df.iloc[:int(len(df)*0.7), :]

# 테이블 두개 합치기
pd.concat([df1, df2],join='outer').fillna(0)
pd.merge(df1, df2,on='key column',how='outer') # key column 기준으로 합집합으로 merge

# 상관계수
df.corr()

# 이동평균
df[['컬럼명1','컬럼명2']].rolling(7).mean() # 7일 간격

# 1차 차분
df['컬럼명'].diff()

# 리스트 값이 포함되는가?
lst =[1.69, 2.39, 3.39, 4.45, 9.25, 10.98, 11.75, 16.98]
df.loc[df['컬럼명'].isin(lst)]

 

작업형 2

dt = pd.read_csv('.csv', encoding='euc-kr')

############
# 전처리 (x_train, x_test 다 해야 함)
x_train = x_train.drop(columns=['컬럼명1', '컬럼명2']) # 컬럼1, 컬럼2 지움
x_train['컬럼명'] = x_train['컬럼명'].fillna(x_train['컬럼명'].mean()) # 결측값 평균 대치
# x_train['컬럼명'].median() 중앙값
# x_train['컬럼명'].std() 표준편차


# 범주형 데이터가 범주타입이 아닐때 범주 타입으로 바꾸기
df['Class'].astype('category')

# 범주형 있을 때
x_train = pd.get_dummies(x_train['컬럼명'])

from sklearn.preprocessing import LabelEncoder
x_train['컬럼명'] = LabelEncoder().fit_transform(x_train['컬럼명']) # 범주-> 숫자로

# 값 클 때
from sklearn.preprocessing import MinMaxScaler
scaler = MinMaxScaler()
x_train['컬럼명'] = scaler.fit_transform(x_train['컬럼명']) 
# reshape error나면
x_train['컬럼명'] = scaler.fit_transform(np.array(x_train['컬럼명']).reshape(-1, 1))

# column 이름 동일하게 맞추기
columns = list(set(df_data.columns).intersection(df_test.columns)) # intersection. set의 교집합

############
# dataset 나누기
from sklearn.model_selection import train_test_split
x_train, x_valid, y_train, y_valid = train_test_split(df_data2, df_label, test_size = 0.25)

############
# 모델 학습
from sklearn.ensemble import RandomForestClassifier # 분류
from sklearn.ensemble import RandomForestRegressor # 예측
model = RandomForestClassifier(n_estimators = 300, max_depth = 10)
model.fit(x_train, y_train)

############
# 모델 성능
from sklearn.metrics import confusion_matrix, f1_score, accuracy_score, mean_squared_error
cm = confusion_matrix(y_valid, pred, labels=[1,0]) # 정답, 예측, 라벨
print(accuracy_score(y_valid, pred))
print(f1_score(y_valid, pred))
print(mean_squared_error(y_valid, pred, squared=False)) # squared=False하면 RMSE이 된다.

############
# 모델 평가
# 예측값 구하라
pred = model.predict(x_test)
df = pd.DataFrame(pred)

# 확률값 구하라
pred = model.predict_proba(x_test)
df = pd.DataFrame(pred) # pd.DataFrame({"ID":df2["ID"],...})
 # 확률값 순서 (라벨 순서)
	print("Class Labels:", model.classes_)
df = df.iloc[:, 0] # df= df.iloc[:, 1]

############
# 파일 저장
result = pd.DataFrame({'id':x_test['id'], 'pred':df})
result.to_csv('000000.csv',  index = False)
# 만약 x_test['id'] 안되면 x_test.index
# 1부터 index 지정 : x_test['id'] = range(1, len(result) + 1)

 

작업형 3

import pandas as pd
from scipy.stats import shapiro, levene, 
ttest_1samp, ttest_rel, ttest_ind, 
f_oneway, 
chisquare, chi2_contingency

# from scipy.stats 
# t-test를 하라
# shapiro, pvalue 작으면 wilcoxon, pvalue 크면 ttest_1samp, 
# after, befor있으면 ttest_rel (쌍체표본)
# levene, pvalue 작으면 equal_var을 False, pvalue 크면 ttest_ind, 
# f-test를 하라
# f_oneway
# chi제곱을 하라
# chisquare, pd.crosstab으로 만든 테이블로 chi2_contingency

######################
### t-test

#alternative 
# - two-sided
# - less
# - greater

# 일표본
정규성 = shapiro(df['컬럼'])
# 정규성 : 우리는 정규분포를 따르지 않기를 원함
# 정규성 pvalue > 유의수준(mu) (shaprio pvalue가 좀 크다)
ttest_1samp(samp, mu, alternative='')
# 정규성 pvalue < 유의수준(mu) (shaprio pvalue가 작다)
wilcoxon(samp - mu, alternative='')

# 대응표본 (after, before) ->쌍체표본 t검정
ttest_rel(samp1, samp2, alternative)
ttest_rel(after, before, alternative)

# 독립표본 (아예 상관 없는 두개의 독립 변수)
등분산성 = levene(samp1, samp2)
# 등분산성 : 우리는 등분산성을 따르지 않기를 원함
# 등분산성 pvalue > 유의수준 (levene pvalue가 크다)
ttest_ind(samp1, samp2, alternative)
# 등분산성 pvalue < 유의수준 (levene pvalue가 작다)
ttest_ind(samp1, samp2, alternative, equal_var='False')

######################
### anova
f_oneway(samp1, samp2)

######################
###chisquare

# 기댓값 비율로 준다면,
관찰= [1, 2, 3, 4, 5]
기대 = sum(관찰) * np.array([0.2, 0.2, 0.2, 0.2, 0.2])
 
#적합
chisquare(관찰, 기대)

#독립/동질
table = pd.crosstab(a, b)
chi2_contingency(table)


###################
### 회귀 계수 구하기
from sklearn.linear_model

# 수치
from sklearn.linear_model import LinearRegression
model = LinearRegression()
model.fit(x,y)
print("회귀 계수:", model.coef_)
print("절편:", model.intercept_)
print("오즈비:", np.exp(model.coef_[0][0]))
# 범주
from sklearn.linear_model import LogisticRegression
y = LabelEncoder().fit_transform(y) # 범주-> 숫자로
model = LogisticRegression(max_iter=1000)

###################
### 기타
from scipy.stats import poisson
poisson.pmf(5,3) # 하루 평균 3명이 잡지를 구매할 떄 하루에 정확히 5명의 고객이 잡지를 구매할 확률
1-poisson.cdf(1,3) # 하루에 적어도 3명이 잡지를 구매할 확률
728x90
반응형

'🥇 certification logbook' 카테고리의 다른 글

[Coursera/IBM course #1] Tools for Machine Learning  (1) 2025.05.03
[Coursera/IBM course #1] 데이터 사이언티스트 (data scientist) vs AI 엔지니어 (AI engineer)  (0) 2025.05.03
[Coursera/IBM course #1] 머신러닝이란 무엇인가  (0) 2025.05.02
[Coursera/IBM] IBM AI Engineering PC 및 Machine Learning with Python 코스 소개  (1) 2025.04.30
[ADsP] 군집분석  (0) 2023.06.18
[python 통계분석] 교차분석(카이제곱 검정)  (0) 2023.06.18
[python 통계분석] t-test 검정  (0) 2023.06.18
[python 데이터 전처리] 데이터 스케일링 (data scaling)  (0) 2023.06.15
'🥇 certification logbook' 카테고리의 다른 글
  • [Coursera/IBM course #1] 머신러닝이란 무엇인가
  • [Coursera/IBM] IBM AI Engineering PC 및 Machine Learning with Python 코스 소개
  • [ADsP] 군집분석
  • [python 통계분석] 교차분석(카이제곱 검정)
이소야
이소야
✔ 공부 기록 ٩(๑•̀o•́๑)و
  • 이소야
    I study SO
    이소야
    ✔ 공부 기록 ٩(๑•̀o•́๑)و
  • 전체
    오늘
    어제
    • 분류 전체보기 (217)
      • 🤖 ai logbook (39)
      • 💻 developers logbook (1)
      • 🥇 certification logbook (67)
      • ⚖️ legal logbook (108)
      • ⚡ electronics logbook (1)
      • 🌍 english logbook (0)
      • 🎁 etc (1)
  • 최근 글

  • 인기 글

  • 태그

    IBM
    데이터사이언스 입문
    Coursera
    자격증
    데이터분석준전문가
    ADsP
    기본권의기초이론
    Python
    온라인 강의 추천
    deeplearning
    certificate
    인공지능 입문
    머신러닝
    법학과
    방통대
    datascience
    빅데이터분석기사
    형법
    근로기준법
    민법
  • hELLO· Designed By정상우.v4.10.3
이소야
빅데이터분석기사 (빅분기) 실기 총 정리 / 시험 시작 전 확인
상단으로

티스토리툴바