728x90
반응형
안녕하세요!
23년 6월 24일에 있을 빅데이터 분석기사 실기를 준비하면서 준비를 해도 불안함 마음으로 더 많은 자료를 찾는 분들이 있으실 텐데요
조금이라도 도움이 되고자 Kaggle 데이터를 활용해서 작업형 2 유형을 다뤄보겠습니다!
Kaggle 입문자들에게도 좋을 것 같네요
https://www.kaggle.com/datasets/bobbyscience/league-of-legends-diamond-ranked-games-10-min
데이터는 오른쪽 상단에서 Copy API command를 통해 가져오실 수 있습니다
이후 다음처럼 발급받은 username과 key를 입력하도록 하겠습니다
os.environ['KAGGLE_USERNAME'] = 'sihyunlee9604'
os.environ['KAGGLE_KEY'] = 'kaggle_key'
또 아래 명령어를 통해 데이터를 받아오겠습니다
참고로 캐글을 통해 진행하였습니다
!kaggle datasets download -d bobbyscience/league-of-legends-diamond-ranked-games-10-min
!unzip '*.zip'
df = pd.read_csv('high_diamond_ranked_10min.csv')
df.head()
* 데이터 전처리
먼저 EDA를 통해 필요없는 변수를 제거해주겠습니다
df.drop(['gameId',
'redFirstBlood', 'redKills', 'redDeaths', 'redAssists',
'redTotalGold', 'redTotalExperience',
'redGoldDiff',
'redExperienceDiff'],axis=1,inplace=True)
이후 데이터를 X_num, X_cat로 나눠주는데, 수치형, 범주형으로 나누는 것입니다.
수치형 데이터는 정규화를 통해 값을 바꿔주고, 범주형 데이터는 0혹은 1로 되있는 상황이니 그대로 두겠습니다
from sklearn.preprocessing import StandardScaler
X_num = df[['blueWardsPlaced', 'blueWardsDestroyed',
'blueKills', 'blueDeaths', 'blueAssists', 'blueEliteMonsters',
'blueTowersDestroyed', 'blueTotalGold',
'blueAvgLevel', 'blueTotalExperience', 'blueTotalMinionsKilled',
'blueTotalJungleMinionsKilled', 'blueGoldDiff', 'blueExperienceDiff',
'blueCSPerMin', 'blueGoldPerMin', 'redWardsPlaced', 'redWardsDestroyed',
'redEliteMonsters', 'redTowersDestroyed',
'redAvgLevel', 'redTotalMinionsKilled', 'redTotalJungleMinionsKilled',
'redCSPerMin', 'redGoldPerMin']]
X_cat = df[['blueDragons','blueHeralds','redDragons','redHeralds','blueFirstBlood']]
scaler = StandardScaler()
X_scaled = scaler.fit_transform(X_num)
X_scaled = pd.DataFrame(X_scaled, index=X_num.index, columns=X_num.columns)
X = pd.concat([X_scaled, X_cat], axis=1)
y = df['blueWins']
이후 두 데이터를 합쳐서 X로 지정하며 타깃은 y로 지정하겠습니다
학습데이터와 테스트 데이터로 나눠주겠습니다
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=4234)
* 모델 학습 및 성능 평가
먼저 LogisticRegression 모델을 만들겠습니다
from sklearn.linear_model import LogisticRegression
from sklearn.metrics import classification_report
model_lr = LogisticRegression(max_iter = 10000)
model_lr.fit(X_train, y_train)
pred = model_lr.predict(X_test)
print(classification_report(y_test, pred))
또한 변수가 결과에 미치는 영향을 알아보겠습니다
model_coef = pd.DataFrame(data=model_lr.coef_[0,:], index = X.columns, columns=['Model Coefficient'])
model_coef.sort_values(by='Model Coefficient', inplace=True, ascending=False)
plt.bar(model_coef.index, model_coef['Model Coefficient'])
plt.xticks(rotation=90)
plt.grid()
plt.show()
다음으로 XGBClassifier를 사용하여 성능을 평가해보겠습니다
from xgboost import XGBClassifier
model_xgb = XGBClassifier()
model_xgb.fit(X_train, y_train)
pred = model_xgb.predict(X_test)
print(classification_report(y_test, pred))
결과에 미치는 변수의 영향은 아래와 같습니다
fig = plt.figure(figsize=(10,6))
plt.barh(X.columns, model_xgb.feature_importances_)
감사합니다!
728x90
반응형
'AI > AI' 카테고리의 다른 글
XAI란 무엇인가? (0) | 2024.08.21 |
---|---|
[AI] R-CNN 내용 정리 (0) | 2023.10.12 |
[AI] Kaggle Data로 데이터 분석하기_Heart Failure Prediction (0) | 2023.06.16 |
[AI] Jupyter에서 GPU 사용 여부 확인하기 (0) | 2023.01.02 |
[AI] Pytorch 개요 및 GPU 사용 여부 체크하기 (0) | 2022.12.22 |