본문 바로가기
빅데이터 분석

2024 빅데이터 분석기사 빅분기 실기 9회 파이썬 공부 -제2유형 (작년 실기 후기 +)

by Salon de arte 2024. 11. 20.
728x90
반응형

빅분기 실기 9회가 4일 앞으로 다가온.. 

그동안 하루에 한줄이라도 꾸준히 하려고 했지만, 계속해서 실수를 하고 있기 때문에 

빅분기 실기  파이썬 2유형 공부법 총정리하기. 

 

시험환경 문제도 다시한번 풀어보자. 

 

일단 나의 재수생 경험으로는 회귀모델이 두번 다 나왔었고, 이때 나온 소수점을 정수형으로 바꾸거나 반올림 하면 큰 감점이 있는듯 싶다^^

 

(맨 처음 실기에서는 소수점 나온 대로 제출했고, 튜닝 따윈 안했는데 만점이 나왔으나.. 컬럼명 틀려서 -3점 으로 떨어졌고,, ㅎㅎㅎ 그 다음엔 정수형으로 변경해서 제출했거, 튜닝 안했는데 20점 나옴ㅋㅋ ) 그래서 아무래도 모델평가에 영향을 미치는 것 같다. 

 

나는 그냥 다른거 안하고 앙상블 모델링으로 할 것이기 때문에 

순서를 차근차근 외워두기. 

 

1.EDA - 

사실 여태 두번의 실기에서는 결측값은 나오지 않았다. 그러나 또 어떻게 될지 모르니 잘 알아두기 

df.isnull().sum()
df.describe()
df.info()
df.fillna()

 

2. Preprocessing 

from sklearn.preprocessing import MinMaxScaler
from sklearn.preprocessiong import StandardScaler 

scaler=StandardScaler()
scaler.fit(df['컬럼'])
scaled =scaler.transform(df['컬럼'])
#이렇게 변환해주고 다시 DataFrame 을 사용해 DF로 만들기 
scaled_data= pd.DataFrame(scaled,columns=['컬럼명'])
#이렇게 변환된 값을 기존 data에 concat 해주는 방식으로 연습중이다 (이건 각자 원하는 방식대로 하기)

 

분류분석때는 0~1시이의  값인 standardScaler , 아닐때는 MinMax 사용했는데 

사실 저번엔 안했는데도 만점인걸보면 모르겠음 ^^.. 

가장 중요한 것은 카테고리 /수치형 데이터가 항상 둘다 섞여 나왔고 

encoding 해주는 방법이 필요하다. 

 

인코딩은 가장 쉽게는 get_dummies 하면 되긴한데, 카테고리가 넘나 많을 경우 이방법으론 컬럼이 많이 늘어나기 때문에 안되고 label_encoding을 해주는 것이 좋다.

from sklearn.preprocessing import LabelEncoder
lb=LabelEncoder()
lb.fit(df['컬럼명'])

labeled=lb.transform(df['컬럼명'])
labeled_df=pd.DataFrame(data=labeled, columns=['컬럼명_L'])

#이렇게 해주고 나는 기존 데이터에 concat 하는 방식을 사용했다.

 

여기서 train, test를 concat 해서 다시 나눠 하는 경우가 있는데 .... 사실 이거는 맞지만 다시 나누는 방법이 조금 복잡해서 .. 나는 그냥 따로 했다.. 그래서 공부할때 이점을 유의해보기 

사실 데이터마님 모의고사 푸는데 풀이방법에 도 따로 되어 있어서 사실 많이 상관은 없는듯 하다 ㅋㅋ 

 

 

==== > 데이터 마님 블로그에서 모의고사 하루에 1개씩 풀어보기 ! 

아주 복잡한 데이터도 있어서 배울게 많다 !! 

 

 

https://www.datamanim.com/dataset/practice/ex7.html

 

 

3. train_test_split 

from sklearn.model_selection import train_test_split
x_train,x_test,y_train,y_test=train_test_split(x,y,test_size=0.2, random_state=300)
print(x_train.shape,x_test.shape,y_train.shape,y_test.shape)
# shape으로 train /test 셋 이 얼마나 나눠졌는지 확인해보는 것도 좋음. 여기서 describe()로 디테일하게 확인할 수있지만 시간없으면 그냥 무시하기

 

 

4. modeling 

모든 시험엔 랜포를 사용. ㄱㅏ끔 퇴근후 딴짓 이런 코드보면 쌉고수들이 적어놓은 코드들이 있던데 

그냥 나는 빅분기 초딩으로써 그런거 다 안하고 앙상블 모델만 판다. 

form sklearn.ensemble import RandomForestRegressor
#회귀분석시 사용

form sklearn.ensemble import RandomForestClassifier
#분류분석시 사용


model=RandomForestRegressor()

model.fit(x_train,y_train)
y_pred= model.predict(x_test)

y_pred_df=pd.DataFrame(y_pred,columns='pred')

 

5. 모델평가지표 

 

이제 모델링 했으면 여기서 한번 모델평가지표를 검사해야한다. 

회귀분석 모델은 

MSE, RMSE, R2_Score 로 평가한다. 

 

MSE는 scikit-learn 라이브러리에 있지만 RMSE 는 없으므로 MSE*0.05 해준 값으로 보면 된다. 

모델의 설명력= R2_Score

MAE로 평균 얼마나 값이 차이가 나느냐를 검사해본다 .

 

from sklearn.metrics import mean_squared_error,mean_absolute_error,r2_score

r2=r2_score(y_test,y_pred_df)
mae=mean_absolute_error(y_test,y_pred_df)
mse=mean_squared_error(y_test,y_pred_df)
rmse=mse*0.05


print(r2,mae,mse,rmse)

 

초보자는 여기까지만 해보고 

test 데이터로 다시 predict 해 최종 결과 제출하면된다. 

 

5. 최종 결과 제출

pred=model.predict(test)
result=pd.DataFrame(pred, columns=['pred'])

print(result)

result.to_csv('result.csv',index=False)

 

728x90
반응형

댓글