빅데이터 분석기사 실기시험에서 작업형 2번 문제가 회귀형으로 나오는 경우, 작성가능한 프레임
<목표> 2018년 연봉액 맞추기
환경구축
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
import warnings
from pandas.plotting import scatter_matrix
warnings.filterwarnings('ignore') # 경고창 무시
plt.rcParams['font.family'] = 'Malgun Gothic' # matplotlib 한글 깨짐 처리
데이터 불러오기
# Load Data
# picher_file_path = '../data/picher_stat_2017.csv'
df = pd.read_csv('picher_stat_2017.csv')
df.head()
데이터 탐색하기
df.info()
# 데이터 상관관계 파악
df.corr()
# 데이터 상관관계 시각화
plt.figure(figsize=(16,9))
sns.heatmap(df.corr(), cmap='gray')
# y값 분포확인
sns.histplot(df['연봉(2018)'], kde=True, bins=100)
# 변수(features)로 사용가능한 칼럼 확인
df.columns
# 연속형, 범주형 칼럼 구분하기
col_cont = []
col_cat = []
# 사용할 변수 정의
features = [
# '선수명',
'팀명',
'승',
'패',
'세',
'홀드',
'블론',
'경기',
'선발',
'이닝',
'삼진/9',
'볼넷/9',
'홈런/9',
'BABIP',
'LOB%',
'ERA',
'RA9-WAR',
'FIP',
'kFIP',
'WAR',
# '연봉(2018)',
'연봉(2017)'
]
# 사용하고 있는 변수(features) 확인
len(features)
# X값 분포확인
plt.figure(figsize=(20,20))
for index, col_name in enumerate(features):
plt.subplot(5,4,index+1)
sns.histplot(df[col_name])
데이터 전처리
# Label Encdoer (le) : 문자열로 구성된 칼럼이 있는 경우
# from sklearn.preprocessing import LabelEncoder
# df.loc[:, 'col_name'].apply(LabelEncoder().fit_transform)
# df['col_name'].LabelEncoder.fit_transform(df['col_name'])
# Regualr Expression (regex) : 특정한 규칙을 가진 문자열의 집합을 변환
# import re
# d['col_name'].map(lambda x: re.sub(r'before', 'after', x))
# NaN : 결측치 제거/치환
# df = df.replace('nan', np.nan)
# df.isnull().sum()
# df = df.fillna(0)
# df.loc[:, ['col_name']] = df.loc[:, ['col_name']].fillna(0)
# 선수명 칼럼 분리
df_pitcher = df.iloc[:, 0]
df = df.drop('선수명', axis=1)
# 팀명을 라벨인코딩 적용
df.loc[:, ['팀명']] = df.loc[:, ['팀명']].apply(LabelEncoder().fit_transform)
# 데이터프레임 표준화
from sklearn.preprocessing import StandardScaler
scaler = StandardScaler()
X_scaled = scaler.fit_transform(df)
X = df[features]
y = df['연봉(2018)']
# y값 log적용
plt.figure(figsize=(10,5))
plt.subplot(1,2,1)
sns.histplot(y)
plt.subplot(1,2,2)
sns.histplot(np.log1p(y))
y = np.log1p(y)
train_set와 test_set 분할
from sklearn.model_selection import train_test_split
X_train, X_Test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=0)
모델정의 및 평가
from sklearn.ensemble import RandomForestReegressor
from xgboost import XGMRegressor
from sklearn.metrics import mean_absolute_error, mean_squared_error
rfr = RandomForestRegressor()
rfr.fit(X_train, y_train)
print('RFR ACC.:', rfr.score(X_train, X_test), rfr.score(y_train, y_test)
p_test = predict(X_test)
print('p_test MAE.:', mean_absolute_error(y_test, p_test))
print('p_test MSE.:', mean_squared_error(y_test, p_test))
print('p_test RMSE.:', np.sqrt(mean_squared_error(y_test, p_test)))
xgb = XGBReressor()
xgb.fit(X_train, y_train)
print('XGBR ACC.:', xgb.score(X_train, y_train), xgb.score(X_test, y_test))
p_test = xgb.predict(X_test)
print('p_test MAE.:', mean_absolute_error(y_test, p_test))
print('p_test MSE.:', mean_squared_error(y_test, p_test))
print('p_test RMSE.:', np.sqrt(mean_squared_error(y_test, p_test)))
#빅데이터분석기사후기 #빅데이터분석기사실기 #빅데이터분석기사필기pdf #빅데이터분석기사합격률 #빅데이터분석기사쓸모 #빅데이터분석기사2022일정 #빅데이터분석기사전망 #빅데이터분석기사실기 #빅데이터분석기사실기파이썬 #빅데이터분석기사실기파이썬 #빅데이터분석기사실기문제 #빅데이터분석기사실기합격률 #빅데이터분석기사실기준비 #빅데이터분석기사필기기출문제 #빅데이터분석기사필기복원 #빅분기기출 #빅분기정리 #빅분기난이도 #빅분기필기복원
'Learning > 빅데이터 분석기사' 카테고리의 다른 글
[빅분기] 라이브러리/모듈 불러오기 (0) | 2022.06.06 |
---|---|
'빅데이터분석기사 실기 제2유형' 이것만이라도 알고가자! (0) | 2022.06.06 |
빅데이터 분석기사 샘플문제 문제풀이 (0) | 2021.11.18 |
빅데이터 분석기사 실기 시험환경 (제3회) (0) | 2021.11.18 |
빅데이터 분석기사 실기시험일정 (2021) (0) | 2021.10.26 |