인프런 커뮤니티 질문&답변

yanicong님의 프로필 이미지

작성한 질문수

[퇴근후딴짓] 빅데이터 분석기사 실기 (작업형1,2,3)

2유형 베이스라인 코드 질문

해결된 질문

24.06.11 00:09 작성

·

112

·

수정됨

0

2유형 풀때마다 조금씩 헷갈려서 저만의 베이스라인을 잡고가려는데

아래와 같이 틀을 잡아도 괜찮을까요?

# 데이터 불러오기
import pandas as pd

X_test = pd.read_csv('X_test')
X_train = pd.read_csv('X_train')
y_train = pd.read_csv('y_train')

# EDA실시, 제출용 아이디 값 분리, 데이터 전처리(예: 라벨인코더)

X_train = X_train.drop('ID', axis = 1)
X_test_id = X_test.pop('ID')

from sklearn.preprocessing import LabelEncoder

cols = X_train.select_dtypes(include = 'object').columns
for col in cols:
    le = LabelEncoder()
    X_train[col] = le.fit_transform(X_train[col])
    X_test[col] = le.transform(X_test[col])

# 검증 데이터 분리
from sklearn.model_selection import train_test_split

X_tr, X_val, y_tr, y_val = train_test_split(X_train, y_train['변수'], test_size = 0.2, random_state = 2022) # 분류일때는 stratify=y 설정추가

# 랜덤 포레스트
from sklearn.ensenble import RandomForestClassifier # 회귀문제시에는 Regressor
from sklearn.metrics import 평가지표 # 시험에서 요구하는 평가지표

model = RandomForestClassifier()
model.fit(X_tr,y_tr)
pred = model.predict_proba(X_val) # model.predict일수도 있음
print(평가지표(y_val, pred[:,1])) # 0,1중 시험에서 요구하는 값

#예측
pred = model.predict_proba(X_test) # model.predict일수도 있음
print(pred)

# 데이터 프레임 만들기, 제출
result = pd.DataFrame({'ID': X_test_id, '변수': pred[:,1]})
result.to_csv('수험번호.csv', index = False)

또한 모델학습시에 predict_proba와 predict을 어떻게 구분하여 사용하는지 아직 헷갈리는데 설명해주시면 감사하겠습니다!

답변 2

0

퇴근후딴짓님의 프로필 이미지
퇴근후딴짓
지식공유자

2024. 06. 11. 09:54

네, 큰문제 없어보입니다. 데이터가 2개 주어졌을 때를 기준으로 베이스라인 준비해 주세요! 3개보다 2개(train, test_로 제공될 가능성이 커요

predict_probapredict의 차이

  • predict_proba: 각 클래스에 속할 확률을 반환합니다. 예를 들어, 이진 분류 문제에서 [0.7, 0.3]는 첫 번째 클래스에 속할 확률이 70%, 두 번째 클래스에 속할 확률이 30%임을 의미합니다. 주로 ROC AUC 점수와 같은 확률 기반 평가 지표를 계산할 때 사용합니다. pred[:,1] 은 두번째 클래스(1)에 속할 확률입니다.

  • predict: 최종 클래스 레이블을 반환합니다. 0 또는 1과 같이 클래스를 반환해요! 분류에서는 roc-auc를 제외하고 대부분이 predict를 사욥합니다.

 

0

인프런 AI 인턴님의 프로필 이미지

2024. 06. 11. 00:11

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

yanicong님의 질문은 2유형 문제를 풀기 위한 베이스라인 코드 구조에 관한 것으로 보입니다. 이러한 유형의 문제에 대해서는 일반적인 절차 및 코드 구조 제안에 관련된 기존 답변이 참고가 될 수 있습니다.

예시로, 과거에 제시된 “작업형 2 질문있습니다.”라는 질문에 대한 답변은 작업형 2 문제에 접근하는 방법, 데이터 전처리, 모델 구축, 예측 및 평가에 대한 기본적인 개념을 설명하고 있습니다. 특히, 데이터의 전처리(예: 사용된 인코딩 방식), 랜덤 포레스트 모델의 사용, 예측 과정, 그리고 결과 제출에 대한 개념을 포함하고 있습니다.

질문하신 코드의 구조와 동일하지는 않지만, 제안된 코드 구조를 사용하는 것은 데이터 과학 프로젝트에서 일반적인 접근 방식 중 하나입니다. 다만, 다음 몇 가지 사항을 유의해 보실 것을 권장합니다:

  • 데이터 전처리: 제출 전 ID 값 분리와 범주형 변수에 대한 라벨 인코딩 처리가 잘 진행되었는지 확인하세요.
  • 모델 평가: 실제 시험에서 요구하는 평가지표(예: 정확도, ROC-AUC 등)에 맞춰 적절한 평가 함수를 사용하는지 확인하세요.
  • 최종 제출 형식: 최종 예측값을 제출할 때 예측 과제(분류, 회귀)에 따라 predict_proba 또는 predict 중 적절한 함수를 사용하는지 확인하세요.

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

yanicong님의 프로필 이미지

작성한 질문수

질문하기