본문 바로가기
자격증/[빅분기] 빅데이터분석기사

[작업형2] 데이터로드 & EDA

by 바다의 공간 2024. 10. 12.

작업형 2유형은 2가지로 나뉜다.

분류 / 회귀 는 아래와 같다

유형 종속변수(목표변수)가 무엇? 성능평가
분류 남,여 / 생존,사망 accuracy_score, fi_score, ROC_AUC_Score,confusion_metrics 등
회귀 수치형  / 가격 RMSE, 결정계수 등

문제에서 주어진 종속변수 형태 보고 우리모델의 성가지표를 보고 어떤 모델을 쓸 지 확인하고 모델을 선택해야함.

 

작업형 2유형 전체순서

 

1.데이터 로드 및 확인

2.결측값 또는 라벨인코딩(문자열->수치형으로 변경)

3. 모델링 및 학습

4. 모델의 성능평가

5. 테스트 모델 예측

6. 테스트 결과 제출 및 확인


빅데이터분석기사 실기 체험환경

https://dataq.goorm.io/exam/3/%EC%B2%B4%ED%97%98%ED%95%98%EA%B8%B0/quiz/1

 

구름EDU - 모두를 위한 맞춤형 IT교육

구름EDU는 모두를 위한 맞춤형 IT교육 플랫폼입니다. 개인/학교/기업 및 기관 별 최적화된 IT교육 솔루션을 경험해보세요. 기초부터 실무 프로그래밍 교육, 전국 초중고/대학교 온라인 강의, 기업/

edu.goorm.io

 

여기서 보면 

이렇게 문제가 출제되는것을 볼 수 있다. 

일단 첫번째 하이라이트를 보면서 성별을 예측하는것 이라고 적혀있기때문에 분류모델이라는것을 알 수있고

평가지표에 따라 평가하는 ROC_AUC를보고 한번 더 확신할 수 있습니다.

 

 

TRAIN 데이터셋에는 성별이 있는것으 로학인할 수 있고

TEST 데이터셋에는 성별이 없는것을 확인할 수 있습니다. 

목표변수를 찾아야하니까요!

 

# 출력을 원하실 경우 print() 함수 활용
# 예시) print(df.head())

# getcwd(), chdir() 등 작업 폴더 설정 불필요
# 파일 경로 상 내부 드라이브 경로(C: 등) 접근 불가

import pandas as pd

train = pd.read_csv("data/customer_train.csv")
test = pd.read_csv("data/customer_test.csv")

#데이터로드 및 확인
#print(train.info()) #결측값처리(환불금액, 라벨인코:주구매상품, 주구매지정)
#print(test.info())

##결측값처리 (대체 : 최빈값)
train.fillna(train['환불금액'].mode()[0], inplace=True)
test.fillna(test['환불금액'].mode()[0], inplace=True)
#print(train.info()) 
#print(test.info())


#라벨인코딩 (train, test)
from sklearn.preprocessing import LabelEncoder

le = LabelEncoder()

train['주구매상품'] = le.fit_transform(train['주구매상품'])
train['주구매지점'] = le.fit_transform(train['주구매지점'])

test['주구매상품'] = le.fit_transform(test['주구매상품'])
test['주구매지점'] = le.fit_transform(test['주구매지점'])
print(train.info()) 
print(test.info())

#데이터 분할
from sklearn.model_selection import train_test_split


X = train.drop(columns=['성별', '회원ID'])
y = train['성별']

X_train, X_test, y_train, y_test = train_test_split(X, y, test_size = 0.2, random_state=2024)


#모델링
from sklearn.ensemble import RandomForestClassifier

rfc = RandomForestClassifier(n_estimators=150, max_depth=20, random_state=2024 )
rfc.fit(X_train, y_train)
pred1 = rfc.predict(X_test) #pred1 : train데이터에 대한 예측값

#성능평가
from sklearn.metrics import roc_auc_score, accuracy_score

roc = roc_auc_score(y_test, pred1)
acc = accuracy_score(y_test, pred1)
print('roc', roc) # 0.6023
print('acc', acc) # 0.6642


#테스트결과예측
test_X = test.drop(columns=['회원ID'])

pred2 = rfc.predict(test_X)
print(pred2) # [1 0 0 0... 0 0 0]

#결과 데이터 제출 및 확인
pd.DataFrame({'pred': pred2}).to_csv('result.csv',index=False)

#저장데이터 확인
result = pd.read_csv('result.csv')
#print(result)

 

 

 

 





EDA

 

순번 역할 사용방법 비고
1 상위 5개 데이터 X_train.head()  
2 하위 5개 데이터 X_train.tail()  
3 데이터 샘플(랜덤) X_train.random() 괄호 안에 숫자를 쓰면 그 수만큼 보여줌
4 데이터 크기확인 X_train.shape !괄호 없음!
5 데이터 타입 X_train.info()
6 수치형 컬럼 통계값 확인 X_traion.describe()
7 범주형 컬럼 통계값 확인 X_train.describe(include='object') include='O' or include'object'
8 target(label)별 개수 확인 y_train['income'].value_counts()  
9 상관관계 X_train.corr(numeric_only=True) 판다스 업데이트에 따라
corr.(numeric_only =True)해줘야함

 


주어진 데이터 합치기, 분리
순번 역할 사용방법 비고
1 X_train, y_train합치는 것 예시 df = pd.concat([X_train, y_train['income']], axis=1)
df.shape
소괄호안에 x,y를 넣어주면 됩니다. 축을 정해야하는데 안정해주면 아래 위로 붙음
2 train분리 예시 X_tr = train.iloc[:,:-1].copy()
y_tr = train.iloc[:,[0,-1]].copy()
X_tr.shape, y_tr.shape
iloc활용, copy()는 사본을 의미함 안쓰면 워닝이 뜰수도있음.