강의

멘토링

커뮤니티

Cộng đồng Hỏi & Đáp của Inflearn

Hình ảnh hồ sơ của moter2588
moter2588

câu hỏi đã được viết

Kỳ thi thực hành kỹ thuật viên phân tích dữ liệu lớn (Python)

질문입니다 RandomForestClassifier

Viết

·

164

0

RandomForestClassifier만 적용하여 앙상블 학습하였을때

 

ROC_AUC_SCORE가 1.0이 나오는데,, 연습문제 동영상과 같이 0.84.... 가 나오지 않고 1.0이 나오는 이유가 뭘까요 혹시 과적합이라면 오답이라고 할 수 있을까요?

 

전체 소스 공유합니다.

import seaborn as sns
import pandas as pd
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import MinMaxScaler
from sklearn.ensemble import RandomForestClassifier

df = sns.load_dataset('titanic')

# 결측치 제거
df['age'] = df['age'].fillna(df.age.mean())
df['deck'] = df.deck.fillna(method='bfill')
df['deck'] = df.deck.fillna(method='ffill')
df['embarked'] = df.embarked.fillna('S')
df['embark_town'] = df.embark_town.fillna('Southampton')

df.isna().sum()

from sklearn.preprocessing import LabelEncoder
obj = ['sex', 'embarked', 'class', 'who', 'adult_male', 'deck', 'embark_town', 'alone']

encoder = LabelEncoder()

for i in obj:
  df[i] = encoder.fit_transform(df[i])

category = ['pclass', 'sex', 'class', 'who', 'adult_male', 'alone']

for i in category:
  df[i] = df[i].astype('category')

df = pd.get_dummies(df)

scaler = MinMaxScaler()
lst = ['age', 'fare']
scaler.fit(df[lst])
df[lst] = scaler.fit_transform(df[lst])

y = df['survived']

X_train, X_test, y_train, y_test = train_test_split(df, y, test_size=0.3, stratify=y, random_state=23)

ml = RandomForestClassifier()

ml.fit(X_train, y_train)
pred = pd.DataFrame(ml.predict_proba(X_test))

from sklearn.metrics import accuracy_score, roc_auc_score

print(roc_auc_score(y_test, pred.iloc[:, 1]))
python빅데이터

Câu trả lời 1

0

안녕하세요, 인프런 AI 인턴입니다.

님의 질문에 대한 답변입니다. RandomForestClassifier를 사용하여 앙상블 학습을 했을 때 ROC_AUC_SCORE가 1.0이 나오는 것은 매우 높은 성능을 의미합니다. 하지만, 이 경우 모델이 훈련 데이터에 과적합되었을 가능성을 고려해볼 수 있습니다. 과적합은 모델이 훈련 데이터에 너무 잘 맞게 학습되어 실제 상황이나 새로운 데이터에는 잘 일반화되지 않는 상태를 말합니다.

ROC_AUC_SCORE가 1.0이라고 바로 오답이라고 할 수는 없습니다. 단, 실제 환경에서는 이러한 완벽한 성능을 기대하기 어렵기 때문에 모델의 과적합 여부를 추가적으로 분석해 볼 필요가 있습니다. 예를 들어, 다른 검증 방법을 사용해 보거나, 교차 검증을 진행하여 모델의 일반화 성능을 평가해 볼 수 있습니다.

과적합을 줄이기 위한 몇 가지 방법은 다음과 같습니다.
- 데이터의 양을 늘리기
- 모델의 복잡도를 줄이기
- 정규화 기법 사용하기
- 피처의 수를 줄이기
- 앙상블 학습의 파라미터 조정하기(예: max_depth, min_samples_split 등)

프로젝트의 목적과 데이터에 맞는 최적의 모델 성능을 찾기 위해 여러 실험을 해보시길 권장합니다.

Hình ảnh hồ sơ của moter2588
moter2588

câu hỏi đã được viết

Đặt câu hỏi