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

dkqehs님의 프로필 이미지
dkqehs

작성한 질문수

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

예시문제 작업형2(신 버전)

코드 작성을 이렇게 해도 될까요?

해결된 질문

작성

·

39

0

import pandas as pd

train = pd.read_csv("data/customer_train.csv")

test = pd.read_csv("data/customer_test.csv")

pd.set_option('display.max_columns', None)

# print(train.shape, test.shape)

# print(train.head())

# print(test.head())

# print(train.info())

# print(train.isnull().sum())

# print(test.isnull().sum())

train['환불금액'] = train['환불금액'].fillna(0)

test['환불금액'] = test['환불금액'].fillna(0)

cols = ['회원ID', '총구매액', '최대구매액','환불금액','방문일수','방문당구매건수','주말방문비율','구매주기']

# print(train.isnull().sum())

# print(test.isnull().sum())

target = train.pop('성별')

# print(train.shape, test.shape)

train = pd.get_dummies(train)

test = pd.get_dummies(test)

# print(train.shape, test.shape)

from sklearn.model_selection import train_test_split

X_tr, X_val, y_tr, y_val = train_test_split(train[cols],target, test_size = 0.2, random_state = 2022)

print(X_tr.shape, X_val.shape, y_tr.shape, y_val.shape)

from sklearn.ensemble import RandomForestClassifier

rf = RandomForestClassifier(random_state = 2022)

rf.fit(X_tr[cols], y_tr)

pred = rf.predict_proba(X_val[cols])

# print(pred)

from sklearn.metrics import roc_auc_score

print(roc_auc_score(y_val,pred[:,1]))

pred = rf.predict_proba(test[cols])

submit = pd.DataFrame({'pred' : pred[:,1]})

submit.to_csv('result.csv', index=False)

print(pd.read_csv('result.csv'))

 

그리고 코랩에서 연습할 때는 submit.to_csv('result.csv', index=False) 해당 코드를 작성하면, 파일 칸에 생기는 것을 확인했었는데, 여기서는 따로 생성이 안되고 그냥 제출하기만 하면 될까요?

화면 캡처 2024-11-27 162823.png.webp

 

답변 2

0

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

시험환경이 접속이 안되어 제대로 확인이 불가한데

혹시 일부 컬럼을 제외 시켰을까요?

범주형 컬럼은 함께 사용해주세요!

 

만약 에러로 어쩔 수 없는 상황이라면 이렇게 하는 것 좋습니다만 가능하면 강의영상을 보고 인코딩 처리 연습해 주세요

네 탭에 생기진 않습니다. print(pd.read_csv('result.csv')) 로 확인하면 됩니다.

dkqehs님의 프로필 이미지
dkqehs
질문자

범주형 컬럼은 꼭 같이 사용을 해야할까요??(제가 잘 몰라서요ㅜㅜ) 수치형 컬럼을 cols로 묶지 않고 그냥 진행을 해보니 에러 메세지가 떠서, 수치형 컬럼만 묶어서 진행했습니다. 그렇게 했을 때 0.629라는 평가 지표가 나왔고, 범주형 컬럼을 함께 사용하라고 하셔서 레이블 인코딩을 진행 후 평가해보니 0.627이 나왔습니다.

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

데이터가 공개된 것이 아니라 결론을 내릴 수는 없지만

심사위원입장에서

수치형 변수만 사용해서 40점을 받기 불가능하게 설정할 것 같아요!

  • 꿀팁 섹션 - 작업형2 한 가지 방법으로 풀기 로 우선 학습해 주시고

최악의 상황에는 수치형만 사용해 주세요

응원합니다!!

0

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

적어주신 코드는 데이터를 불러와 전처리한 후, train/test로 나누어 랜덤 포레스트 모델로 학습한 후 결과를 제출하는 코드로 보입니다. 코드 구조상 크게 문제가 없어 보이며, 특히 RandomForestClassifier를 통해 데이터 분류 예측을 수행하는 점에서 적절하게 작업하신 것 같습니다.

코드 관련 팁:
1. pd.get_dummies()는 범주형 변수를 One-hot 인코딩하는데 사용됩니다. 이 경우 가끔 train/test의 열 개수가 불일치할 수 있으니 나중에 활용시 주의가 필요합니다.
2. cols에 포함된 열들이 모두 데이터에 포함되어야 하며, 그렇지 않으면 오류가 발생할 수 있습니다.

질문에 대한 답변:
코랩에서 [submit.to_csv('result.csv', index=False)] 후 파일이 생성되었다면, 로컬 환경에서도 동일하게 CSV 파일이 생성될 것입니다. 이를 제출 시, 생성된 파일을 제출하여 평가됩니다.

이미지에서 파일 목록이 보이듯이, 이 과정은 정상적인 CSV 파일 생성을 지원합니다.

관련 질문과 비슷한 내용은 아래 링크를 참고해 보실 수 있습니다:

  1. “예시문제 작업형2 신버전”
  2. ”(체험 제2유형)”

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

dkqehs님의 프로필 이미지
dkqehs

작성한 질문수

질문하기