[EDA] 포켓몬으로 살펴보는 피처 엔지니어링 3

Ethan·2022년 5월 27일
0

1편 링크

2편 링크

베이스라인 모델은 정확도 95%, Recall 0.62의 성능을 보였다.
이번엔 앞서 전처리했던 데이터를 가지고 학습을 시켜보자.

print(len(pokemon.columns))
>>> 45

전체 컬럼 수는 45개로 기존의 13개에 비해 3배 넘게 늘어났다.
이 중 불필요한 컬럼을 제거하고 학습용 데이터와 타겟 변수를 생성한다.

# 학습용 데이터 생성
features = ['Total', 'HP', 'Attack', 'Defense', 'Sp. Atk', 'Sp. Def', 'Speed', 'Generation', 
            'name_count', 'long_name', 'Forme', 'Mega', 'Mewtwo', 'Kyurem', 'Deoxys', 'Hoopa', 
            'Latias', 'Latios', 'Kyogre', 'Groudon', 'Poison', 'Water', 'Steel', 'Grass', 
            'Bug', 'Normal', 'Fire', 'Fighting', 'Electric', 'Psychic', 'Ghost', 'Ice', 
            'Rock', 'Dark', 'Flying', 'Ground', 'Dragon', 'Fairy']

len(features)
>>> 38

X = pokemon[features]
print(X.shape)
>>> (800, 38)

# 타겟 변수 생성
target = "Legendary"

y = pokemon[target]
print(y.shape)
>>> (800, )

# 데이터 분리
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=15)

print(X_train.shape, y_train.shape)
>>> (640, 38) (640,)

print(X_test.shape, y_test.shape)
>>> (160, 38) (160,)

준비가 되었으면 다시 모델에 훈련시킨다.

model = dtc(random_state=25)

# 훈련
model.fit(X_train, y_train)
y_pred = model.predict(X_test)

# 오차 행렬
confusion_matrix(y_test, y_pred)
>>> array([[141,   6],
       	   [  1,  12]])

# 평가
print(cr(y_test, y_pred))
>>>              precision    recall  f1-score   support

       False       0.99      0.96      0.98       147
        True       0.67      0.92      0.77        13

    accuracy                           0.96       160
   macro avg       0.83      0.94      0.87       160
weighted avg       0.97      0.96      0.96       160
지표베이스라인전처리 후
Accuracy95%95.6%
Recall0.620.92

확연하게 성능이 향상되었다.

profile
재미있게 살고 싶은 대학원생

0개의 댓글