포켓몬의 능력치만 보고 전설 포켓몬인지 판별하기

be1le·2022년 4월 1일
16

Kaggle

목록 보기
1/1
post-thumbnail

kaggle에는 아주 재밌는 데이터셋이 존재하는데 바로 포켓몬 데이터셋이다..!
kaggle pokemon dataset바로가기

kaggle data 다운로드하기

가장먼저 kaggle의 dataset을 이용하기 위해서는 해당 데이터셋에서 ...모양 아이콘을 누르면 api를 copy할 수 있는 option이 나오는데 이를 복사후 이처럼작성하면된다!
우선이렇게 본인의 kaggle id와 key를 넣어주고

그후
!kaggle datasets download -d abcsds/pokemon

!unzip pokemon.zip
이렇게 두개의 명령어를 치면 dataset이 내 폴더에 들어올 것이다!

만약 이과정에서 조용히 풀어내고 싶다면 unzip을 할때 -q옵션을 주면된다.

임포트문

dataset 변수에 할당하기

어떠한 dataset이더라도 해당하는 dataset의 구조를 잘 알고있는것이 중요하다..!

df = pd.read_csv('Pokemon.csv')
이렇게 df에 우리가 다운로드받은 csv파일을 할당해 준다! 보통 csv파일의 경우 df라는 변수에 할당하는 것이 관례이다..!

그후
df.head(5)
이런식으로 df의 앞부분 5개만을 출력해 달라고 하면!

여러가지의 정보가 담긴 csv파일이구나!를 확인할 수 있다!

필요한 데이터만 뽑아내기

우리는 오늘 능력치만으로 해당 포켓몬이 Legendary인지를 판별하는 모델을 만들고 싶은 것이기에! 스텟에 해당하는 cols를 제외하고는 모두 날려버린다고 생각하면된다!

그후로 레전더리와 일반포켓몬을 sns의 countplot함수로 그려주면

이정도의 전설 포켓몬이 있구나! 시각화로 인하여 비율을 알 수 있다!

전처리


위처럼 print(df.isnull().sum()) 함수로 비어있는 값을 확인함과 동시에 전처리를 할수 있다!

x,y데이터 분할


위처럼 x_data에는 df.drop함수를 사용하여서 'Legendary'에 해당하는 컬럼만 제외한후 할당을하고 y_data에는 df[['Legendary']] 이런식으로 직점 col에 접근해 할당해준다!
또 사소한 꿀팁이라 하면 df.head(5) <-이런식으로 ( ) 괄호안에 숫자를 넣지않게되면 5개만 출력이 된다! df.tail( )도 마찬가지 이다!

학습,검증 데이터 분할

여기서 중요한건 train_test_split함수로 학습,검증 데이터를 분할하였고 test_size=0.2이 부분이 검증 데이터를 전체의 20%로 지정하겠다고 선언한 부분이다! 밑에 출력된 숫자를 보면


이처럼 나왔는데 800개였던 전체 데이터가 8:2 즉 8000.8인 640과(학습데이터셋) 8000.2인 160(검증 데이터셋)으로 나눠진걸 확인할 수 있다!

모델 fitting!


모델에게 옷을 입혀보는 시간이다! 활성화함수는 sigmoid를 사용하였고 현재우리는 능력치만을 보고 전설포켓몬인지(1)아닌지(0) 즉 2개의 레이블된 클래스가 있기때문에 binary crossentropy를 사용하였다! metrics=['acc'] 이렇게 설정해준 이유를 보면 loss만으로는 우리가 정확도를 예측하기가 어렵기 때문에 acc로 정확도를 같이 보여주는 것이다.

이렇게 정확도를 보면 0.9187 상당히 낮은걸 확인할 수 있다..! 이제 lr과 optimizer를 바꿔가며 정확도를 높여가는 튜닝을 거친다면 더욱더 높은 acc를 갖게될 수 있지만! 나의 생각에는 리자몽이 전설포켓몬도 아닌데 스텟이 너무높고.. 전설 포켓몬들도 하나의 스탯에 가중치가 큰 포켓몬들도 있다보니 이러한 문제가 일어난것 같다..! 요새 포켓몬빵이 인기가 너무많아서! 관련된 pokemon dataset으로 실습해 보았다!

profile
그저 그런 개발자가 되지 않겠습니다.

3개의 댓글

comment-user-thumbnail
2022년 4월 1일

멋있어!

답글 달기
comment-user-thumbnail
2022년 4월 1일

while True:
print('멋있어!')

답글 달기
comment-user-thumbnail
2022년 4월 1일

있어멋

답글 달기