자격증/빅데이터분석기사

[빅분기] 제 2유형 연습

K_Hyul 2024. 7. 4. 09:37
728x90

제 2유형은 모델을 직접 train하고 결과를 제출해야한다.

타이타닉으로 연습했고 필요로 할 때 수정할 수 있게 했다.

RandomForest 같은 경우 Onehotencoding을 하지 않아도 성능이 나오기 때문에 모델은 RandomForest로 했고

Encoding 같은 경우 Onehot을 할 필요가 없으니 LabelEncoder를 사용했다.

 

 

Classifier가 나오면 RandomForestClassifier

regressor가 나오면 RandomForestRegressor로 바꿀 전략을 취했고

 

import sklearn

help(sklearn)을 활용했다.

import pandas as pd
import numpy as np
import seaborn as sns

from sklearn.ensemble import RandomForestClassifier
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import LabelEncoder, MinMaxScaler, StandardScaler
from sklearn.metrics import accuracy_score, f1_score, mean_squared_error

# 데이터 불러오기
df = sns.load_dataset('titanic')

# null값 제거
df['age'].fillna(df['age'].mean(),inplace=True)
df['embarked'].fillna(df['embarked'].mode()[0], inplace=True)

df.drop(columns=['alive', 'embark_town','alone'], inplace=True)

# encoding
encoder = LabelEncoder()
df_cat = df.select_dtypes(exclude=np.number)
for col in df_cat.columns:
    df_cat[col] = encoder.fit_transform(df_cat[col])
df[df_cat.columns] = df_cat


# train, test data 분리
train, valid = train_test_split(df, random_state=42, test_size=0.3)

train_y = train['survived']
train_x = train.copy()
train_x.drop(columns=['survived'], inplace=True)

valid_y = valid['survived']
valid_x = valid.copy()
valid_x.drop(columns=['survived'], inplace=True)


# model 학습 및 예측
model = RandomForestClassifier(random_state=42)

model.fit(train_x, train_y)
pred = model.predict(valid_x)
print("정확도 : ", accuracy_score(pred,valid_y))

pred = pd.DataFrame(pred, columns=['survived'])
728x90

'자격증 > 빅데이터분석기사' 카테고리의 다른 글

[빅분기] 제 3유형 연습  (0) 2024.07.04
[빅분기] 제 1유형 연습  (0) 2024.07.04
(pandas) file 다루기  (0) 2023.12.27
(pandas) csv 파일 불러오기  (1) 2023.12.27